Wed, 24 Jul 2013 08:20:22 +0200 [datafeed] add a timeout config option (closes #2745677) stable
David Douard <david.douard@logilab.fr> [Wed, 24 Jul 2013 08:20:22 +0200] rev 9182
[datafeed] add a timeout config option (closes #2745677) So a HTTP GET do not hang forever in the datafeed looping task.
Wed, 24 Jul 2013 11:54:35 +0200 [dataimport] ucsvreader should skip empty lines unless specified otherwise. Closes #3035944 stable
Sylvain Thénault <sylvain.thenault@logilab.fr> [Wed, 24 Jul 2013 11:54:35 +0200] rev 9181
[dataimport] ucsvreader should skip empty lines unless specified otherwise. Closes #3035944
Mon, 22 Jul 2013 12:08:37 +0200 [querier] Add timings to debug prints (DBG_RQL) stable
Denis Laxalde <denis.laxalde@logilab.fr> [Mon, 22 Jul 2013 12:08:37 +0200] rev 9180
[querier] Add timings to debug prints (DBG_RQL) this may ease to spot some problematic queries
Wed, 24 Jul 2013 08:43:16 +0200 [editcontrollers] Ensure entities are created in an order satisfying schema constraints. Closes #3031719 stable
Sylvain Thénault <sylvain.thenault@logilab.fr> [Wed, 24 Jul 2013 08:43:16 +0200] rev 9179
[editcontrollers] Ensure entities are created in an order satisfying schema constraints. Closes #3031719 changes below are also necessary to make the whole thing works: * stop considering InlinedFormFile as eidparam field since they don't hold any value * rework 'pendingfields' handling to have separate processing of inlined fields whose subject entity is created during the edition
Mon, 22 Jul 2013 12:07:46 +0200 [editcontroller] extract RQLQuery.set_attribute/set_inlined methods from handle_field/handle_inlined_relation stable
Sylvain Thénault <sylvain.thenault@logilab.fr> [Mon, 22 Jul 2013 12:07:46 +0200] rev 9178
[editcontroller] extract RQLQuery.set_attribute/set_inlined methods from handle_field/handle_inlined_relation
Mon, 22 Jul 2013 11:38:48 +0200 [editcontroller] req=self._cw makes things easier to read stable
Sylvain Thénault <sylvain.thenault@logilab.fr> [Mon, 22 Jul 2013 11:38:48 +0200] rev 9177
[editcontroller] req=self._cw makes things easier to read
Mon, 22 Jul 2013 15:38:11 +0200 [facets,js] fix bogus checkbox icon appearing after the first interaction (closes #2790332) stable
David Douard <david.douard@logilab.fr> [Mon, 22 Jul 2013 15:38:11 +0200] rev 9176
[facets,js] fix bogus checkbox icon appearing after the first interaction (closes #2790332) This is because of the hardcoding of the data/ url.
Mon, 22 Jul 2013 14:57:37 +0200 fix typos in docstring, doc and comments stable
Julien Cristau <julien.cristau@logilab.fr> [Mon, 22 Jul 2013 14:57:37 +0200] rev 9175
fix typos in docstring, doc and comments
Wed, 17 Jul 2013 15:02:28 +0200 [debian] remove workaround for broken sphinx/jquery combination stable
Julien Cristau <julien.cristau@logilab.fr> [Wed, 17 Jul 2013 15:02:28 +0200] rev 9174
[debian] remove workaround for broken sphinx/jquery combination sphinx in squeeze was updated: http://packages.qa.debian.org/s/sphinx/news/20130112T154737Z.html
Thu, 18 Jul 2013 22:18:50 +0200 [schema] mark CWDataImport as an internal type. Closes #3025536 stable
Sylvain Thénault <sylvain.thenault@logilab.fr> [Thu, 18 Jul 2013 22:18:50 +0200] rev 9173
[schema] mark CWDataImport as an internal type. Closes #3025536
Fri, 19 Jul 2013 15:52:06 +0200 [pkg] remove deprecated dependency on pysqlite2 stable
Paul Tonelli <paul.tonelli@logilab.fr> [Fri, 19 Jul 2013 15:52:06 +0200] rev 9172
[pkg] remove deprecated dependency on pysqlite2
Thu, 18 Jul 2013 12:36:56 +0200 Fix two crashes in db-check (closes #3024964) stable
Denis Laxalde <denis.laxalde@logilab.fr> [Thu, 18 Jul 2013 12:36:56 +0200] rev 9171
Fix two crashes in db-check (closes #3024964) Also improves various debugging messages.
Mon, 22 Jul 2013 11:09:28 +0200 [rql rewrite] may_be_shared_with should consider relation's scope (closes #3024730) stable
Sylvain Thénault <sylvain.thenault@logilab.fr> [Mon, 22 Jul 2013 11:09:28 +0200] rev 9170
[rql rewrite] may_be_shared_with should consider relation's scope (closes #3024730) When a relation's scope is not the current statement, it must not be shared (instead of comparing the statement).
Thu, 18 Jul 2013 10:19:06 +0200 [rql rewrite] fix may_be_shared_with method so that it actually considers all variable infos and not only the first one stable
Sylvain Thénault <sylvain.thenault@logilab.fr> [Thu, 18 Jul 2013 10:19:06 +0200] rev 9169
[rql rewrite] fix may_be_shared_with method so that it actually considers all variable infos and not only the first one
Mon, 22 Jul 2013 14:26:33 +0200 [schema/security] add __hash__ to rql expression. Closes #3013535 stable
Sylvain Thénault <sylvain.thenault@logilab.fr> [Mon, 22 Jul 2013 14:26:33 +0200] rev 9168
[schema/security] add __hash__ to rql expression. Closes #3013535 This is required so that when some rql expression participate to a dictionary key, only the expression is considered (consistent with comparison). This behaviour is expected in security at least, see the related bug for instance. This scramble msplanner unit tests a bit.
Mon, 15 Jul 2013 10:59:34 +0200 [rql rewrite] move some code from querier to rqlrewrite where it makes more sense. stable
Sylvain Thénault <sylvain.thenault@logilab.fr> [Mon, 15 Jul 2013 10:59:34 +0200] rev 9167
[rql rewrite] move some code from querier to rqlrewrite where it makes more sense. Also, make some minor cleanup/refactoring on the way and try to enhance docstrings. Relates to #3013535
Fri, 12 Jul 2013 10:39:01 +0200 Do not compute actions list in TableLayout view when display_actions attribute is unset stable
Denis Laxalde <denis.laxalde@logilab.fr> [Fri, 12 Jul 2013 10:39:01 +0200] rev 9166
Do not compute actions list in TableLayout view when display_actions attribute is unset Closes #3007281
Fri, 12 Jul 2013 09:55:26 +0200 Use the list of cubes from the filesystem when reading the schema from the filesystem stable
Denis Laxalde <denis.laxalde@logilab.fr> [Fri, 12 Jul 2013 09:55:26 +0200] rev 9165
Use the list of cubes from the filesystem when reading the schema from the filesystem Closes #3007259
Mon, 22 Jul 2013 10:55:45 +0200 [migration] when adding a cube, skip infered relations (closes #3005576) stable
Sylvain Thénault <sylvain.thenault@logilab.fr> [Mon, 22 Jul 2013 10:55:45 +0200] rev 9164
[migration] when adding a cube, skip infered relations (closes #3005576) Skipped infered relations are recalculated later.
Thu, 11 Jul 2013 17:40:28 +0200 [3.17 migration] when some cube is missing, add_cube raise ConfigurationError, not ImportError. Closes #2981477 stable
Sylvain Thénault <sylvain.thenault@logilab.fr> [Thu, 11 Jul 2013 17:40:28 +0200] rev 9163
[3.17 migration] when some cube is missing, add_cube raise ConfigurationError, not ImportError. Closes #2981477
Thu, 11 Jul 2013 10:20:42 +0200 [migraction] rename_entity_type simply warn if old entity type isn't in the schema. Closes #3004069 stable
Sylvain Thénault <sylvain.thenault@logilab.fr> [Thu, 11 Jul 2013 10:20:42 +0200] rev 9162
[migraction] rename_entity_type simply warn if old entity type isn't in the schema. Closes #3004069
Thu, 11 Jul 2013 10:15:25 +0200 [deprecation] fix uihelper deprecation warning, use the rtag name, not the class, so it may be copy/pasted stable
Sylvain Thénault <sylvain.thenault@logilab.fr> [Thu, 11 Jul 2013 10:15:25 +0200] rev 9161
[deprecation] fix uihelper deprecation warning, use the rtag name, not the class, so it may be copy/pasted
Thu, 11 Jul 2013 18:43:29 +0200 [test] makes fti test order-agnostic (closes #3005633) stable
Aurelien Campeas <aurelien.campeas@logilab.fr> [Thu, 11 Jul 2013 18:43:29 +0200] rev 9160
[test] makes fti test order-agnostic (closes #3005633)
Thu, 11 Jul 2013 17:16:49 +0200 [web/views/staticcontrollers] Make ConcatFilesHandler write to a tempfile stable
Julien Cristau <julien.cristau@logilab.fr> [Thu, 11 Jul 2013 17:16:49 +0200] rev 9159
[web/views/staticcontrollers] Make ConcatFilesHandler write to a tempfile In order to be more resistant to errors such as ENOSPC, and against different threads accessing the same static data, we: - concatenate data files to a temporary file, and rename it once we're done - delete the tempfile in case of errors - protect the creation of the cache_concat file with a lock Closes #3005547
Fri, 12 Jul 2013 18:03:11 +0200 [test] make unittest_schema.py compatible with cubicweb-file 0.14 stable
David Douard <david.douard@logilab.fr> [Fri, 12 Jul 2013 18:03:11 +0200] rev 9158
[test] make unittest_schema.py compatible with cubicweb-file 0.14
Mon, 22 Jul 2013 09:47:56 +0200 merge 3.16.6 branch in 3.17 stable
David Douard <david.douard@logilab.fr> [Mon, 22 Jul 2013 09:47:56 +0200] rev 9157
merge 3.16.6 branch in 3.17
Mon, 15 Jul 2013 17:34:54 +0200 Added tag cubicweb-centos-version-3.16.6-1, cubicweb-debian-version-3.16.6-1, cubicweb-version-3.16.6 for changeset b4ccaf13081d stable
Florent Cayre <florent.cayre@logilab.fr> [Mon, 15 Jul 2013 17:34:54 +0200] rev 9156
Added tag cubicweb-centos-version-3.16.6-1, cubicweb-debian-version-3.16.6-1, cubicweb-version-3.16.6 for changeset b4ccaf13081d
Sat, 13 Jul 2013 05:10:55 +0200 Prepare 3.16.6 stable cubicweb-centos-version-3.16.6-1 cubicweb-debian-version-3.16.6-1 cubicweb-version-3.16.6
Florent Cayre <florent.cayre@logilab.fr> [Sat, 13 Jul 2013 05:10:55 +0200] rev 9155
Prepare 3.16.6
Mon, 15 Jul 2013 16:55:13 +0200 [devctl] properly generate i18n messsages for cubes that uses uicfg instances (closes #2811282) stable
David Douard <david.douard@logilab.fr> [Mon, 15 Jul 2013 16:55:13 +0200] rev 9154
[devctl] properly generate i18n messsages for cubes that uses uicfg instances (closes #2811282)
Mon, 15 Jul 2013 16:55:03 +0200 [test/devctl] add a test case for i18ncube command stable
David Douard <david.douard@logilab.fr> [Mon, 15 Jul 2013 16:55:03 +0200] rev 9153
[test/devctl] add a test case for i18ncube command
Mon, 15 Jul 2013 10:40:49 +0200 Protect against crash in the `relation_possible` predicate with ambiguous relations. stable
Florent Cayre <florent.cayre@logilab.fr> [Mon, 15 Jul 2013 10:40:49 +0200] rev 9152
Protect against crash in the `relation_possible` predicate with ambiguous relations. It was still possible to get a KeyError when using relations that are ambiguous at both ends, like (Executable, version_of, Program) & (Version, version_of, Project). Closes #3010148.
Wed, 10 Jul 2013 15:03:50 +0200 [test] give a non-ambiguous order to sync_schema assertion (closes #3001959) stable
Aurelien Campeas <aurelien.campeas@logilab.fr> [Wed, 10 Jul 2013 15:03:50 +0200] rev 9151
[test] give a non-ambiguous order to sync_schema assertion (closes #3001959) Sorting by ordernum alone is unstable since several values have the same ordernum. ordernum + name should be stable.
Tue, 09 Jul 2013 17:33:43 +0200 Added tag cubicweb-version-3.17.3, cubicweb-debian-version-3.17.3-1, cubicweb-centos-version-3.17.3-1 for changeset 32b4d5314fd9 stable
David Douard <david.douard@logilab.fr> [Tue, 09 Jul 2013 17:33:43 +0200] rev 9150
Added tag cubicweb-version-3.17.3, cubicweb-debian-version-3.17.3-1, cubicweb-centos-version-3.17.3-1 for changeset 32b4d5314fd9
Thu, 04 Jul 2013 09:26:59 +0200 [test] typo
Dimitri Papadopoulos <dimitri.papadopoulos@cea.fr> [Thu, 04 Jul 2013 09:26:59 +0200] rev 9149
[test] typo
Tue, 25 Jun 2013 12:11:42 +0200 [schema,server] add a security debugging aid (closes #2920304)
Aurelien Campeas <aurelien.campeas@logilab.fr> [Tue, 25 Jun 2013 12:11:42 +0200] rev 9148
[schema,server] add a security debugging aid (closes #2920304) - Add a DGB_SEC debugging flag (to be used with set_debug/debugged). - Add a context manager (tunesecurity) to filter security assertions. Note: this does not address all read-security mecanisms.
Mon, 24 Jun 2013 19:00:40 +0200 [etwist] fix handling of multiple files per field
Aurelien Campeas <aurelien.campeas@logilab.fr> [Mon, 24 Jun 2013 19:00:40 +0200] rev 9147
[etwist] fix handling of multiple files per field html5 permits multiple files uploads, which can be expressed as:: <input type='file' multiple='multiple' /> This changeset avoids previous crash. Nothing is changed when a single file is uploaded (backward compat is thus preserved). When multiple files are uploaded for a single html input tag, the corresponding web request form key receives a list of tuples like [('filename-1', IStream1), ('filename-2', IStream2), ...]. closes #2847207.
Tue, 09 Jul 2013 15:58:26 +0200 [merge] start 3.18 development
David Douard <david.douard@logilab.fr> [Tue, 09 Jul 2013 15:58:26 +0200] rev 9146
[merge] start 3.18 development
Tue, 09 Jul 2013 15:11:23 +0200 [pkg] prepare 3.17.3 stable cubicweb-centos-version-3.17.3-1 cubicweb-debian-version-3.17.3-1 cubicweb-version-3.17.3
David Douard <david.douard@logilab.fr> [Tue, 09 Jul 2013 15:11:23 +0200] rev 9145
[pkg] prepare 3.17.3
Mon, 08 Jul 2013 20:48:54 +0200 [pkg] Remove obsolete ubuntu hardy packaging stable
Julien Cristau <julien.cristau@logilab.fr> [Mon, 08 Jul 2013 20:48:54 +0200] rev 9144
[pkg] Remove obsolete ubuntu hardy packaging It's been EOL for a while.
Mon, 08 Jul 2013 15:24:43 +0200 [book] fix sphinx documentation generation (closes #2991997) stable
Julien Cristau <julien.cristau@logilab.fr> [Mon, 08 Jul 2013 15:24:43 +0200] rev 9143
[book] fix sphinx documentation generation (closes #2991997) changeset 17994bf95d6a ([doc] update Session documentation) added cubicweb.server.session.Session autodoc to the book. This caused errors from sphinx due to a section title not being allowed in the class's docstring.
Mon, 08 Jul 2013 12:41:08 +0200 [test/ldap] fix ldap tests stable
David Douard <david.douard@logilab.fr> [Mon, 08 Jul 2013 12:41:08 +0200] rev 9142
[test/ldap] fix ldap tests - make sure the url is properly updated on database setup (when the test database already exists and the ldap URI has changed) - fix the ldapuser test setup process.
Fri, 05 Jul 2013 10:40:57 +0200 [test] fix unittest_schemaserial.py stable
David Douard <david.douard@logilab.fr> [Fri, 05 Jul 2013 10:40:57 +0200] rev 9141
[test] fix unittest_schemaserial.py A spurious add permission has been added in expected result by d988eec2d5d3
Fri, 05 Jul 2013 10:35:14 +0200 [test] make unittest_schemaserial.py runnable with python stable
David Douard <david.douard@logilab.fr> [Fri, 05 Jul 2013 10:35:14 +0200] rev 9140
[test] make unittest_schemaserial.py runnable with python used to run fine only when launched using pytest
Mon, 08 Jul 2013 17:38:10 +0200 [facet] use facet name as input name for text widget (eg has_text) stable
Sylvain Thénault <sylvain.thenault@logilab.fr> [Mon, 08 Jul 2013 17:38:10 +0200] rev 9139
[facet] use facet name as input name for text widget (eg has_text) we need to ba able to distinguish between text-inputs so we can write a widget for a single facet that uses more than one text input. This fix consists in the diff in cubicweb.facts.js; modifications in facet.py result from this former.
Tue, 02 Jul 2013 09:36:20 +0200 [web doctype] don't give through reset_xmldecl to avoid double deprecation warning stable
Sylvain Thénault <sylvain.thenault@logilab.fr> [Tue, 02 Jul 2013 09:36:20 +0200] rev 9138
[web doctype] don't give through reset_xmldecl to avoid double deprecation warning
Tue, 02 Jul 2013 09:35:58 +0200 [web doctype test] don't give reset_xmldecl to avoid deprecation warning stable
Sylvain Thénault <sylvain.thenault@logilab.fr> [Tue, 02 Jul 2013 09:35:58 +0200] rev 9137
[web doctype test] don't give reset_xmldecl to avoid deprecation warning
Wed, 03 Jul 2013 14:52:10 +0200 [devtool] randomise available ports search in http test stable
Pierre-Yves David <pierre-yves.david@logilab.fr> [Wed, 03 Jul 2013 14:52:10 +0200] rev 9136
[devtool] randomise available ports search in http test This lowers the chance of parallel tests to race for the same port.
Wed, 03 Jul 2013 14:48:34 +0200 [facet] don't crash if no title specified on a facet and filtered rset is empty. Closes #2587883 stable
Katia Saurfelt <katia.saurfelt@logilab.fr> [Wed, 03 Jul 2013 14:48:34 +0200] rev 9135
[facet] don't crash if no title specified on a facet and filtered rset is empty. Closes #2587883
Wed, 03 Jul 2013 14:43:21 +0200 [css, html] add a css_class attribute on Button, allowing to change easily default CSS class for buttons stable
Katia Saurfelt <katia.saurfelt@logilab.fr> [Wed, 03 Jul 2013 14:43:21 +0200] rev 9134
[css, html] add a css_class attribute on Button, allowing to change easily default CSS class for buttons (think orbui integration)
Wed, 27 Jun 2012 11:53:46 +0200 [view] add 2 missing spaces before the previous link stable
Katia Saurfelt <katia.saurfelt@logilab.fr> [Wed, 27 Jun 2012 11:53:46 +0200] rev 9133
[view] add 2 missing spaces before the previous link
Wed, 26 Jun 2013 09:35:54 +0200 [server/repository] Go through the repo to close pyro sessions stable
Julien Cristau <julien.cristau@logilab.fr> [Wed, 26 Jun 2013 09:35:54 +0200] rev 9132
[server/repository] Go through the repo to close pyro sessions Turns out session.close() doesn't DTRT.
Fri, 31 May 2013 11:13:06 +0200 fix migration from pre-3.13.1 versions (closes #2846978) stable
Julien Cristau <julien.cristau@logilab.fr> [Fri, 31 May 2013 11:13:06 +0200] rev 9131
fix migration from pre-3.13.1 versions (closes #2846978) Need to check the existence of the asource column before the first call to eid_type_source.
Wed, 03 Jul 2013 14:33:27 +0200 [constraint] more robust unicity constraint failures reporting for end-users stable
Aurelien Campeas <aurelien.campeas@logilab.fr> [Wed, 03 Jul 2013 14:33:27 +0200] rev 9130
[constraint] more robust unicity constraint failures reporting for end-users Postgres or Sqlserver have limits on the index names (around resp. 64 and 128 characters). Because `logilab.database` encodes the `unique together` constraint rtypes in the index names, we sometimes get truncated index names, from which it is impossible to retrieve all rtypes. In the long run, the way such index are named should be changed. In the short term, we try to reduce the end-user confusion resulting from this design flaw: * in source/native, the regex filtering ``IntegrityError`` message does not impose an `_idx` suffix, which indeed may be absent (the result being an UI message that resembles a catastrophic failure), * also we avoid including a trailing " (double quote) from the error message * in entities/adapters, the well-named ``IUserFriendly`` adapter is made a bit smarter about how to handle missing rtypes. * the adapter also always produces a global message explaining the issue (and the fact that sometimes, the user is not shown all the relevant info) * i18n is updated Closes #2793789
Wed, 03 Jul 2013 14:16:21 +0200 [hooks/security] Streamline attributes default permission check. stable
Aurelien Campeas <aurelien.campeas@logilab.fr> [Wed, 03 Jul 2013 14:16:21 +0200] rev 9129
[hooks/security] Streamline attributes default permission check. The current default permission on attributes delegates the check to the entity permission update policy. Since this is already checked it can be skipped. The equality comparison will work, even with a deserialized schema, because the default update perm is:: ('managers', ERQLExpression(Any X WHERE U has_update_permission X, X eid %(x)s, U eid %(u)s)) which will always be deserialized in this order (groups first). However this is a slight semantic change: entity type level 'update' permissions can now be effectively used to encode update-time rules if the default attribute permissions are used (before this change, the 'update' rules at entity type level were fired at creation time). Closes #2930861.
Wed, 26 Jun 2013 14:22:22 +0200 [test/schemaserial] swap got/expected to get nicer unittest2 diagnostics stable
Aurelien Campeas <aurelien.campeas@logilab.fr> [Wed, 26 Jun 2013 14:22:22 +0200] rev 9128
[test/schemaserial] swap got/expected to get nicer unittest2 diagnostics Prepares #2965518.
Tue, 02 Jul 2013 17:09:04 +0200 [repository] drop safe attribute on ``internal_cnx``
Pierre-Yves David <pierre-yves.david@logilab.fr> [Tue, 02 Jul 2013 17:09:04 +0200] rev 9127
[repository] drop safe attribute on ``internal_cnx`` People that need to disable hook can do it explicitly anyway.
Thu, 27 Jun 2013 19:18:54 +0200 [dbapi] deprecated the dbapi
Pierre-Yves David <pierre-yves.david@logilab.fr> [Thu, 27 Jun 2013 19:18:54 +0200] rev 9126
[dbapi] deprecated the dbapi
Thu, 27 Jun 2013 19:26:14 +0200 [repoapi] deprecate dbapi compat method
Pierre-Yves David <pierre-yves.david@logilab.fr> [Thu, 27 Jun 2013 19:26:14 +0200] rev 9125
[repoapi] deprecate dbapi compat method
Thu, 27 Jun 2013 19:14:22 +0200 [testlib] deprecated the older api to access the repo.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Thu, 27 Jun 2013 19:14:22 +0200] rev 9124
[testlib] deprecated the older api to access the repo.
Thu, 27 Jun 2013 19:09:23 +0200 [connection] deprecated free_cnset and set_cnxset
Pierre-Yves David <pierre-yves.david@logilab.fr> [Thu, 27 Jun 2013 19:09:23 +0200] rev 9123
[connection] deprecated free_cnset and set_cnxset
Thu, 27 Jun 2013 19:02:06 +0200 [session] deprecate all Connection related method on session
Pierre-Yves David <pierre-yves.david@logilab.fr> [Thu, 27 Jun 2013 19:02:06 +0200] rev 9122
[session] deprecate all Connection related method on session
Thu, 27 Jun 2013 18:53:06 +0200 [session] drop dead _current_cnx_id
Pierre-Yves David <pierre-yves.david@logilab.fr> [Thu, 27 Jun 2013 18:53:06 +0200] rev 9121
[session] drop dead _current_cnx_id Not used anymore for a few commit.
Thu, 27 Jun 2013 18:47:08 +0200 [session] privatise get_cnx and close_cnx
Pierre-Yves David <pierre-yves.david@logilab.fr> [Thu, 27 Jun 2013 18:47:08 +0200] rev 9120
[session] privatise get_cnx and close_cnx The only user, repoapi now use ``new_cnx``
Thu, 27 Jun 2013 18:14:35 +0200 [doc] add documentation for the new API in test
Pierre-Yves David <pierre-yves.david@logilab.fr> [Thu, 27 Jun 2013 18:14:35 +0200] rev 9119
[doc] add documentation for the new API in test
Thu, 27 Jun 2013 15:28:15 +0200 [testlib] add an default testcase.adminaccess (and use it for default session)
Pierre-Yves David <pierre-yves.david@logilab.fr> [Thu, 27 Jun 2013 15:28:15 +0200] rev 9118
[testlib] add an default testcase.adminaccess (and use it for default session) This adminaccess is the new offical way to get connection, and request on a repo.
Thu, 27 Jun 2013 18:15:57 +0200 [testlib] introduce a RepoAccess class to easily create connection and request
Pierre-Yves David <pierre-yves.david@logilab.fr> [Thu, 27 Jun 2013 18:15:57 +0200] rev 9117
[testlib] introduce a RepoAccess class to easily create connection and request Each RepoAccess hold a session for a user and three helper function to help create Connection, ClientConnection of WebRequest related to this session. related to #2920299
Thu, 27 Jun 2013 15:13:47 +0200 [repoapi] make ClientConnection.__enter__ return self
Pierre-Yves David <pierre-yves.david@logilab.fr> [Thu, 27 Jun 2013 15:13:47 +0200] rev 9116
[repoapi] make ClientConnection.__enter__ return self This allow the standard idiom:: with repoapi.connect(repo, login='babar', passwork='elephant') as cnx: cnx.execute(…)
Thu, 27 Jun 2013 18:16:06 +0200 [documentation] describe repoapi and web side change.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Thu, 27 Jun 2013 18:16:06 +0200] rev 9115
[documentation] describe repoapi and web side change. Short version explaining what object replace what and that BC existes for a few version.
Thu, 27 Jun 2013 12:28:17 +0200 [testlib] use internal_cnx instead of internal_session
Pierre-Yves David <pierre-yves.david@logilab.fr> [Thu, 27 Jun 2013 12:28:17 +0200] rev 9114
[testlib] use internal_cnx instead of internal_session internal_session is deprecated.
Thu, 27 Jun 2013 14:12:00 +0200 [repository] add an ``internal_cnx`` method to replace ``internal_session``
Pierre-Yves David <pierre-yves.david@logilab.fr> [Thu, 27 Jun 2013 14:12:00 +0200] rev 9113
[repository] add an ``internal_cnx`` method to replace ``internal_session`` Accessing the repo through a Session is deprecated. We need an easy replacement for ``internal_session``. This API change was a good occasion to stop disabling integrity hook by default. This is huge source of bug in user-code. related to #2503918
Thu, 27 Jun 2013 12:02:38 +0200 [connection] enforce that a connection must be open to be used
Pierre-Yves David <pierre-yves.david@logilab.fr> [Thu, 27 Jun 2013 12:02:38 +0200] rev 9112
[connection] enforce that a connection must be open to be used The same than for ClientConnection, we ensure the connection is used inside a its context. .. note:: We may rely on that for ClientConnection and remove de dedicated code in Client Connection but I prefer the current explicite and duplicated version for now.
Wed, 26 Jun 2013 15:11:22 +0200 use standalone Connection to Client Connection
Pierre-Yves David <pierre-yves.david@logilab.fr> [Wed, 26 Jun 2013 15:11:22 +0200] rev 9111
use standalone Connection to Client Connection
Wed, 26 Jun 2013 14:46:24 +0200 [session] add a new_cnx factory
Pierre-Yves David <pierre-yves.david@logilab.fr> [Wed, 26 Jun 2013 14:46:24 +0200] rev 9110
[session] add a new_cnx factory Having user-code importing cubicweb.server.session.Connection is inconvenient. We add a simple factory fonction on the session.
Wed, 26 Jun 2013 14:26:06 +0200 [connection] allow simple instantiation of standalone Connection
Pierre-Yves David <pierre-yves.david@logilab.fr> [Wed, 26 Jun 2013 14:26:06 +0200] rev 9109
[connection] allow simple instantiation of standalone Connection Such connection will automatically pick a connection id. Note, They are not automatically closed on session close. But they will fails to grab new cnxset once the session is closed.
Wed, 26 Jun 2013 14:35:55 +0200 [connection] handle and explicitly life cycle on Connection
Pierre-Yves David <pierre-yves.david@logilab.fr> [Wed, 26 Jun 2013 14:35:55 +0200] rev 9108
[connection] handle and explicitly life cycle on Connection Like ClientConnection, Connection object need to be explicitly started and stop. They aims to be used as context manager.
Wed, 26 Jun 2013 14:00:32 +0200 [sesion] distinction between Connection handled by the session and other.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Wed, 26 Jun 2013 14:00:32 +0200] rev 9107
[sesion] distinction between Connection handled by the session and other. Not mixing the new and backward compat approach seems a good idea. Let's enforce it.
Wed, 26 Jun 2013 11:58:34 +0200 [session] replace _clear_thread_storage with close_cnx
Pierre-Yves David <pierre-yves.david@logilab.fr> [Wed, 26 Jun 2013 11:58:34 +0200] rev 9106
[session] replace _clear_thread_storage with close_cnx There is not good reason to keep two distinct method.
Wed, 26 Jun 2013 14:01:07 +0200 [session] explicitly take Connection object in close_cnx
Pierre-Yves David <pierre-yves.david@logilab.fr> [Wed, 26 Jun 2013 14:01:07 +0200] rev 9105
[session] explicitly take Connection object in close_cnx Now that ClientConnection explicitly reference and use the Connection object we do not need to use connectionid here. We can safely change this signature, ClientConnection is the only use of close_cnx for now.
Wed, 26 Jun 2013 11:41:53 +0200 [session] drop the Session._clear_cnx_storage method
Pierre-Yves David <pierre-yves.david@logilab.fr> [Wed, 26 Jun 2013 11:41:53 +0200] rev 9104
[session] drop the Session._clear_cnx_storage method It is just cnx.clear() now.
Wed, 26 Jun 2013 11:39:41 +0200 [session] wrap too long line
Pierre-Yves David <pierre-yves.david@logilab.fr> [Wed, 26 Jun 2013 11:39:41 +0200] rev 9103
[session] wrap too long line Too long line is too long. (Confucius 503 BC)
Wed, 26 Jun 2013 11:39:01 +0200 [session] gather close_cnx with get_cnx and set_cnx
Pierre-Yves David <pierre-yves.david@logilab.fr> [Wed, 26 Jun 2013 11:39:01 +0200] rev 9102
[session] gather close_cnx with get_cnx and set_cnx They do the same kind of operation and deserve to be grouped together.
Thu, 27 Jun 2013 11:13:18 +0200 [client-connection] remove the _srv_cnx usage
Pierre-Yves David <pierre-yves.david@logilab.fr> [Thu, 27 Jun 2013 11:13:18 +0200] rev 9101
[client-connection] remove the _srv_cnx usage It does not do anything special now that we use explicite Connection object with automatic cnx_set handling.
Thu, 27 Jun 2013 11:04:31 +0200 [client-connection] explicitly check that the client-connection is open
Pierre-Yves David <pierre-yves.david@logilab.fr> [Thu, 27 Jun 2013 11:04:31 +0200] rev 9100
[client-connection] explicitly check that the client-connection is open The check is also perform by the _srv_cnx property. But we do not need those property anymore.
Thu, 27 Jun 2013 11:02:30 +0200 [client-connection] handle the lack of connection id while not open
Pierre-Yves David <pierre-yves.david@logilab.fr> [Thu, 27 Jun 2013 11:02:30 +0200] rev 9099
[client-connection] handle the lack of connection id while not open the connection id is computed at opening and forgotten when closing. We can't rely on it in various messages … like the "connection closed" exception.
Wed, 26 Jun 2013 11:21:39 +0200 [connection] transparent cnx_set handling
Pierre-Yves David <pierre-yves.david@logilab.fr> [Wed, 26 Jun 2013 11:21:39 +0200] rev 9098
[connection] transparent cnx_set handling Connection object while take cares of there cnxset themself (as dbapi connection does). The ``set_cnxset`` and ``free_cnxset`` operation are still available for backward compatibility purpose. The ``_auto_free_cnx_set`` is introduced to handle mixed usage. A new context manager ``connection.ensure_cnx_set`` is added for code that access ``cnx.cnxset`` directly and are not wrapped in any specific ``Connection`` method. A ``_with_cnx_set`` decorator is used on all Connection method that need a cnxset.
Thu, 27 Jun 2013 10:44:40 +0200 [client-connection] explicit the client part in __repr__
Pierre-Yves David <pierre-yves.david@logilab.fr> [Thu, 27 Jun 2013 10:44:40 +0200] rev 9097
[client-connection] explicit the client part in __repr__ Now that we have real server side connection we need to remove ambiguity.
Tue, 25 Jun 2013 19:50:16 +0200 [ClientConnection] directly use the Connection object to access the database
Pierre-Yves David <pierre-yves.david@logilab.fr> [Tue, 25 Jun 2013 19:50:16 +0200] rev 9096
[ClientConnection] directly use the Connection object to access the database Now that Connection are a full featured standalone object we can directly reference and use it in the ClientConnection instead of using the session. The session object is kept around for a while to perform various utility role.
Tue, 25 Jun 2013 18:15:45 +0200 [connection] invert __init__ parameter
Pierre-Yves David <pierre-yves.david@logilab.fr> [Tue, 25 Jun 2013 18:15:45 +0200] rev 9095
[connection] invert __init__ parameter Takes session first. At some point, the connection_id will become optional for Connection created explicitly.
Wed, 26 Jun 2013 13:43:22 +0200 [service] enforce that Service argument and return are json-serialisable
Pierre-Yves David <pierre-yves.david@logilab.fr> [Wed, 26 Jun 2013 13:43:22 +0200] rev 9094
[service] enforce that Service argument and return are json-serialisable The call_service API need to be able to run through RPC. So we ensure front start that it is possible serialise both input and output.
Tue, 25 Jun 2013 18:04:08 +0200 [connection] move call_service on Connection
Pierre-Yves David <pierre-yves.david@logilab.fr> [Tue, 25 Jun 2013 18:04:08 +0200] rev 9093
[connection] move call_service on Connection This is the last step toward standalone transaction.
Thu, 27 Jun 2013 11:21:14 +0200 [connection] move the commit method on Connection object
Pierre-Yves David <pierre-yves.david@logilab.fr> [Thu, 27 Jun 2013 11:21:14 +0200] rev 9092
[connection] move the commit method on Connection object One step closer of standalone Connection!
Thu, 27 Jun 2013 11:21:09 +0200 [connection] move the rollback method on Connection object
Pierre-Yves David <pierre-yves.david@logilab.fr> [Thu, 27 Jun 2013 11:21:09 +0200] rev 9091
[connection] move the rollback method on Connection object One step closer of standalon Connection.
Thu, 27 Jun 2013 11:20:46 +0200 [connection] pass a Connection object to RQLRewriter
Pierre-Yves David <pierre-yves.david@logilab.fr> [Thu, 27 Jun 2013 11:20:46 +0200] rev 9090
[connection] pass a Connection object to RQLRewriter RQLRewriter can now directly use a Connection object. No need for specific handling session side.
Thu, 27 Jun 2013 11:20:14 +0200 [connection] Connection.execute touch Session timestamp
Pierre-Yves David <pierre-yves.david@logilab.fr> [Thu, 27 Jun 2013 11:20:14 +0200] rev 9089
[connection] Connection.execute touch Session timestamp This allow to keep Session alive while using Connection object only for database access.
Tue, 25 Jun 2013 17:42:12 +0200 [connection] Connection now call _set_user to CWUser object linked to itseld
Pierre-Yves David <pierre-yves.david@logilab.fr> [Tue, 25 Jun 2013 17:42:12 +0200] rev 9088
[connection] Connection now call _set_user to CWUser object linked to itseld Session.user is linked to the session.
Tue, 25 Jun 2013 14:13:50 +0200 [server/session] better faking of user for InternalManager
Pierre-Yves David <pierre-yves.david@logilab.fr> [Tue, 25 Jun 2013 14:13:50 +0200] rev 9087
[server/session] better faking of user for InternalManager
Thu, 27 Jun 2013 11:19:58 +0200 [connection] move execute
Pierre-Yves David <pierre-yves.david@logilab.fr> [Thu, 27 Jun 2013 11:19:58 +0200] rev 9086
[connection] move execute All necessary method are now available on the Connection object. So the Connection can handle RQL execution itself.
Tue, 25 Jun 2013 17:10:52 +0200 [connection] mark Connection as "not a request"
Pierre-Yves David <pierre-yves.david@logilab.fr> [Tue, 25 Jun 2013 17:10:52 +0200] rev 9085
[connection] mark Connection as "not a request" The ORM use this information. Having a wrong value will lead to crash.
Tue, 25 Jun 2013 14:04:46 +0200 [server/session] ensure appobject obtained from the session are linked to the session
Pierre-Yves David <pierre-yves.david@logilab.fr> [Tue, 25 Jun 2013 14:04:46 +0200] rev 9084
[server/session] ensure appobject obtained from the session are linked to the session
Tue, 25 Jun 2013 12:25:52 +0200 [connection] have rql_rewriter accession on Connection
Pierre-Yves David <pierre-yves.david@logilab.fr> [Tue, 25 Jun 2013 12:25:52 +0200] rev 9083
[connection] have rql_rewriter accession on Connection Code expecting a session search the RQLRewriter on this attribute.
Thu, 27 Jun 2013 11:19:42 +0200 [connection] move local_perm_cache management on Connection
Pierre-Yves David <pierre-yves.david@logilab.fr> [Thu, 27 Jun 2013 11:19:42 +0200] rev 9082
[connection] move local_perm_cache management on Connection It belongs here anyway.
Thu, 27 Jun 2013 11:19:37 +0200 [session] use a rich object for timestamp
Pierre-Yves David <pierre-yves.david@logilab.fr> [Thu, 27 Jun 2013 11:19:37 +0200] rev 9081
[session] use a rich object for timestamp This allows the Transaction to keep a reference to it
Thu, 27 Jun 2013 11:19:32 +0200 [migraction] do not access session.data directly
Pierre-Yves David <pierre-yves.david@logilab.fr> [Thu, 27 Jun 2013 11:19:32 +0200] rev 9080
[migraction] do not access session.data directly use set_shared_data and get_shared_data instead
Thu, 27 Jun 2013 11:19:28 +0200 [connection] move relation management method
Pierre-Yves David <pierre-yves.david@logilab.fr> [Thu, 27 Jun 2013 11:19:28 +0200] rev 9079
[connection] move relation management method
Thu, 27 Jun 2013 11:19:24 +0200 [connection] give access to shared data method
Pierre-Yves David <pierre-yves.david@logilab.fr> [Thu, 27 Jun 2013 11:19:24 +0200] rev 9078
[connection] give access to shared data method A reference to session data are kept
Thu, 27 Jun 2013 11:19:17 +0200 [connection] move relation cache method to Connection
Pierre-Yves David <pierre-yves.david@logilab.fr> [Thu, 27 Jun 2013 11:19:17 +0200] rev 9077
[connection] move relation cache method to Connection needed for execute (and need execute themself...)
Wed, 15 May 2013 16:09:31 +0200 [connection] give access to session execute from connection
Pierre-Yves David <pierre-yves.david@logilab.fr> [Wed, 15 May 2013 16:09:31 +0200] rev 9076
[connection] give access to session execute from connection This allows multiple function that both requires an execute method and are required by the execute method.
Thu, 23 May 2013 14:17:46 +0200 [connection] move last part of undo logic in connection
Pierre-Yves David <pierre-yves.david@logilab.fr> [Thu, 23 May 2013 14:17:46 +0200] rev 9075
[connection] move last part of undo logic in connection Now that Connection have a reference to the repo it can handle all of it itself
Tue, 25 Jun 2013 17:28:41 +0200 [connection] initialize connection.user and connection.lang
Pierre-Yves David <pierre-yves.david@logilab.fr> [Tue, 25 Jun 2013 17:28:41 +0200] rev 9074
[connection] initialize connection.user and connection.lang A RequestSessionBase need a user and lang. For now we use the session ones. Later the Connection will have it's own.
Fri, 29 Mar 2013 17:43:18 +0100 [Connection] inherit from RequestSessionBase
Pierre-Yves David <pierre-yves.david@logilab.fr> [Fri, 29 Mar 2013 17:43:18 +0100] rev 9073
[Connection] inherit from RequestSessionBase This contains a lot method. We need them to move more code from Session to connection.
Wed, 26 Jun 2013 13:48:18 +0200 [multi-sources] drop multi-sources related test.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Wed, 26 Jun 2013 13:48:18 +0200] rev 9072
[multi-sources] drop multi-sources related test. another branch is removing the multi-source itself. We do not want to bother fixing those test.
Thu, 27 Jun 2013 18:21:04 +0200 Use new repoapi for the web stack
Pierre-Yves David <pierre-yves.david@logilab.fr> [Thu, 27 Jun 2013 18:21:04 +0200] rev 9071
Use new repoapi for the web stack The publisher now link repoapi.ClientConnection to request. and explicitly control there scope. Web side, appobject._cw.cnx is now a repoapi.ClientConnection. This actually kill webonly possibility until the repoapi is able to use some RPC. The change in the authentication stack is very hasty and need cleanup
Tue, 25 Jun 2013 10:59:01 +0200 PARTIAL: Using the repoapi in test
Pierre-Yves David <pierre-yves.david@logilab.fr> [Tue, 25 Jun 2013 10:59:01 +0200] rev 9070
PARTIAL: Using the repoapi in test Test now use the repoapi.ClientConnection to access the repo. This is very big change. The current method to access the repo are kept for backward compatibility. The new methods will be introduced much later. The TestCase keep a ClientConnection To an admin session for the whole test. This changeset does not makes all tests pass without the next one that change set htt without the next one that change the http stack
Tue, 25 Jun 2013 14:45:16 +0200 [web/test] drop proff of concept Facebook login in test
Pierre-Yves David <pierre-yves.david@logilab.fr> [Tue, 25 Jun 2013 14:45:16 +0200] rev 9069
[web/test] drop proff of concept Facebook login in test The authentication stack will change. The change in API will requires rework of user cube anyway.
Tue, 25 Jun 2013 10:46:35 +0200 [test/dbapi] do not rely on the Testcase provided cnx
Pierre-Yves David <pierre-yves.david@logilab.fr> [Tue, 25 Jun 2013 10:46:35 +0200] rev 9068
[test/dbapi] do not rely on the Testcase provided cnx We plan to use the repoapi in the test. So we need the DBAPI test to explicitly create a DBAPI connection.
Tue, 25 Jun 2013 10:45:44 +0200 [dbapi] explicitly use the DBAPI version of CubicwebRequestBase
Pierre-Yves David <pierre-yves.david@logilab.fr> [Tue, 25 Jun 2013 10:45:44 +0200] rev 9067
[dbapi] explicitly use the DBAPI version of CubicwebRequestBase As we plan to use a ConnectionCubicwebRequestBase by default we better have the dbapi explicitly asking for a DBAPI implementation.
Mon, 24 Jun 2013 18:33:41 +0200 [web/application] drop unused import
Pierre-Yves David <pierre-yves.david@logilab.fr> [Mon, 24 Jun 2013 18:33:41 +0200] rev 9066
[web/application] drop unused import unused since 3c85e734ce00
Mon, 24 Jun 2013 18:35:22 +0200 [web/test] properly reset the request connection related attribute
Pierre-Yves David <pierre-yves.david@logilab.fr> [Mon, 24 Jun 2013 18:35:22 +0200] rev 9065
[web/test] properly reset the request connection related attribute A new request does not have those attribute to None. There have special value that we now properly reinstall.
Mon, 24 Jun 2013 18:23:48 +0200 [web/test] drop two undocumented suspicious regression test
Pierre-Yves David <pierre-yves.david@logilab.fr> [Mon, 24 Jun 2013 18:23:48 +0200] rev 9064
[web/test] drop two undocumented suspicious regression test Those two test are not documented and use the API in the wrong way. They do not raise exception by chance. the current request signature is:: def request(self, rollbackfirst=False, url=None, headers={}, **kwargs): So the RQL have nothing to do here.
Mon, 24 Jun 2013 19:27:31 +0200 [webrequest] introduce an alternative implementation using the repoapi
Pierre-Yves David <pierre-yves.david@logilab.fr> [Mon, 24 Jun 2013 19:27:31 +0200] rev 9063
[webrequest] introduce an alternative implementation using the repoapi DBAPI specific parts of ``CubicWebRequestBase`` are extracted in a ``DBAPICubicWebRequestBase`` decicated class and a new ``ConnectionCubicWebRequestBase`` is introduced that provide the same services but using a repoapi.ClientConnection as data source. For now the ``DBAPICubicWebRequestBase`` is still used by default.
Mon, 24 Jun 2013 18:18:51 +0200 [repoapi] add an anonymous_cnx function
Pierre-Yves David <pierre-yves.david@logilab.fr> [Mon, 24 Jun 2013 18:18:51 +0200] rev 9062
[repoapi] add an anonymous_cnx function This function return an anonymous ClientConnection. It aims to replace ``dbapi.anonymous_session``.
Fri, 21 Jun 2013 16:40:12 +0200 [repoapi] add a connect function
Pierre-Yves David <pierre-yves.david@logilab.fr> [Fri, 21 Jun 2013 16:40:12 +0200] rev 9061
[repoapi] add a connect function This function takes a repo and authentication information to open a new Session and return a ClientConnection associated to it.
Mon, 24 Jun 2013 17:26:13 +0200 [client-connection] add an auto-close property for ClientConnection
Pierre-Yves David <pierre-yves.david@logilab.fr> [Mon, 24 Jun 2013 17:26:13 +0200] rev 9060
[client-connection] add an auto-close property for ClientConnection The next commit introduce a connect function that open a new Session and return an associated ClientConnection. The Session should not be used by anything else than the created ClientConnection, so we want to close it at the same time than the ClientConnection. The implementation in this changeset is simplistic. We probably want to move this notion in the session itself. This be improved once we have server side Connection
Fri, 21 Jun 2013 12:08:06 +0200 [cwuser] make CWUser callable, returning self for dbapi compatibility
Pierre-Yves David <pierre-yves.david@logilab.fr> [Fri, 21 Jun 2013 12:08:06 +0200] rev 9059
[cwuser] make CWUser callable, returning self for dbapi compatibility In the dbapi, Connection and Session have a ``user`` method to generated a user for a request In the repo api, Connection and Session have a user attribute inherited from SessionRequestBase prototype. This ugly hack allows to not break user of the user method. To ease transition from dbapi to repoapi we need the ClientConnection to be as compatible as possible with the dbapi. Adding this method goes in this direction. It'll get deprecated in the deprecation wave that will conclude the repoapi refactoring. related to #2503918
Fri, 21 Jun 2013 15:26:03 +0200 [client-connect] drop rqlst on rset returned client side
Pierre-Yves David <pierre-yves.david@logilab.fr> [Fri, 21 Jun 2013 15:26:03 +0200] rev 9058
[client-connect] drop rqlst on rset returned client side The DBAPI used to drop the RQL syntax tree on rset to save bandwidth. We could stop doing it for In-memory client connection. However keeping the syntax tree leads to multiple tests failures. So we keep dropping it as the DBAPI always did. related to #2503918
Fri, 21 Jun 2013 15:25:47 +0200 [client-connection] add a repo property for dbapi compatibility
Pierre-Yves David <pierre-yves.david@logilab.fr> [Fri, 21 Jun 2013 15:25:47 +0200] rev 9057
[client-connection] add a repo property for dbapi compatibility To ease transition from dbapi to repoapi we need the ClientConnection to be as compatible as possible with the dbapi. Adding this method goes in this direction. It'll get deprecated in the deprecation wave that will conclude the repoapi refactoring. related to #2503918
Fri, 21 Jun 2013 13:49:13 +0200 [client-connection] add a connection property for dbapi compatibility
Pierre-Yves David <pierre-yves.david@logilab.fr> [Fri, 21 Jun 2013 13:49:13 +0200] rev 9056
[client-connection] add a connection property for dbapi compatibility To ease transition from dbapi to repoapi we need the ClientConnection to be as compatible as possible with the dbapi. Adding this method goes in this direction. It'll get deprecated in the deprecation wave that will conclude the repoapi refactoring. related to #2503918
Fri, 21 Jun 2013 13:42:19 +0200 [client-connection] add a sessionid property for dbapi compatibility
Pierre-Yves David <pierre-yves.david@logilab.fr> [Fri, 21 Jun 2013 13:42:19 +0200] rev 9055
[client-connection] add a sessionid property for dbapi compatibility To ease transition from dbapi to repoapi we need the ClientConnection to be as compatible as possible with the dbapi. Adding this method goes in this direction. It'll get deprecated in the deprecation wave that will conclude the repoapi refactoring. related to #2503918
(0) -3000 -1000 -128 +128 +1000 +3000 tip