[CalendarServer-changes] [7453] CalendarServer/branches/users/glyph/new-export/twistedcaldav/ storebridge.py
source_changes at macosforge.org
source_changes at macosforge.org
Mon May 16 07:41:42 PDT 2011
Revision: 7453
http://trac.macosforge.org/projects/calendarserver/changeset/7453
Author: glyph at apple.com
Date: 2011-05-16 07:41:42 -0700 (Mon, 16 May 2011)
Log Message:
-----------
Minor cleanup; duplicate code in metadata properties.
Modified Paths:
--------------
CalendarServer/branches/users/glyph/new-export/twistedcaldav/storebridge.py
Modified: CalendarServer/branches/users/glyph/new-export/twistedcaldav/storebridge.py
===================================================================
--- CalendarServer/branches/users/glyph/new-export/twistedcaldav/storebridge.py 2011-05-16 14:41:31 UTC (rev 7452)
+++ CalendarServer/branches/users/glyph/new-export/twistedcaldav/storebridge.py 2011-05-16 14:41:42 UTC (rev 7453)
@@ -1709,66 +1709,45 @@
returnValue(NO_CONTENT)
-class _CalendarObjectMetaDataMixin(object):
+
+class _MetadataProperty(object):
"""
- Dynamically create the required meta-data for an object resource
+ A python property which can be set either on a _newStoreObject or on some
+ metadata if no new store object exists yet.
"""
- def _get_accessMode(self):
- return self._newStoreObject.accessMode if self._newStoreObject else self._metadata.get("accessMode", None)
+ def __init__(self, name):
+ self.name = name
- def _set_accessMode(self, value):
- if self._newStoreObject:
- self._newStoreObject.accessMode = value
- else:
- self._metadata["accessMode"] = value
- accessMode = property(_get_accessMode, _set_accessMode)
-
- def _get_isScheduleObject(self):
- return self._newStoreObject.isScheduleObject if self._newStoreObject else self._metadata.get("isScheduleObject", None)
-
- def _set_isScheduleObject(self, value):
- if self._newStoreObject:
- self._newStoreObject.isScheduleObject = value
+ def __get__(self, oself, type=None):
+ if oself._newStoreObject:
+ return getattr(oself._newStoreObject, self.name)
else:
- self._metadata["isScheduleObject"] = value
+ return oself._metadata.get(self.name, None)
- isScheduleObject = property(_get_isScheduleObject, _set_isScheduleObject)
- def _get_scheduleTag(self):
- return self._newStoreObject.scheduleTag if self._newStoreObject else self._metadata.get("scheduleTag", None)
-
- def _set_scheduleTag(self, value):
- if self._newStoreObject:
- self._newStoreObject.scheduleTag = value
+ def __set__(self, oself, value):
+ if oself._newStoreObject:
+ setattr(oself._newStoreObject, self.name, value)
else:
- self._metadata["scheduleTag"] = value
+ oself._metadata[self.name] = value
- scheduleTag = property(_get_scheduleTag, _set_scheduleTag)
- def _get_scheduleEtags(self):
- return self._newStoreObject.scheduleEtags if self._newStoreObject else self._metadata.get("scheduleEtags", None)
- def _set_scheduleEtags(self, value):
- if self._newStoreObject:
- self._newStoreObject.scheduleEtags = value
- else:
- self._metadata["scheduleEtags"] = value
+class _CalendarObjectMetaDataMixin(object):
+ """
+ Dynamically create the required meta-data for an object resource
+ """
- scheduleEtags = property(_get_scheduleEtags, _set_scheduleEtags)
+ accessMode = _MetadataProperty("accessMode")
+ isScheduleObject = _MetadataProperty("isScheduleObject")
+ scheduleTag = _MetadataProperty("scheduleTag")
+ scheduleEtags = _MetadataProperty("scheduleEtags")
+ hasPrivateComment = _MetadataProperty("hasPrivateComment")
- def _get_hasPrivateComment(self):
- return self._newStoreObject.hasPrivateComment if self._newStoreObject else self._metadata.get("hasPrivateComment", None)
- def _set_hasPrivateComment(self, value):
- if self._newStoreObject:
- self._newStoreObject.hasPrivateComment = value
- else:
- self._metadata["hasPrivateComment"] = value
- hasPrivateComment = property(_get_hasPrivateComment, _set_hasPrivateComment)
-
class CalendarObjectResource(_CalendarObjectMetaDataMixin, _CommonObjectResource):
"""
A resource wrapping a calendar object.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20110516/71a55931/attachment-0001.html>
More information about the calendarserver-changes
mailing list