def _process(self, from_, include, limit): user = self._get_user() all_events = set() if 'linked' in include: all_events |= set(get_linked_events( user, from_, limit=limit, load_also=('description', 'own_room_id', 'own_venue_id', 'own_room_name', 'own_venue_name') )) if 'categories' in include and (categories := get_related_categories(user)): category_ids = {c['categ'].id for c in categories.values()} all_events |= set(get_events_in_categories(category_ids, user, limit=limit))
def _process(self): self.user.settings.set('suggest_categories', True) tz = session.tzinfo hours, minutes = timedelta_split(tz.utcoffset(datetime.now()))[:2] categories = get_related_categories(self.user) categories_events = [] if categories: category_ids = {c['categ'].id for c in categories.itervalues()} today = now_utc(False).astimezone(tz).date() query = (Event.query .filter(~Event.is_deleted, Event.category_chain_overlaps(category_ids), Event.start_dt.astimezone(session.tzinfo) >= today) .options(joinedload('category').load_only('id', 'title'), joinedload('series'), subqueryload('acl_entries'), load_only('id', 'category_id', 'start_dt', 'end_dt', 'title', 'access_key', 'protection_mode', 'series_id', 'series_pos', 'series_count')) .order_by(Event.start_dt, Event.id)) categories_events = get_n_matching(query, 10, lambda x: x.can_access(self.user)) from_dt = now_utc(False) - relativedelta(weeks=1, hour=0, minute=0, second=0) linked_events = [(event, {'management': bool(roles & self.management_roles), 'reviewing': bool(roles & self.reviewer_roles), 'attendance': bool(roles & self.attendance_roles)}) for event, roles in get_linked_events(self.user, from_dt, 10).iteritems()] return WPUser.render_template('dashboard.html', 'dashboard', offset='{:+03d}:{:02d}'.format(hours, minutes), user=self.user, categories=categories, categories_events=categories_events, suggested_categories=get_suggested_categories(self.user), linked_events=linked_events)
def _process(self): self.user.settings.set('suggest_categories', True) categories = get_related_categories(self.user) categories_events = [] if categories: category_ids = {c['categ'].id for c in categories.values()} categories_events = get_events_in_categories( category_ids, self.user) from_dt = now_utc(False) - relativedelta( weeks=1, hour=0, minute=0, second=0) linked_events = [(event, { 'management': bool(roles & self.management_roles), 'reviewing': bool(roles & self.reviewer_roles), 'attendance': bool(roles & self.attendance_roles) }) for event, roles in get_linked_events( self.user, from_dt, 10).items()] return WPUserDashboard.render_template( 'dashboard.html', 'dashboard', user=self.user, categories=categories, categories_events=categories_events, suggested_categories=get_suggested_categories(self.user), linked_events=linked_events)
def _process(self, from_, include, limit): categories = get_related_categories(self.user) categories_events = [] if categories: category_ids = {c['categ'].id for c in categories.values()} categories_events = get_events_in_categories(category_ids, self.user, limit=limit) linked_events = get_linked_events( self.user, from_, limit=limit, load_also=('description', 'own_room_id', 'own_venue_id', 'own_room_name', 'own_venue_name')) all_events = set() if 'linked' in include: all_events |= set(linked_events) if 'categories' in include: all_events |= set(categories_events) all_events = sorted(all_events, key=lambda e: (e.start_dt, e.id))[:limit] response = { 'results': [ serialize_event_for_ical(event, 'events') for event in all_events ] } serializer = Serializer.create('ics') return send_file('event.ics', BytesIO(serializer(response)), 'text/calendar')
def export_categ_events(self, aw): self._checkProtection(aw) catIds = [ item['categ'].getId() for item in get_related_categories(self._avatar.user).itervalues() ] return UserCategoryEventFetcher(aw, self).category_events(catIds)
def category_suggestions(): users = (User.query.filter( ~User.is_deleted, User._all_settings.any( db.and_(UserSetting.module == 'users', UserSetting.name == 'suggest_categories', db.cast(UserSetting.value, db.String) == 'true')))) for user in users: existing = {x.category: x for x in user.suggested_categories} related = set(get_related_categories(user, detailed=False)) for category, score in get_category_scores(user).iteritems(): if score < SUGGESTION_MIN_SCORE: continue if (category in related or category.is_deleted or category.suggestions_disabled or any(p.suggestions_disabled for p in category.parent_chain_query)): continue logger.debug('Suggesting %s with score %.03f for %s', category, score, user) suggestion = existing.get(category) or SuggestedCategory( category=category, user=user) suggestion.score = score user.settings.set('suggest_categories', False) db.session.commit()
def _process(self): if redis_write_client: suggestions.schedule_check(self.user) tz = timezone(DisplayTZ().getDisplayTZ()) hours, minutes = timedelta_split(tz.utcoffset(datetime.now()))[:2] return WPUserDashboard.render_template('dashboard.html', redis_enabled=bool(redis_client), timezone=unicode(tz), offset='{:+03d}:{:02d}'.format(hours, minutes), user=self.user, categories=get_related_categories(self.user), suggested_categories=get_suggested_categories(self.user))
def category_suggestions(): users = (User.query .filter(~User.is_deleted, User._all_settings.any(db.and_(UserSetting.module == 'users', UserSetting.name == 'suggest_categories', db.cast(UserSetting.value, db.String) == 'true')))) for user in users: existing = {x.category: x for x in user.suggested_categories} related = set(get_related_categories(user, detailed=False)) for category, score in get_category_scores(user).iteritems(): if score < SUGGESTION_MIN_SCORE: continue if (category in related or category.is_deleted or category.suggestions_disabled or any(p.suggestions_disabled for p in category.parent_chain_query)): continue logger.debug('Suggesting %s with score %.03f for %s', category, score, user) suggestion = existing.get(category) or SuggestedCategory(category=category, user=user) suggestion.score = score user.settings.set('suggest_categories', False) db.session.commit()
def export_categ_events(self, aw): self._checkProtection(aw) catIds = [item['categ'].getId() for item in get_related_categories(self._avatar.user).itervalues()] return UserCategoryEventFetcher(aw, self).category_events(catIds)
def export_categ_events(self, aw): self._checkProtection(aw) catIds = [str(cat.id) for cat in get_related_categories(self._avatar.user, detailed=False)] return UserCategoryEventFetcher(aw, self).category_events(catIds)