def category_cleanup(): from fossir.modules.events import Event janitor_user = User.get_system_user() logger.debug("Checking whether any categories should be cleaned up") for categ_id, days in config.CATEGORY_CLEANUP.iteritems(): try: category = Category.get(int(categ_id), is_deleted=False) except KeyError: logger.warning("Category %s does not exist!", categ_id) continue now = now_utc() to_delete = Event.query.with_parent(category).filter( Event.created_dt < (now - timedelta(days=days))).all() if not to_delete: continue logger.info( "Category %s: %s events were created more than %s days ago and will be deleted", categ_id, len(to_delete), days) for i, event in enumerate(to_delete, 1): logger.info("Deleting %s", event) event.delete('Cleaning up category', janitor_user) if i % 100 == 0: db.session.commit() db.session.commit()
def __init__(self, source_file, category_id=0, create_users=None, verbose=False, force=False): self.source_file = source_file self.category_id = category_id self.create_users = create_users self.verbose = verbose self.force = force self.archive = tarfile.open(fileobj=source_file) self.data = yaml.load(self.archive.extractfile('data.yaml')) self.id_map = {} self.user_map = {} self.event_id = None self.system_user_id = User.get_system_user().id self.spec = self._load_spec() self.deferred_idrefs = defaultdict(set)
def _event_deleted(event, **kwargs): user = session.user if has_request_context() and session.user else User.get_system_user() for event_vc_room in VCRoomEventAssociation.find_for_event(event, include_hidden=True, include_deleted=True): event_vc_room.delete(user)