Exemplo n.º 1
0
Arquivo: tasks.py Projeto: fph/indico
def category_cleanup():
    from indico.modules.events import Event
    cfg = Config.getInstance()
    janitor_user = User.get_one(cfg.getJanitorUserId())

    logger.debug("Checking whether any categories should be cleaned up")
    for categ_id, days in cfg.getCategoryCleanup().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.as_legacy.delete(user=janitor_user)
            if i % 100 == 0:
                db.session.commit()
                DBMgr.getInstance().commit()
        db.session.commit()
        DBMgr.getInstance().commit()
Exemplo n.º 2
0
 def _default_category(self):
     try:
         category_id = int(request.args['category_id'])
     except (ValueError, KeyError):
         return self.root_category if self.single_category else None
     else:
         return Category.get(category_id, is_deleted=False)
Exemplo n.º 3
0
def category_cleanup():
    from indico.modules.events import Event
    cfg = Config.getInstance()
    janitor_user = User.get_one(cfg.getJanitorUserId())

    logger.debug("Checking whether any categories should be cleaned up")
    for categ_id, days in cfg.getCategoryCleanup().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()
Exemplo n.º 4
0
 def _default_category(self):
     try:
         category_id = int(request.args['category_id'])
     except (ValueError, KeyError):
         return self.root_category if self.single_category else None
     else:
         return Category.get(category_id, is_deleted=False)
Exemplo n.º 5
0
def category_cleanup():
    from indico.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.items():
        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()
Exemplo n.º 6
0
 def process_formdata(self, valuelist):
     from indico.modules.categories import Category
     if valuelist:
         try:
             category_id = int(json.loads(valuelist[0])['id'])
         except KeyError:
             self.data = None
         else:
             self.data = Category.get(category_id, is_deleted=False)
Exemplo n.º 7
0
 def process_formdata(self, valuelist):
     from indico.modules.categories import Category
     if valuelist:
         try:
             category_id = int(json.loads(valuelist[0])['id'])
         except KeyError:
             self.data = None
         else:
             self.data = Category.get(category_id, is_deleted=False)
Exemplo n.º 8
0
    def _default_category(self):
        try:
            category_id = int(request.args['category_id'])
        except (ValueError, KeyError):
            return None if self._has_only_subcategories(self.root_category) else self.root_category

        category = Category.get(category_id, is_deleted=False)
        if category and category.is_root and self._has_only_subcategories(category):
            return None
        else:
            return category
Exemplo n.º 9
0
    def search_categories(self, q, user, page, category_id,
                          admin_override_enabled):
        query = Category.query if not category_id else Category.get(
            category_id).deep_children_query

        query = (query.filter(Category.title_matches(q),
                              ~Category.is_deleted).options(
                                  undefer('chain'),
                                  undefer(Category.effective_protection_mode),
                                  subqueryload(Category.acl_entries)))

        objs, pagenav = self._paginate(query, page, Category.id, user,
                                       admin_override_enabled)
        res = DetailedCategorySchema(many=True).dump(objs)
        return pagenav, CategoryResultSchema(many=True).load(res)