Sylvain Thénault <sylvain.thenault@logilab.fr> [Tue, 26 Jan 2010 16:48:41 +0100] rev 4376
surrounding div necessary for proper error localization
Sylvain Thénault <sylvain.thenault@logilab.fr> [Tue, 26 Jan 2010 16:48:06 +0100] rev 4375
cleanup base class
Sylvain Thénault <sylvain.thenault@logilab.fr> [Tue, 26 Jan 2010 16:47:45 +0100] rev 4374
by default use new jquery widgets for Time/Date/DateTime fields
Sylvain Thénault <sylvain.thenault@logilab.fr> [Tue, 26 Jan 2010 16:47:07 +0100] rev 4373
new jquery based widgets for Time/Date/DateTime, backported from crm
Sylvain Thénault <sylvain.thenault@logilab.fr> [Tue, 26 Jan 2010 16:46:12 +0100] rev 4372
introduce a default render implementation on the base widget, which
add_media and then call the newly introduced method
_render(form, field, formrenderer), abstract of the base widget class.
This allow a litle code factorisation and avoid to forget the call to
add_media in subclasses.
Sylvain Thénault <sylvain.thenault@logilab.fr> [Tue, 26 Jan 2010 16:43:51 +0100] rev 4371
[forms] new optional suffix attribute on widget objects, used to generage input name / dom id.
Ease reuse of widgets from another widget. Also move base values computing to
a separated values(form, field) method.
Sylvain Thénault <sylvain.thenault@logilab.fr> [Tue, 26 Jan 2010 16:40:42 +0100] rev 4370
introduce new _ensure_correctly_typed method on fields, responsible
to ensure the value return by the widget is suitable for that kind
of field.
Also factorize date and time fields.
Sylvain Thénault <sylvain.thenault@logilab.fr> [Tue, 26 Jan 2010 16:37:54 +0100] rev 4369
fix typed_value implementation w/ eidparam field which are actual entity's relation and have .value set for their initial value
Sylvain Thénault <sylvain.thenault@logilab.fr> [Tue, 26 Jan 2010 16:36:00 +0100] rev 4368
cleanup module namespace but only importing the formwidgets module
Sylvain Thénault <sylvain.thenault@logilab.fr> [Tue, 26 Jan 2010 13:38:02 +0100] rev 4367
fix deprecation warnings
Sylvain Thénault <sylvain.thenault@logilab.fr> [Tue, 26 Jan 2010 13:36:55 +0100] rev 4366
fif inlined relation forms pb w/ new ajax forms.
We've to ensure the varmaker is properly initialized when generating
a form where we may add new subentities, which will use ajax call to
generate the subform while this subform expect a varmaker to be set.
Sylvain Thénault <sylvain.thenault@logilab.fr> [Tue, 26 Jan 2010 13:34:12 +0100] rev 4365
now that we are property initializing autoform_section for the 'inlined' form type, use it...
Sylvain Thénault <sylvain.thenault@logilab.fr> [Tue, 26 Jan 2010 13:32:54 +0100] rev 4364
[uicfg] fix autoform_section rtags initialization
1. when a relation is marked as inlined in the 'main' form type, we want
its opposite (eg when one the other side of the relation) to be
marked as hidden in the 'inlined' form type
2. when no section is specified for the 'inlined' form type, use the same
as in the 'main' form type
to do this properly, we need two initialization stages. The first one
to handle 1., the second to handle what was done before and 2.
We can't do this in a single stage because we've to know the bare
value of the "opposite" tag.
Sylvain Thénault <sylvain.thenault@logilab.fr> [Tue, 26 Jan 2010 13:27:40 +0100] rev 4363
cache result of the COUNT query used to see if a non unique attribute may be used as rest path on the entity instance to avoid recomputing it later
Sylvain Thénault <sylvain.thenault@logilab.fr> [Tue, 26 Jan 2010 13:26:41 +0100] rev 4362
incontext view of EmailAddress is a mailto: link
Sylvain Thénault <sylvain.thenault@logilab.fr> [Tue, 26 Jan 2010 10:35:46 +0100] rev 4361
add CWProperty for_user CWUser when on the user primary view
Sylvain Thénault <sylvain.thenault@logilab.fr> [Tue, 26 Jan 2010 10:35:23 +0100] rev 4360
move CWProperty rtags from autoform to cwproperties module.
Sylvain Thénault <sylvain.thenault@logilab.fr> [Tue, 26 Jan 2010 10:34:29 +0100] rev 4359
fix Bytes submission pb on POST, due to multiple call to field.process_form_value
for a same field.
In the case of file, stream.read() doesn't return file's data the second time
(since the cursor is at the end of the file).
Fix this by having a generic process_form_value method that cache field's value
in form.formvalues[field] and so _process_form_value is only called once.
You should then override that later method on custom fields.
Sylvain Thénault <sylvain.thenault@logilab.fr> [Tue, 26 Jan 2010 10:30:57 +0100] rev 4358
must skip internal field value from the generic relations combobox
Sylvain Thénault <sylvain.thenault@logilab.fr> [Tue, 26 Jan 2010 10:29:50 +0100] rev 4357
case where 'w' argument is None should be handled in do_paginate
Sylvain Thénault <sylvain.thenault@logilab.fr> [Tue, 26 Jan 2010 10:28:30 +0100] rev 4356
[uicfg] clean dead code, fix indexview_etype_section for ExternalUri and Bookmark
Sylvain Thénault <sylvain.thenault@logilab.fr> [Tue, 26 Jan 2010 10:27:52 +0100] rev 4355
[uicfg] fix reloading pb with the indexview_etype_section
Sylvain Thénault <sylvain.thenault@logilab.fr> [Tue, 26 Jan 2010 10:26:51 +0100] rev 4354
must catch UnmodifiedField exception in has_been_modified
Sylvain Thénault <sylvain.thenault@logilab.fr> [Tue, 26 Jan 2010 10:24:50 +0100] rev 4353
command may now officially be either a string or a list, don't make think it's for backward compat
Sylvain Thénault <sylvain.thenault@logilab.fr> [Tue, 26 Jan 2010 10:24:07 +0100] rev 4352
nicer usage for cubicweb-ctl
Sylvain Thénault <sylvain.thenault@logilab.fr> [Tue, 26 Jan 2010 10:23:38 +0100] rev 4351
get back iterparents implementation from folder cubes
Sylvain Thénault <sylvain.thenault@logilab.fr> [Tue, 26 Jan 2010 10:22:48 +0100] rev 4350
eschema view has been removed
Sylvain Thénault <sylvain.thenault@logilab.fr> [Tue, 26 Jan 2010 10:22:37 +0100] rev 4349
[bfss] make it works when adding/updating entities with an attribute using bfss
Sylvain Thénault <sylvain.thenault@logilab.fr> [Mon, 25 Jan 2010 21:17:44 +0100] rev 4348
d-t-w
Sylvain Thénault <sylvain.thenault@logilab.fr> [Mon, 25 Jan 2010 21:17:15 +0100] rev 4347
fix copyright
Sylvain Thénault <sylvain.thenault@logilab.fr> [Mon, 25 Jan 2010 21:16:42 +0100] rev 4346
XXX quick fix html validation by removing <canvas>
Sylvain Thénault <sylvain.thenault@logilab.fr> [Mon, 25 Jan 2010 19:48:19 +0100] rev 4345
skil internal field value, else we get an error
Sylvain Thénault <sylvain.thenault@logilab.fr> [Mon, 25 Jan 2010 19:36:04 +0100] rev 4344
add source in backup/restore failure message
Sylvain Thénault <sylvain.thenault@logilab.fr> [Mon, 25 Jan 2010 19:28:09 +0100] rev 4343
introduced dependency to lgc > 0.47 for new stacklevel argument to deprecated + new db backup/restore api
Sylvain Thénault <sylvain.thenault@logilab.fr> [Mon, 25 Jan 2010 19:27:30 +0100] rev 4342
handle lgc.adbh api changes within regards of backup/restore:
* new backup_commands method instead of backup_command
* some backend still return command as string as expected by os.system, not subprocess.call
Sylvain Thénault <sylvain.thenault@logilab.fr> [Mon, 25 Jan 2010 19:24:09 +0100] rev 4341
match_rtype hook selector now accepts frometypes/toetypes optional arguments to match only given subject/object entity types
Sylvain Thénault <sylvain.thenault@logilab.fr> [Mon, 25 Jan 2010 19:18:59 +0100] rev 4340
a selector MUST NO return None
Sylvain Thénault <sylvain.thenault@logilab.fr> [Mon, 25 Jan 2010 19:18:33 +0100] rev 4339
some fixes so that deprecation warning are properly localized
Sylvain Thénault <sylvain.thenault@logilab.fr> [Mon, 25 Jan 2010 19:16:35 +0100] rev 4338
to ease overriding of field.choices using *function* (set using autoform_field_kwargs), give the field as named argument
Sylvain Thénault <sylvain.thenault@logilab.fr> [Mon, 25 Jan 2010 19:13:17 +0100] rev 4337
refactor attributes'value generator to deal with yams special
Attribute/NOW/TODAY values that may be used on [Interval]BoundConstraint
(BoundConstraint wasn't handled btw, fix this).
Besides passing 'entity' to generate_* function (needed to get value for
another attribute when computing one for instance):
* set nicer method names and makes clearer what's private/protected/public
* properly handle choices, constraints on float/date/datetime fields
Sylvain Thénault <sylvain.thenault@logilab.fr> [Fri, 22 Jan 2010 14:42:01 +0100] rev 4336
backport stable
Sylvain Thénault <sylvain.thenault@logilab.fr> [Fri, 22 Jan 2010 14:41:08 +0100] rev 4335
backport stable
Sylvain Thénault <sylvain.thenault@logilab.fr> [Fri, 22 Jan 2010 14:40:29 +0100] rev 4334
3.6 api update
Sylvain Thénault <sylvain.thenault@logilab.fr> [Fri, 22 Jan 2010 14:40:14 +0100] rev 4333
[vreg] object_by_id should not have been deprecated. Fix facets.
it was *designed* to be able to force an object retreival when selection
is potentially not possible.
For instance using select instead of object_by_id in get_facet totally
breaks the implementation since in get_facet we've not context result
set, and we ends up with a NoSelectableObject exception.
Adrien Di Mascio <Adrien.DiMascio@logilab.fr> [Fri, 22 Jan 2010 12:25:54 +0100] rev 4332
fix stupid typo ...
Sylvain Thénault <sylvain.thenault@logilab.fr> [Fri, 22 Jan 2010 11:41:04 +0100] rev 4331
fix condition to paginate a result set
Sylvain Thénault <sylvain.thenault@logilab.fr> [Fri, 22 Jan 2010 11:40:22 +0100] rev 4330
make rollback available in shell (as commit is)
Sylvain Thénault <sylvain.thenault@logilab.fr> [Fri, 22 Jan 2010 11:40:09 +0100] rev 4329
add a reminder
Sylvain Thénault <sylvain.thenault@logilab.fr> [Fri, 22 Jan 2010 11:18:13 +0100] rev 4328
fix indentation / tab pbs
Sylvain Thénault <sylvain.thenault@logilab.fr> [Fri, 22 Jan 2010 10:43:12 +0100] rev 4327
fix name error
syt@www.fleurdetomate.fr [Fri, 22 Jan 2010 10:32:00 +0100] rev 4326
add approximated version number to deprecation warning
syt@www.fleurdetomate.fr [Fri, 22 Jan 2010 10:30:11 +0100] rev 4325
oops, missing return
Sylvain Thénault <sylvain.thenault@logilab.fr> [Fri, 22 Jan 2010 10:07:29 +0100] rev 4324
we need extrapath when trying to import site_cubicweb files
Sylvain Thénault <sylvain.thenault@logilab.fr> [Fri, 22 Jan 2010 10:07:03 +0100] rev 4323
move extra path computing as a configuration class property so we can reused it
Sylvain Thénault <sylvain.thenault@logilab.fr> [Fri, 22 Jan 2010 08:49:16 +0100] rev 4322
first draft for a simple hooks based custom attribute storage,
with a BytesFileSystemStorage POC implementation.
Basically:
* a dictionary contains maps from which attribute of which entity types are
mapped to which custom storage
* hooks check for one of these entity type being added/modified/deleted
* read is based on the sql generator callback mecanism (used in vcsfile for
instance)
* all storages have the same basic interface (read, add, update, delete),
and should be pluggable in a transparent way (except at migration time
when one want to change from a storage to another)
* the sample BytesFileSystemStorage:
* may store Bytes attributes content of any entity type as file on the file system
* is based on one FSPATH rql/sql function and another _fsopen only available in sql
* has a dumb file name allocation algorithm
Sylvain Thénault <sylvain.thenault@logilab.fr> [Fri, 22 Jan 2010 08:40:38 +0100] rev 4321
d-t-w
Sylvain Thénault <sylvain.thenault@logilab.fr> [Thu, 21 Jan 2010 17:38:31 +0100] rev 4320
closes #345410: two_lines_rset, two_cols_rset, two_etypes_rset are badly named
replaced by multi_lines_rset, multi_columns_rset, multi_etypes_rset,
all taking optional 'nb' argument allowing to specify and exact count.
Bw compat is kept, usage of deprecated function updated in cw itself.
Also drop custom at_least_two_columns selector (in views.plots) since
it was the same as multi_columns_rset. Hopefuly the renaming will help
in avoid such pb...
We should now decide if we want to deprecate one_* selector in favor
of multi_*(nb=1). See note on this at then end of selectors.py
Sylvain Thénault <sylvain.thenault@logilab.fr> [Thu, 21 Jan 2010 17:03:30 +0100] rev 4319
fix #636936: read_permission relation should not be mandatory
Sylvain Thénault <sylvain.thenault@logilab.fr> [Thu, 21 Jan 2010 16:58:40 +0100] rev 4318
fix #615848: undefined 'new' variable was refering to the newly introduced subquery / remove_subquery doesn't take an undefine argument (probable copy/paste from the remove_node call)
Sylvain Thénault <sylvain.thenault@logilab.fr> [Thu, 21 Jan 2010 16:52:35 +0100] rev 4317
some docstring
Sylvain Thénault <sylvain.thenault@logilab.fr> [Thu, 21 Jan 2010 14:10:23 +0100] rev 4316
[doc] reformulate dependencies
Adrien Di Mascio <Adrien.DiMascio@logilab.fr> [Thu, 21 Jan 2010 11:13:39 +0100] rev 4315
[views] FinalView should display an empty string if value is None
Sylvain Thénault <sylvain.thenault@logilab.fr> [Thu, 21 Jan 2010 11:08:41 +0100] rev 4314
merge
Sylvain Thénault <sylvain.thenault@logilab.fr> [Thu, 21 Jan 2010 11:07:32 +0100] rev 4313
move base form renderer label handling into a function to reuse it in CompositeFormRenderer and avoid seeing a tuple in column headers...
Sylvain Thénault <sylvain.thenault@logilab.fr> [Thu, 21 Jan 2010 11:02:36 +0100] rev 4312
minor schema deserialization optimizations
Sylvain Thénault <sylvain.thenault@logilab.fr> [Thu, 21 Jan 2010 10:59:58 +0100] rev 4311
oopb, widget has been renamed
Sylvain Thénault <sylvain.thenault@logilab.fr> [Thu, 21 Jan 2010 10:57:20 +0100] rev 4310
specify formvid=edition to get multiple edition working w/ 3.6
Sylvain Thénault <sylvain.thenault@logilab.fr> [Thu, 21 Jan 2010 10:52:47 +0100] rev 4309
reminder
Sylvain Thénault <sylvain.thenault@logilab.fr> [Thu, 21 Jan 2010 10:52:24 +0100] rev 4308
this clutter startup screen for little benefit, remove it
Sylvain Thénault <sylvain.thenault@logilab.fr> [Thu, 21 Jan 2010 10:51:07 +0100] rev 4307
update copyright
Sylvain Thénault <sylvain.thenault@logilab.fr> [Thu, 21 Jan 2010 10:48:00 +0100] rev 4306
move bookmark related uicfg stuff into bookmark specific module, use the EditableURLWidget widget for Bookmark.path
Sylvain Thénault <sylvain.thenault@logilab.fr> [Thu, 21 Jan 2010 10:47:01 +0100] rev 4305
new field's responsibility POC: EditableURLWidget allow to edit Bookmark.path in two separated fields, displaying unquoted values which are requoted on form post processing
Sylvain Thénault <sylvain.thenault@logilab.fr> [Thu, 21 Jan 2010 10:42:37 +0100] rev 4304
refactor field's value retreiving from the widget (eg 'display value' concept):
* kill field's display_value method, since getting value specified in a previous
post or in req.form should be the widget responsibility (the widget nows what
inputs to display, not the field)
* new typed_value / format_value on widgets, mainly to ease overriding
Sylvain Thénault <sylvain.thenault@logilab.fr> [Thu, 21 Jan 2010 10:39:12 +0100] rev 4303
dom_id now accepts a suffix argument as input_name
Sylvain Thénault <sylvain.thenault@logilab.fr> [Thu, 21 Jan 2010 10:38:46 +0100] rev 4302
cleaner input_name implementation
Sylvain Thénault <sylvain.thenault@logilab.fr> [Thu, 21 Jan 2010 10:21:09 +0100] rev 4301
when the vregistry is initialized, no need to call vreg.set_schema (else we trigger appobjects registration twice. This allows significant startup speedup.
Sylvain Thénault <sylvain.thenault@logilab.fr> [Thu, 21 Jan 2010 10:19:38 +0100] rev 4300
new url_parse_qs method on base request to parse unicode url formatted query strings
Alexandre Fayolle <alexandre.fayolle@logilab.fr> [Wed, 20 Jan 2010 17:07:48 +0100] rev 4299
merge
Alexandre Fayolle <alexandre.fayolle@logilab.fr> [Wed, 20 Jan 2010 09:00:36 +0100] rev 4298
enable cubicweb-ctl db-dump and db-restore on Windows with SQL Server
os.system has some issues on Windows, especially regarding whitespace handling,
which subprocess handles correctly.
Sylvain Thénault <sylvain.thenault@logilab.fr> [Wed, 20 Jan 2010 15:03:30 +0100] rev 4297
3.6 api update
Sylvain Thénault <sylvain.thenault@logilab.fr> [Wed, 20 Jan 2010 14:41:04 +0100] rev 4296
merge
Sylvain Thénault <sylvain.thenault@logilab.fr> [Wed, 20 Jan 2010 14:39:44 +0100] rev 4295
allow control of generic relations field display through display_fields
Sylvain Thénault <sylvain.thenault@logilab.fr> [Wed, 20 Jan 2010 14:39:10 +0100] rev 4294
no self._cw on widget objects while '_' is defined locally
Sylvain Thénault <sylvain.thenault@logilab.fr> [Wed, 20 Jan 2010 14:38:45 +0100] rev 4293
delete remaining stuff w/ handling of the generic relations
Sylvain Thénault <sylvain.thenault@logilab.fr> [Wed, 20 Jan 2010 14:34:06 +0100] rev 4292
test update
Adrien Di Mascio <Adrien.DiMascio@logilab.fr> [Wed, 20 Jan 2010 13:03:08 +0100] rev 4291
clear vreg's parent_classes cache to fix etype cache / auto-reloading bug
EtypeRegistry.parent_classes()'s is cached. When the registry is
reloaded, if the cache is not cleared, we might get the old list
of parent classes and that leads to strange bugs.
Typical scenario :
1/ start application in debug mode
2/ go to add/Bookmark -> everything's fine
3/ change the source
4/ reload add/Bookmark -> 'creation' not selectable because :
a/ cw detects a change in the source and reloads vreg
b/ cw tries to select 'creation' view for 'Bookmark'
- 'creation' view uses specified_etype_implements('Any')
- cw compares Bookmark.__bases__[0] (i.e. new version of
AnyEntity) with the old version of AnyEntity cached in
the vreg. They don't match => view is not applicable.
Sylvain Thénault <sylvain.thenault@logilab.fr> [Wed, 20 Jan 2010 11:31:38 +0100] rev 4290
merge
Sylvain Thénault <sylvain.thenault@logilab.fr> [Wed, 20 Jan 2010 11:31:28 +0100] rev 4289
fix bad indent
Sylvain Thénault <sylvain.thenault@logilab.fr> [Wed, 20 Jan 2010 11:29:58 +0100] rev 4288
backport stable
Sylvain Thénault <sylvain.thenault@logilab.fr> [Wed, 20 Jan 2010 11:29:08 +0100] rev 4287
cleanup
Sylvain Thénault <sylvain.thenault@logilab.fr> [Wed, 20 Jan 2010 11:29:00 +0100] rev 4286
fix bug: the 'table' argument is overwritten by the loop variable, causing latter crash due to this missing information
Sylvain Thénault <sylvain.thenault@logilab.fr> [Wed, 20 Jan 2010 11:27:41 +0100] rev 4285
don't record deambiguifier when it has no type restriction using 'is', so we don't miss later some available constraints
Sylvain Thénault <sylvain.thenault@logilab.fr> [Wed, 20 Jan 2010 11:23:27 +0100] rev 4284
fix warning stack level
Sylvain Thénault <sylvain.thenault@logilab.fr> [Wed, 20 Jan 2010 11:23:18 +0100] rev 4283
cw 3.6 api update
Sylvain Thénault <sylvain.thenault@logilab.fr> [Wed, 20 Jan 2010 10:14:14 +0100] rev 4282
merge
Sylvain Thénault <sylvain.thenault@logilab.fr> [Wed, 20 Jan 2010 10:13:45 +0100] rev 4281
merge
Sylvain Thénault <sylvain.thenault@logilab.fr> [Wed, 20 Jan 2010 10:13:02 +0100] rev 4280
more input/button fixes
Sylvain Thénault <sylvain.thenault@logilab.fr> [Wed, 20 Jan 2010 10:10:17 +0100] rev 4279
backport stable
Sylvain Thénault <sylvain.thenault@logilab.fr> [Wed, 20 Jan 2010 10:06:53 +0100] rev 4278
cleanup
Sylvain Thénault <sylvain.thenault@logilab.fr> [Wed, 20 Jan 2010 10:06:12 +0100] rev 4277
turn all the stuff used to handle 'generic relations' in forms into proper
field / widget.
-> regroup code from web.request, web.controller, web.views.autoform, web.views.formrenderers,
web.views.editcontroller (!) into GenericRelationsField, GenericRelationsWidget in the editviews
module (together with the UnrelatedDiv view).
So:
* almost everything in one place
* no more specific behaviour in the form renderer
* almost no custom behaviour in autoform (simply add the field when it think it should)
Also, the form renderer now display field's value with colspan=2 when field.label is None.
Sylvain Thénault <sylvain.thenault@logilab.fr> [Wed, 20 Jan 2010 08:43:41 +0100] rev 4276
fix tests
Adrien Di Mascio <Adrien.DiMascio@logilab.fr> [Wed, 20 Jan 2010 10:05:10 +0100] rev 4275
[rql2sql] added test that shows crash during sql generation
Original query in cubicweb-drh:
Any A,E,CV,group_concat(TN) GROUPBY A,E,CV WHERE A is Application, A for_person P, P has_studied_in E?, T? tags A, T name TN, A curriculum CV?
Corresponding bug in tracker: #628798
Sylvain Thénault <sylvain.thenault@logilab.fr> [Tue, 19 Jan 2010 18:26:22 +0100] rev 4274
apply patch proposed by 2web to properly remove hidden input set to represent the button used to submit the form, so forms may be properly reused after a post
Sylvain Thénault <sylvain.thenault@logilab.fr> [Tue, 19 Jan 2010 18:22:05 +0100] rev 4273
fix dumb name error
Sylvain Thénault <sylvain.thenault@logilab.fr> [Tue, 19 Jan 2010 18:21:59 +0100] rev 4272
missing import
Sylvain Thénault <sylvain.thenault@logilab.fr> [Tue, 19 Jan 2010 18:20:43 +0100] rev 4271
remove input from jquery filter, so it works as well with buttons
alex & cheb [Tue, 19 Jan 2010 18:11:31 +0100] rev 4270
unicode(arg) else we may get some encoding exception
alex & cheb [Tue, 19 Jan 2010 18:10:01 +0100] rev 4269
remove deprecation warnings + name error
Stephanie Marcu <stephanie.marcu@logilab.fr> [Tue, 19 Jan 2010 17:50:48 +0100] rev 4268
remove common/test/data directory from __pkginfo__, MANIFEST and debian rules to allow cubicweb installation
Stephanie Marcu <stephanie.marcu@logilab.fr> [Tue, 19 Jan 2010 17:50:36 +0100] rev 4267
fix syntax error
Sylvain Thénault <sylvain.thenault@logilab.fr> [Tue, 19 Jan 2010 14:41:23 +0100] rev 4266
test fixes
Sylvain Thénault <sylvain.thenault@logilab.fr> [Tue, 19 Jan 2010 14:41:19 +0100] rev 4265
3.6 api update