def removeOtherProperties(sqlStore): """ Remove the following properties: DAV:acl DAV:getcontenttype DAV:resource-id {urn:ietf:params:xml:ns:caldav}originator {urn:ietf:params:xml:ns:caldav}recipient {urn:ietf:params:xml:ns:caldav}supported-calendar-component-set {http://calendarserver.org/ns/}getctag {http://twistedmatrix.com/xml_namespace/dav/private/}quota-used {http://twistedmatrix.com/xml_namespace/dav/}getcontentmd5 {http://twistedmatrix.com/xml_namespace/dav/}schedule-auto-respond """ logUpgradeStatus("Starting Calendar Remove Other Properties") sqlTxn = sqlStore.newTransaction(label="calendar_upgrade_from_4_to_5.removeOtherProperties") yield removeProperty(sqlTxn, PropertyName.fromElement(element.ACL)) yield removeProperty(sqlTxn, PropertyName.fromElement(element.GETContentType)) yield removeProperty(sqlTxn, PropertyName.fromElement(element.ResourceID)) yield removeProperty(sqlTxn, PropertyName(caldavxml.caldav_namespace, "originator")) yield removeProperty(sqlTxn, PropertyName(caldavxml.caldav_namespace, "recipient")) yield removeProperty(sqlTxn, PropertyName.fromElement(caldavxml.SupportedCalendarComponentSet)) yield removeProperty(sqlTxn, PropertyName.fromElement(customxml.GETCTag)) yield removeProperty(sqlTxn, PropertyName.fromElement(TwistedQuotaUsedProperty)) yield removeProperty(sqlTxn, PropertyName.fromElement(TwistedGETContentMD5)) yield removeProperty(sqlTxn, PropertyName(element.twisted_dav_namespace, "schedule-auto-respond")) yield sqlTxn.commit() yield cleanPropertyStore() logUpgradeStatus("End Calendar Remove Other Properties")
def createdHome(self): # Check whether components type must be separate if config.RestrictCalendarsToOneComponentType: for name in ical.allowedStoreComponents: cal = self.createCalendarWithName(self._componentCalendarName[name]) cal.setSupportedComponents(name) props = cal.properties() if name not in ("VEVENT", "VAVAILABILITY",): props[PropertyName(*ScheduleCalendarTransp.qname())] = ScheduleCalendarTransp(Transparent()) else: props[PropertyName(*ScheduleCalendarTransp.qname())] = ScheduleCalendarTransp(Opaque()) else: cal = self.createCalendarWithName("calendar") self.createCalendarWithName("inbox")
def test_toString(self): name = PropertyName("http://calendarserver.org/", "bleargh") self.assertEquals( name.toString(), "{http://calendarserver.org/}bleargh" )
def _decodeKey(self, name): name = urllib.unquote(name[len(self.deadPropertyXattrPrefix):]) index1 = name.find("{") index2 = name.find("}") if (index1 is -1 or index2 is -1 or not len(name) > index2): raise ValueError("Invalid encoded name: %r" % (name,)) if index1 == 0: uid = self._defaultUser else: uid = name[:index1] propnamespace = name[index1 + 1:index2] propnamespace = self._namespaceExpand.get(propnamespace, propnamespace) propname = name[index2 + 1:] return PropertyName(propnamespace, propname), uid
def test_setComponentPreservesProperties(self): """ L{IAddressBookObject.setComponent} preserves properties. (Some implementations must go to extra trouble to provide this behavior; for example, file storage must copy extended attributes from the existing file to the temporary file replacing it.) """ propertyName = PropertyName("http://example.com/ns", "example") propertyContent = WebDAVUnknownElement("sample content") propertyContent.name = propertyName.name propertyContent.namespace = propertyName.namespace abobject = (yield self.addressbookObjectUnderTest()) if abobject._parentCollection.objectResourcesHaveProperties(): (yield self.addressbookObjectUnderTest()).properties()[ propertyName] = propertyContent yield self.commit() # Sanity check; are properties even readable in a separate transaction? # Should probably be a separate test. self.assertEquals( (yield self.addressbookObjectUnderTest()).properties()[ propertyName ], propertyContent) obj = yield self.addressbookObjectUnderTest() vcard1_text = yield obj._text() vcard1_text_withDifferentNote = vcard1_text.replace( "NOTE:CardDAV protocol updates", "NOTE:Changed" ) # Sanity check; make sure the test has the right idea of the subject. self.assertNotEquals(vcard1_text, vcard1_text_withDifferentNote) newComponent = VComponent.fromString(vcard1_text_withDifferentNote) yield obj.setComponent(newComponent) # Putting everything into a separate transaction to account for any # caching that may take place. yield self.commit() self.assertEquals( (yield self.addressbookObjectUnderTest()).properties()[propertyName], propertyContent )
def propertyName(name): return PropertyName("http://calendarserver.org/ns/test/", name)
def test_init(self): name = PropertyName("http://calendarserver.org/", "bleargh") self.assertEquals(name.namespace, "http://calendarserver.org/") self.assertEquals(name.name, "bleargh")
def test_interface(self): name = PropertyName("http://calendarserver.org/", "bleargh") try: verifyObject(IPropertyName, name) except BrokenMethodImplementation, e: self.fail(e)