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()
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)
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()
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()
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)
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
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)