예제 #1
0
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()
예제 #2
0
 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)
예제 #3
0
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)