def get(self, request, *args, **kwargs): org = request.org partner_id = request.GET.get("partner") non_partner = str_to_bool(self.request.GET.get("non_partner", "")) with_activity = str_to_bool( self.request.GET.get("with_activity", "")) if non_partner: users = org.administrators.all() elif partner_id: users = Partner.objects.get(org=org, pk=partner_id).get_users() else: users = org.get_users() users = list(users.order_by("profile__full_name")) # get reply statistics if with_activity: replies_total = TotalCount.get_by_user( org, users, DailyCount.TYPE_REPLIES).scope_totals() replies_this_month = DailyCount.get_by_user( org, users, DailyCount.TYPE_REPLIES, *month_range(0)).scope_totals() replies_last_month = DailyCount.get_by_user( org, users, DailyCount.TYPE_REPLIES, *month_range(-1)).scope_totals() cases_total = TotalCount.get_by_user( org, users, DailyCount.TYPE_CASE_OPENED).scope_totals() cases_opened_this_month = DailyCount.get_by_user( org, users, DailyCount.TYPE_CASE_OPENED, *month_range(0)).scope_totals() cases_closed_this_month = DailyCount.get_by_user( org, users, DailyCount.TYPE_CASE_CLOSED, *month_range(0)).scope_totals() def as_json(user): obj = user.as_json(full=True, org=org) if with_activity: obj.update({ "replies": { "this_month": replies_this_month.get(user, 0), "last_month": replies_last_month.get(user, 0), "total": replies_total.get(user, 0), }, "cases": { "opened_this_month": cases_opened_this_month.get(user, 0), "closed_this_month": cases_closed_this_month.get(user, 0), "total": cases_total.get(user, 0), }, }) return obj return JsonResponse({"results": [as_json(u) for u in users]})
def get(self, request, *args, **kwargs): with_activity = str_to_bool( self.request.GET.get("with_activity", "")) labels = list( Label.get_all(self.request.org, self.request.user).order_by("name")) Label.bulk_cache_initialize(labels) if with_activity: # get message statistics this_month = DailyCount.get_by_label( labels, DailyCount.TYPE_INCOMING, *month_range(0)).scope_totals() last_month = DailyCount.get_by_label( labels, DailyCount.TYPE_INCOMING, *month_range(-1)).scope_totals() def as_json(label): obj = label.as_json() if with_activity: obj["activity"] = { "this_month": this_month.get(label, 0), "last_month": last_month.get(label, 0) } return obj return JsonResponse({"results": [as_json(l) for l in labels]})
def render_to_response(self, context, **response_kwargs): if self.request.is_ajax(): with_activity = str_to_bool( self.request.GET.get("with_activity", "")) return self.render_as_json(context["object_list"], with_activity) else: return super(PartnerCRUDL.List, self).render_to_response(context, **response_kwargs)
def get(self, request, *args, **kwargs): with_activity = str_to_bool(self.request.GET.get('with_activity', '')) labels = Label.get_all(self.request.org, self.request.user).order_by('name') if with_activity: # get message statistics this_month = DailyCount.get_by_label(labels, DailyCount.TYPE_INCOMING, *month_range(0)).scope_totals() last_month = DailyCount.get_by_label(labels, DailyCount.TYPE_INCOMING, *month_range(-1)).scope_totals() def as_json(label): obj = label.as_json() if with_activity: obj['messages'] = { 'this_month': this_month.get(label, 0), 'last_month': last_month.get(label, 0), } return obj return JsonResponse({'results': [as_json(l) for l in labels]})
def derive_search(self): """ Collects and prepares message search parameters into JSON serializable dict """ folder = MessageFolder[self.request.GET["folder"]] label_id = self.request.GET.get("label", None) include_archived = str_to_bool(self.request.GET.get("archived", "")) text = self.request.GET.get("text", None) contact_id = self.request.GET.get("contact", None) after = parse_iso8601(self.request.GET.get("after", None)) before = parse_iso8601(self.request.GET.get("before", None)) return { "folder": folder, "label": label_id, "include_archived": include_archived, # only applies to flagged folder "text": text, "contact": contact_id, "after": after, "before": before, }
def derive_search(self): """ Collects and prepares message search parameters into JSON serializable dict """ folder = MessageFolder[self.request.GET['folder']] label_id = self.request.GET.get('label', None) include_archived = str_to_bool(self.request.GET.get('archived', '')) text = self.request.GET.get('text', None) contact_id = self.request.GET.get('contact', None) group_ids = parse_csv(self.request.GET.get('groups', ''), as_ints=True) after = parse_iso8601(self.request.GET.get('after', None)) before = parse_iso8601(self.request.GET.get('before', None)) return { 'folder': folder, 'label': label_id, 'include_archived': include_archived, # only applies to flagged folder 'text': text, 'contact': contact_id, 'groups': group_ids, 'after': after, 'before': before }
def get(self, request, *args, **kwargs): org = request.org partner_id = request.GET.get('partner') non_partner = str_to_bool(self.request.GET.get('non_partner', '')) with_activity = str_to_bool( self.request.GET.get('with_activity', '')) if non_partner: users = org.administrators.all() elif partner_id: users = Partner.objects.get(org=org, pk=partner_id).get_users() else: users = org.get_users() users = list(users.order_by('profile__full_name')) # get reply statistics if with_activity: replies_total = DailyCount.get_by_user(org, users, DailyCount.TYPE_REPLIES, None, None).scope_totals() replies_this_month = DailyCount.get_by_user( org, users, DailyCount.TYPE_REPLIES, *month_range(0)).scope_totals() replies_last_month = DailyCount.get_by_user( org, users, DailyCount.TYPE_REPLIES, *month_range(-1)).scope_totals() cases_total = DailyCount.get_by_user( org, users, DailyCount.TYPE_CASE_OPENED, None, None).scope_totals() cases_opened_this_month = DailyCount.get_by_user( org, users, DailyCount.TYPE_CASE_OPENED, *month_range(0)).scope_totals() cases_closed_this_month = DailyCount.get_by_user( org, users, DailyCount.TYPE_CASE_CLOSED, *month_range(0)).scope_totals() def as_json(user): obj = user.as_json(full=True, org=org) if with_activity: obj.update({ 'replies': { 'this_month': replies_this_month.get(user, 0), 'last_month': replies_last_month.get(user, 0), 'total': replies_total.get(user, 0) }, 'cases': { 'opened_this_month': cases_opened_this_month.get(user, 0), 'closed_this_month': cases_closed_this_month.get(user, 0), 'total': cases_total.get(user, 0) }, }) return obj return JsonResponse({'results': [as_json(u) for u in users]})
def render_to_response(self, context, **response_kwargs): if self.request.is_ajax(): with_activity = str_to_bool(self.request.GET.get('with_activity', '')) return self.render_as_json(context['object_list'], with_activity) else: return super(PartnerCRUDL.List, self).render_to_response(context, **response_kwargs)