def create_visit(self, product, start=datetime.utcnow(), end=datetime.utcnow() + timedelta(hours=1), workflow_status=Visit.WORKFLOW_STATUS_BEING_PLANNED): visit = Visit(workflow_status=workflow_status) visit.save() eventtime = EventTime(product=product, visit=visit, start=pytz.utc.localize(start), end=pytz.utc.localize(end)) eventtime.save() return visit
def lists_for_teachers(self): unit_qs = self.request.user.userprofile.get_unit_queryset() profile = self.request.user.userprofile return [ { 'color': self.HEADING_BLUE, 'type': 'Product', 'title': { 'text': _(u'Mine tilbud'), 'link': reverse('search') + '?u=-3' }, 'queryset': Product.objects.filter( eventtime__visit=profile.potentially_assigned_visits ).distinct().order_by("title"), }, { 'color': self.HEADING_RED, 'type': 'Visit', 'title': ungettext_lazy( u"%(count)d besøg der mangler undervisere", u"%(count)d besøg der mangler undervisere", 'count' ), 'queryset': Visit.unit_filter( profile.can_be_assigned_to_qs, unit_qs ).order_by( 'eventtime__start', 'eventtime__end' ) }, { 'color': self.HEADING_GREEN, 'type': 'Visit', 'title': ungettext_lazy( u"%(count)d besøg hvor jeg er underviser", u"%(count)d besøg hvor jeg er underviser", 'count' ), 'queryset': self.sort_vo_queryset( Visit.unit_filter( profile.all_assigned_visits(), unit_qs ) ) } ]
def get_context_data(self, **kwargs): context = {'lists': []} context['lists'].extend(self.lists_by_role()) context['thisurl'] = reverse('user_profile') unit_qs = self.request.user.userprofile.get_unit_queryset() today_qs = Visit.get_todays_visits().filter( eventtime__product__organizationalunit=unit_qs ) recent_qs = Visit.get_recently_held().filter( eventtime__product__organizationalunit=unit_qs ) context['lists'].extend([{ 'color': self.HEADING_GREEN, 'type': 'Visit', 'title': ungettext_lazy( u'%(count)d senest afviklet besøg', u'%(count)d seneste afviklede besøg', 'count' ) % {'count': recent_qs.count()}, 'queryset': recent_qs, 'limit': 10, 'limited_qs': recent_qs[:10], 'button': { 'text': _(u'Søg i alle'), 'link': reverse('visit-customlist') + "?type=%s" % VisitCustomListView.TYPE_LATEST_COMPLETED } }, { 'color': self.HEADING_BLUE, 'type': 'Visit', 'title': ungettext_lazy( u'%(count)d dagens besøg', u'%(count)d dagens besøg', 'count' ) % {'count': today_qs.count()}, 'queryset': today_qs, 'limit': 10, 'limited_qs': today_qs[:10], 'button': { 'text': _(u'Søg i alle'), 'link': reverse('visit-customlist') + "?type=%s" % VisitCustomListView.TYPE_TODAY } }]) context['is_editor'] = self.request.user.userprofile.has_edit_role() for list in context['lists']: if 'title' in list: if type(list['title']) == dict: if isinstance(list['title']['text'], Promise): list['title']['text'] = \ list['title']['text'] % \ {'count': list['queryset'].count()} elif isinstance(list['title'], Promise): list['title'] = list['title'] % \ {'count': list['queryset'].count()} context.update(**kwargs) return super(ProfileView, self).get_context_data(**context)
def lists_for_editors(self): visitlist = { 'color': self.HEADING_BLUE, 'type': 'Product', 'title': { 'text': ungettext_lazy( u'%(count)d tilbud i min enhed', u'%(count)d tilbud i min enhed', 'count' ), 'link': reverse('search') + '?u=-3' }, 'queryset': Product.objects.filter( organizationalunit=self.request.user .userprofile.get_unit_queryset() ).order_by("-statistics__created_time"), } if visitlist['queryset'].count() > 10: visitlist['limited_qs'] = visitlist['queryset'][:10] visitlist['button'] = { 'text': _(u'Søg i alle'), 'link': reverse('search') + '?u=-3' } unit_qs = self.request.user.userprofile.get_unit_queryset() unplanned = { 'color': self.HEADING_RED, 'type': 'Visit', 'title': ungettext_lazy( u"%(count)d besøg under planlægning", u"%(count)d besøg under planlægning", 'count' ), 'queryset': self.sort_vo_queryset( Visit.unit_filter( Visit.being_planned_queryset( is_multi_sub=False ), unit_qs ).annotate(num_participants=( Coalesce(Count("bookings__booker__pk"), 0) + Coalesce( Sum("bookings__booker__attendee_count"), 0 ) )).filter(num_participants__gte=1) # See also VisitSearchView.filter_by_participants ) } if unplanned['queryset'].count() > 10: unplanned['limited_qs'] = unplanned['queryset'][:10] unplanned['button'] = { 'text': _(u'Søg i alle'), 'link': reverse('visit-search') + '?u=-3&w=-1&go=1&p_min=1' } planned = { 'color': self.HEADING_GREEN, 'type': 'Visit', 'title': ungettext_lazy( u"%(count)d planlagt besøg", u"%(count)d planlagte besøg", 'count' ), 'queryset': self.sort_vo_queryset( Visit.unit_filter( Visit.planned_queryset( is_multi_sub=False ), unit_qs ) ) } if planned['queryset'].count() > 10: planned['limited_qs'] = planned['queryset'][:10] planned['button'] = { 'text': _(u'Søg i alle'), 'link': reverse('visit-search') + '?u=-3&w=-2&go=1' } return [visitlist, unplanned, planned]