> Am 19.05.2016 um 19:54 schrieb Andre LaBranche <d...@apple.com>: > > Is txdav updated? It’s what is included in CalendarServer-8.0 (see below)
> This should work: > >>>> from txdav.who.groups import GroupCacherPollingWork >>>> GroupCacherPollingWork > <class 'txdav.who.groups.GroupCacherPollingWork‘> ??? If I break in > txdav/caldav/datastore/sql.py(1166)Calendar() - - - (Pdb) l 1161 _supportedComponents = None 1162 1163 import pdb 1164 pdb.set_trace() 1165 1166 -> _shadowProperties = tuple([PropertyName.fromString(prop) for prop in config.Sharing.Calendars.CollectionProperties.Shadowable]) 1167 _proxyProperties = tuple([PropertyName.fromString(prop) for prop in config.Sharing.Calendars.CollectionProperties.ProxyOverride]) 1168 _globalProperties = tuple([PropertyName.fromString(prop) for prop in config.Sharing.Calendars.CollectionProperties.Global]) - - - I get an exception in Calendars here: - - - (Pdb) p config.Sharing.Calendars *** ImportError: ImportError(‚cannot import name GroupCacherPollingWork',) - - - while this works: - - - (Pdb) p config.Sharing *{‚Enabled': True, 'AddressBooks': *{'Groups': *{'Enabled': False}, 'CollectionProperties': *{'Shadowable': ['{urn:ietf:params:xml:ns:carddav}addressbook-description'], 'ProxyOverride': [], 'Global': []}, 'Enabled': False}, 'Calendars': *{'IgnorePerUserProperties': ['X-APPLE-STRUCTURED-LOCATION'], 'CollectionProperties': *{'Shadowable': ['{urn:ietf:params:xml:ns:caldav}calendar-description'], 'ProxyOverride': ['{urn:ietf:params:xml:ns:caldav}calendar-description', '{com.apple.ical:}calendarcolor', '{http://apple.com/ns/ical/}calendar-color', '{http://apple.com/ns/ical/}calendar-order'], 'Global': []}, 'Enabled': True, 'Groups': *{'Enabled': True, 'ReconciliationDelaySeconds': 5}}, 'AllowExternalUsers': False} - - - Axel PS: [caldav3:/] root# head -85 /usr/local/lib/python2.7/site-packages/txdav/who/groups.py # -*- test-case-name: txdav.who.test.test_groups -*- ## # Copyright (c) 2013-2016 Apple Inc. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. ## """ Group membership caching """ from twext.enterprise.dal.record import fromTable from twext.enterprise.dal.syntax import Select from twext.enterprise.jobs.workitem import AggregatedWorkItem, RegeneratingWorkItem from twext.python.log import Logger from twisted.internet.defer import inlineCallbacks, returnValue, succeed, \ DeferredList from twistedcaldav.config import config from txdav.caldav.datastore.sql import CalendarStoreFeatures from txdav.caldav.datastore.sql_directory import GroupAttendeeRecord from txdav.common.datastore.sql_directory import GroupsRecord from txdav.common.datastore.sql_tables import schema, _BIND_MODE_OWN import datetime import itertools import time log = Logger() class GroupCacherPollingWork( RegeneratingWorkItem, fromTable(schema.GROUP_CACHER_POLLING_WORK) ): group = "group_cacher_polling" @classmethod def initialSchedule(cls, store, seconds): def _enqueue(txn): return GroupCacherPollingWork.reschedule(txn, seconds) if config.GroupCaching.Enabled: return store.inTransaction("GroupCacherPollingWork.initialSchedule", _enqueue) else: return succeed(None) def regenerateInterval(self): """ Return the interval in seconds between regenerating instances. """ groupCacher = getattr(self.transaction, "_groupCacher", None) return groupCacher.updateSeconds if groupCacher else 10 @inlineCallbacks def doWork(self): groupCacher = getattr(self.transaction, "_groupCacher", None) if groupCacher is not None: startTime = time.time() try: yield groupCacher.update(self.transaction) except Exception, e: log.error( "Failed to update new group membership cache ({error})", error=e ) endTime = time.time() log.debug( "GroupCacher polling took {duration:0.2f} seconds", duration=(endTime - startTime) ) --- PGP-Key:29E99DD6 ☀ computing @ chaos claudius _______________________________________________ calendarserver-dev mailing list calendarserver-dev@lists.macosforge.org https://lists.macosforge.org/mailman/listinfo/calendarserver-dev