def makeChange(self, item, change): # easy for set, not too bad for stamp addition, del is maybe # tricky, and add/remove require duplicating reflists event = EventStamp(item) changeType = change[1] if changeType == 'set': attr = change[2] self._updateEdited( item for item in event.modifications if not item.hasModifiedAttribute(attr) ) event.changeAll(attr, change[3]) return attr elif changeType == 'addStamp': self._updateEdited( item for item in event.modifications if not stamping.has_stamp(item, change[2]) ) event.addStampToAll(change[2].stamp_type) return stamping.Stamp.stamp_types.name elif changeType == 'removeStamp': self._updateEdited( item for item in event.modifications if stamping.has_stamp(item, change[2]) ) event.removeStampFromAll(change[2].stamp_type) return stamping.Stamp.stamp_types.name elif changeType in ('add', 'remove', 'append'): attr = change[0].descriptor.name self._updateEdited( item for item in event.modifications if not item.hasModifiedAttribute(attr) ) masterItem = event.getMaster().itsItem attrName, newValue = _multiChange(masterItem, change) with EventStamp(masterItem).noRecurrenceChanges(): setattr(masterItem, attrName, newValue) return attrName elif (changeType == 'delete' and change[0].descriptor.name == EventStamp.rruleset.name): event.removeRecurrence() return EventStamp.rruleset.name else: assert False
def makeChange(self, item, change): # easy for set, not too bad for stamp addition, del is maybe # tricky, and add/remove require duplicating reflists event = EventStamp(item) changeType = change[1] if changeType == 'set': attr = change[2] self._updateEdited(item for item in event.modifications if not item.hasModifiedAttribute(attr)) event.changeAll(attr, change[3]) return attr elif changeType == 'addStamp': self._updateEdited(item for item in event.modifications if not stamping.has_stamp(item, change[2])) event.addStampToAll(change[2].stamp_type) return stamping.Stamp.stamp_types.name elif changeType == 'removeStamp': self._updateEdited(item for item in event.modifications if stamping.has_stamp(item, change[2])) event.removeStampFromAll(change[2].stamp_type) return stamping.Stamp.stamp_types.name elif changeType in ('add', 'remove', 'append'): attr = change[0].descriptor.name self._updateEdited(item for item in event.modifications if not item.hasModifiedAttribute(attr)) masterItem = event.getMaster().itsItem attrName, newValue = _multiChange(masterItem, change) with EventStamp(masterItem).noRecurrenceChanges(): setattr(masterItem, attrName, newValue) return attrName elif (changeType == 'delete' and change[0].descriptor.name == EventStamp.rruleset.name): event.removeRecurrence() return EventStamp.rruleset.name else: assert False