def update(self): if self.update_status is not None: # We've been called before. Just return the status we previously # computed. return self.update_status status = '' if Update in self.request: try: changed = applyWidgetsChanges(self, self.schema, target=self.data, names=self.fieldNames) except WidgetsError as errors: # pragma: no cover self.errors = errors status = _("An error occurred.") transaction.doom() else: if changed: status = self.setData(self.data) setUpWidgets(self, self.schema, IInputWidget, initial=self.data, ignoreStickyValues=True, names=self.fieldNames) self.update_status = status return status
def update(self): if self.update_status is not None: # We've been called before. Just return the status we previously # computed. return self.update_status status = '' content = self.adapted if Update in self.request: changed = False try: changed = applyWidgetsChanges(self, self.schema, target=content, names=self.fieldNames) # We should not generate events when an adapter is used. # That's the adapter's job. if changed and self.context is self.adapted: description = Attributes(self.schema, *self.fieldNames) notify(ObjectModifiedEvent(content, description)) except WidgetsError, errors: self.errors = errors status = _("An error occurred.") transaction.abort() else: setUpEditWidgets(self, self.schema, source=self.adapted, ignoreStickyValues=True, names=self.fieldNames) if changed: self.changed() formatter = self.request.locale.dates.getFormatter( 'dateTime', 'medium') status = _("Updated on ${date_time}", mapping={'date_time': formatter.format(datetime.utcnow())})
def update(self): if self.update_status is not None: # We've been called before. Just return the status we previously # computed. return self.update_status status = '' content = self.adapted if Update in self.request.form.keys(): changed = False try: changed = applyWidgetsChanges(self, self.schema, target=content, names=self.fieldNames) # We should not generate events when an adapter is used. # That's the adapter's job. We need to unwrap the objects to # compare them, as they are wrapped differently. # Additionally, we can't use Acquisition.aq_base() because # it strangely returns different objects for these two even # when they are identical. In particular # aq_base(self.adapted) != self.adapted.aq_base :-( if changed and getattr(self.context, 'aq_base', self.context)\ is getattr(self.adapted, 'aq_base', self.adapted): description = Attributes(self.schema, *self.fieldNames) notify(ObjectModifiedEvent(content, description)) except WidgetsError, errors: self.errors = errors status = _("An error occurred.") transaction.abort() else: setUpEditWidgets(self, self.schema, source=self.adapted, ignoreStickyValues=True, names=self.fieldNames) if changed: self.changed() # XXX: Needs locale support: #formatter = self.request.locale.dates.getFormatter( # 'dateTime', 'medium') #status = _("Updated on ${date_time}", # mapping={'date_time': # formatter.format(datetime.utcnow())}) status = _("Updated on ${date_time}", mapping={'date_time': str(datetime.utcnow())})
def update(self): if self.update_status is not None: # We've been called before. Just return the status we previously # computed. return self.update_status status = '' content = self.adapted if Update in self.request: changed = False try: changed = applyWidgetsChanges(self, self.schema, target=content, names=self.fieldNames) # We should not generate events when an adapter is used. # That's the adapter's job. if changed and self.context is self.adapted: description = Attributes(self.schema, *self.fieldNames) notify(ObjectModifiedEvent(content, description)) except WidgetsError, errors: self.errors = errors status = _("An error occurred.") transaction.doom() else: setUpEditWidgets(self, self.schema, source=self.adapted, ignoreStickyValues=True, names=self.fieldNames) if changed: self.changed() formatter = self.request.locale.dates.getFormatter( 'dateTime', 'medium') status = _("Updated on ${date_time}", mapping={ 'date_time': formatter.format(datetime.utcnow()) })
def applyChanges(self, content): field = self.context # create our new object value value = field.query(content, None) if value is None: # TODO: ObjectCreatedEvent here would be nice value = self.factory() # apply sub changes, see if there *are* any changes # TODO: ObjectModifiedEvent here would be nice changes = applyWidgetsChanges(self, field.schema, target=value, names=self.names) # if there's changes, then store the new value on the content if changes: field.set(content, value) # TODO: If value implements ILocation, set name to field name and # parent to content return changes
def update(self): if self.update_status is not None: # We've been called before. Just return the status we previously # computed. return self.update_status status = '' content = self.adapted if Update in self.request.form.keys(): changed = False try: changed = applyWidgetsChanges(self, self.schema, target=content, names=self.fieldNames) # We should not generate events when an adapter is used. # That's the adapter's job. if changed and self.context is self.adapted: notify(ObjectModifiedEvent(content)) except WidgetsError, errors: self.errors = errors status = "An error occured." get_transaction().abort() else: setUpEditWidgets(self, self.schema, source=self.adapted, ignoreStickyValues=True, names=self.fieldNames) if changed: self.changed() # XXX: Needs i18n support: # formatter = self.request.locale.dates.getFormatter( # 'dateTime', 'medium') # status = _("Updated on ${date_time}") # status.mapping = {'date_time': formatter.format( # datetime.utcnow())} status = "Updated on %s" % str(datetime.utcnow())
def update(self): if self.update_status is not None: # We've been called before. Just return the status we previously # computed. return self.update_status status = '' if Update in self.request: try: changed = applyWidgetsChanges( self, self.schema, target=self.data, names=self.fieldNames) except WidgetsError, errors: self.errors = errors status = _("An error occurred.") transaction.doom() else: if changed: status = self.setData(self.data) setUpWidgets( self, self.schema, IInputWidget, initial=self.data, ignoreStickyValues=True, names=self.fieldNames)