Пример #1
0
 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
Пример #2
0
 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