本文整理汇总了Python中zope.annotation.IAnnotations.values方法的典型用法代码示例。如果您正苦于以下问题:Python IAnnotations.values方法的具体用法?Python IAnnotations.values怎么用?Python IAnnotations.values使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类zope.annotation.IAnnotations
的用法示例。
在下文中一共展示了IAnnotations.values方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: ZipJobManager
# 需要导入模块: from zope.annotation import IAnnotations [as 别名]
# 或者: from zope.annotation.IAnnotations import values [as 别名]
class ZipJobManager(object):
"""Manages ZIP jobs that use the Bumblebee demand endpoint.
"""
def __init__(self, meeting):
self.meeting = meeting
self.committee = meeting.committee.oguid.resolve_object()
self._zip_jobs = IAnnotations(self.committee).get(ZIP_JOBS_KEY, {})
def get_job(self, job_id):
return ZipJob(self._zip_jobs[job_id])
def create_job(self):
self._cleanup_old_jobs()
self._prepare_committee_annotations()
job_id = str(uuid.uuid4())
zip_job_data = PersistentMapping()
zip_job_data['job_id'] = job_id
zip_job_data['timestamp'] = utcnow_tz_aware()
zip_job_data['documents'] = OOBTree()
self._zip_jobs[job_id] = zip_job_data
return ZipJob(zip_job_data)
def remove_job(self, job_id):
del self._zip_jobs[job_id]
def _prepare_committee_annotations(self):
annotations = IAnnotations(self.committee)
if ZIP_JOBS_KEY not in annotations:
annotations[ZIP_JOBS_KEY] = OOBTree()
self._zip_jobs = annotations[ZIP_JOBS_KEY]
def _cleanup_old_jobs(self):
"""Remove expired zip jobs.
The zip jobs are only kept for a relatively short amount of time as
they are a temporary thing.
"""
to_remove = set()
now = utcnow_tz_aware()
expiration_delta = timedelta(days=ZIP_EXPIRATION_DAYS)
for zip_job_data in self._zip_jobs.values():
delta = now - zip_job_data['timestamp']
if delta > expiration_delta:
to_remove.add(zip_job_data['job_id'])
for job_id in to_remove:
self.remove_job(job_id)