def sms_record_common_fun(request): """Return Form with Initial data or Array (kwargs) for SMS_Report Changelist_view""" start_date = '' end_date = '' if request.POST.get('from_date'): from_date = request.POST.get('from_date') start_date = datetime(int(from_date[0:4]), int(from_date[5:7]), int(from_date[8:10]), 0, 0, 0, 0).replace(tzinfo=utc) if request.POST.get('to_date'): to_date = request.POST.get('to_date') end_date = datetime(int(to_date[0:4]), int(to_date[5:7]), int(to_date[8:10]), 23, 59, 59, 999999).replace(tzinfo=utc) # Assign form field value to local variable status = variable_value(request, 'status') smscampaign = variable_value(request, 'smscampaign') # Patch code for persist search if request.method != 'POST': if request.session.get('from_date'): from_date = request.session['from_date'] start_date = datetime( int(from_date[0:4]), int(from_date[5:7]), int(from_date[8:10]), 0, 0, 0, 0).replace(tzinfo=utc) if request.session.get('to_date'): to_date = request.session['to_date'] end_date = datetime( int(to_date[0:4]), int(to_date[5:7]), int(to_date[8:10]), 23, 59, 59, 999999).replace(tzinfo=utc) if request.session.get('status'): status = request.session['status'] if request.session.get('smscampaign'): smscampaign = request.session['smscampaign'] kwargs = {} if start_date and end_date: kwargs['send_date__range'] = (start_date, end_date) if start_date and end_date == '': kwargs['send_date__gte'] = start_date if start_date == '' and end_date: kwargs['send_date__lte'] = end_date if status: if status != 'all': kwargs['status__exact'] = status if smscampaign and smscampaign != '0': kwargs['sms_campaign'] = smscampaign if len(kwargs) == 0: tday = datetime.utcnow().replace(tzinfo=utc) kwargs['send_date__gte'] = datetime(tday.year, tday.month, tday.day, 0, 0, 0, 0).replace(tzinfo=utc) return kwargs
def voipcall_search_admin_form_fun(request): """Return query string for Voipcall_Report Changelist_view""" start_date = '' end_date = '' if request.POST.get('from_date'): start_date = request.POST.get('from_date') if request.POST.get('to_date'): end_date = request.POST.get('to_date') # Assign form field value to local variable disposition = variable_value(request, 'status') campaign_id = variable_value(request, 'campaign_id') leg_type = variable_value(request, 'leg_type') query_string = '' if start_date and end_date: date_string = 'starting_date__gte=' + start_date + \ '&starting_date__lte=' + end_date + '+23%3A59%3A59' query_string = return_query_string(query_string, date_string) if start_date and end_date == '': date_string = 'starting_date__gte=' + start_date query_string = return_query_string(query_string, date_string) if start_date == '' and end_date: date_string = 'starting_date__lte=' + end_date query_string = return_query_string(query_string, date_string) if disposition and disposition != 'all': disposition_string = 'disposition__exact=' + disposition query_string = return_query_string(query_string, disposition_string) if campaign_id and campaign_id != '0': campaign_string = 'callrequest__campaign_id=' + str(campaign_id) query_string = return_query_string(query_string, campaign_string) if leg_type and leg_type != '': leg_type_string = 'leg_type__exact=' + str(leg_type) query_string = return_query_string(query_string, leg_type_string) if start_date == '' and end_date == '': tday = datetime.today() end_date = start_date = tday.strftime("%Y-%m-%d") date_string = 'starting_date__gte=' + start_date + \ '&starting_date__lte=' + end_date + '+23%3A59%3A59' query_string = return_query_string(query_string, date_string) return query_string
def voipcall_search_admin_form_fun(request): """Return query string for Voipcall_Report Changelist_view""" start_date = '' end_date = '' if request.POST.get('from_date'): start_date = request.POST.get('from_date') if request.POST.get('to_date'): end_date = request.POST.get('to_date') # Assign form field value to local variable disposition = variable_value(request, 'status') query_string = '' if start_date and end_date: date_string = 'starting_date__gte=' + start_date + '&starting_date__lte=' + end_date + '+23%3A59%3A59' query_string = return_query_string(query_string, date_string) if start_date and end_date == '': date_string = 'starting_date__gte=' + start_date query_string = return_query_string(query_string, date_string) if start_date == '' and end_date: date_string = 'starting_date__lte=' + end_date query_string = return_query_string(query_string, date_string) if disposition: if disposition != 'all': disposition_string = 'disposition__exact=' + disposition query_string = return_query_string(query_string, disposition_string) return query_string
def voipcall_record_common_fun(request): """Return Form with Initial data or Array (kwargs) for Voipcall_Report Changelist_view""" start_date = '' end_date = '' if request.POST.get('from_date'): from_date = request.POST.get('from_date') start_date = ceil_strdate(from_date, 'start') if request.POST.get('to_date'): to_date = request.POST.get('to_date') end_date = ceil_strdate(to_date, 'end') # Assign form field value to local variable disposition = variable_value(request, 'status') campaign_id = variable_value(request, 'campaign_id') leg_type = variable_value(request, 'leg_type') kwargs = {} if start_date and end_date: kwargs['starting_date__range'] = (start_date, end_date) if start_date and end_date == '': kwargs['starting_date__gte'] = start_date if start_date == '' and end_date: kwargs['starting_date__lte'] = end_date if disposition and disposition != 'all': kwargs['disposition__exact'] = disposition if campaign_id and campaign_id != '0': kwargs['callrequest__campaign_id'] = campaign_id if leg_type and leg_type != '': kwargs['leg_type__exact'] = leg_type if len(kwargs) == 0: tday = datetime.today() kwargs['starting_date__gte'] = datetime(tday.year, tday.month, tday.day, 0, 0, 0, 0) kwargs['starting_date__lte'] = datetime(tday.year, tday.month, tday.day, 23, 59, 59) return kwargs
def contact_search_common_fun(request): """Return Array (kwargs) for Contact list""" # Assign form field value to local variable contact_no = variable_value(request, 'contact_no') contact_no_type = variable_value(request, 'contact_no_type') phonebook = variable_value(request, 'phonebook') status = variable_value(request, 'status') kwargs = {} if phonebook != '0': kwargs['phonebook'] = phonebook if status != '2': kwargs['status'] = status contact_no = type_field_chk(contact_no, contact_no_type, 'contact') for i in contact_no: kwargs[i] = contact_no[i] return kwargs
def sms_search_admin_form_fun(request): """Return query string for SMSMessage Changelist_view""" start_date = '' end_date = '' smscampaign = '' if request.POST.get('from_date'): start_date = request.POST.get('from_date') if request.POST.get('to_date'): end_date = request.POST.get('to_date') # Assign form field value to local variable status = variable_value(request, 'status') smscampaign = variable_value(request, 'smscampaign') query_string = '' if start_date and end_date: date_string = 'send_date__gte=' + start_date + '&send_date__lte=' \ + end_date + '+23%3A59%3A59' query_string = return_query_string(query_string, date_string) if start_date and end_date == '': date_string = 'send_date__gte=' + start_date query_string = return_query_string(query_string, date_string) if start_date == '' and end_date: date_string = 'send_date__lte=' + end_date query_string = return_query_string(query_string, date_string) if status: if status != 'all': status_string = 'status__exact=' + status query_string = return_query_string(query_string, status_string) if smscampaign and smscampaign != '0': smscampaign_string = 'sms_campaign=' + smscampaign query_string = return_query_string(query_string, smscampaign_string) return query_string
def voipcall_record_common_fun(request): """Return Form with Initial data or Array (kwargs) for Voipcall_Report Changelist_view""" start_date = '' end_date = '' if request.POST.get('from_date'): from_date = request.POST.get('from_date') start_date = datetime(int(from_date[0:4]), int(from_date[5:7]), int(from_date[8:10]), 0, 0, 0, 0) if request.POST.get('to_date'): to_date = request.POST.get('to_date') end_date = datetime(int(to_date[0:4]), int(to_date[5:7]), int(to_date[8:10]), 23, 59, 59, 999999) # Assign form field value to local variable disposition = variable_value(request, 'status') # Patch code for persist search if request.method != 'POST': if request.session.get('from_date'): from_date = request.session['from_date'] start_date = datetime(int(from_date[0:4]), int(from_date[5:7]), int(from_date[8:10]), 0, 0, 0, 0) if request.session.get('to_date'): to_date = request.session['to_date'] end_date = datetime(int(to_date[0:4]), int(to_date[5:7]), int(to_date[8:10]), 23, 59, 59, 999999) if request.session.get('status'): disposition = request.session['status'] kwargs = {} if start_date and end_date: kwargs['starting_date__range'] = (start_date, end_date) if start_date and end_date == '': kwargs['starting_date__gte'] = start_date if start_date == '' and end_date: kwargs['starting_date__lte'] = end_date if disposition: if disposition != 'all': kwargs['disposition__exact'] = disposition if len(kwargs) == 0: tday = datetime.today() kwargs['starting_date__gte'] = datetime(tday.year, tday.month, tday.day, 0, 0, 0, 0) return kwargs
def subscriber_report(self, request): """ Get subscriber report **Attributes**: * ``form`` - SubscriberReportForm * ``template`` - admin/dialer_campaign/subscriber/subscriber_report.html """ opts = Subscriber._meta tday = datetime.today() form = SubscriberReportForm(initial={"from_date": tday.strftime("%Y-%m-%d"), "to_date": tday.strftime("%Y-%m-%d")}) total_subscriber = 0 total_pending = 0 total_pause = 0 total_abort = 0 total_fail = 0 total_sent = 0 total_in_process = 0 total_not_auth = 0 total_completed = 0 if request.method == 'POST': form = SubscriberReportForm(request.POST) if form.is_valid(): start_date = '' end_date = '' if request.POST.get('from_date'): from_date = request.POST.get('from_date') start_date = ceil_strdate(from_date, 'start') if request.POST.get('to_date'): to_date = request.POST.get('to_date') end_date = ceil_strdate(to_date, 'end') campaign_id = variable_value(request, 'campaign_id') kwargs = {} if start_date and end_date: kwargs['updated_date__range'] = (start_date, end_date) if start_date and end_date == '': kwargs['updated_date__gte'] = start_date if start_date == '' and end_date: kwargs['updated_date__lte'] = end_date if campaign_id and campaign_id != '0': kwargs['campaign_id'] = campaign_id select_data = {"updated_date": "SUBSTR(CAST(updated_date as CHAR(30)),1,10)"} subscriber = Subscriber.objects \ .filter(**kwargs) \ .extra(select=select_data) \ .values('updated_date', 'status') \ .annotate(Count('updated_date')) \ .order_by('updated_date') for i in subscriber: total_subscriber += i['updated_date__count'] if i['status'] == SUBSCRIBER_STATUS.PENDING: total_pending += i['updated_date__count'] elif i['status'] == SUBSCRIBER_STATUS.PAUSE: total_pause += i['updated_date__count'] elif i['status'] == SUBSCRIBER_STATUS.ABORT: total_abort += i['updated_date__count'] elif i['status'] == SUBSCRIBER_STATUS.FAIL: total_fail += i['updated_date__count'] elif i['status'] == SUBSCRIBER_STATUS.SENT: total_sent += i['updated_date__count'] elif i['status'] == SUBSCRIBER_STATUS.IN_PROCESS: total_in_process += i['updated_date__count'] elif i['status'] == SUBSCRIBER_STATUS.NOT_AUTHORIZED: total_not_auth += i['updated_date__count'] else: #status COMPLETED total_completed += i['updated_date__count'] ctx = RequestContext(request, { 'form': form, 'opts': opts, 'total_subscriber': total_subscriber, 'total_pending': total_pending, 'total_pause': total_pause, 'total_abort': total_abort, 'total_fail': total_fail, 'total_sent': total_sent, 'total_in_process': total_in_process, 'total_not_auth': total_not_auth, 'total_completed': total_completed, 'SUBSCRIBER_STATUS_NAME': SUBSCRIBER_STATUS_NAME, 'model_name': opts.object_name.lower(), 'app_label': APP_LABEL, 'title': _('subscriber report'), }) return render_to_response('admin/dialer_campaign/subscriber/subscriber_report.html', context_instance=ctx)
def survey_report(request): """ Survey detail report for the logged in user **Attributes**: * ``template`` - frontend/survey/survey_report.html **Logic Description**: * List all survey_report which belong to the logged in user. """ tday = datetime.today() from_date = tday.strftime("%Y-%m-%d") to_date = tday.strftime("%Y-%m-%d") form = SurveyDetailReportForm(request.user, initial={ 'from_date': from_date, 'to_date': to_date }) search_tag = 1 survey_result = '' survey_cdr_daily_data = { 'total_data': '', 'total_duration': '', 'total_calls': '', 'total_avg_duration': '', 'max_duration': '', } sort_col_field_list = [ 'starting_date', 'phone_number', 'duration', 'disposition', 'id' ] default_sort_field = 'starting_date' pagination_data =\ get_pagination_vars(request, sort_col_field_list, default_sort_field) PAGE_SIZE = pagination_data['PAGE_SIZE'] sort_order = pagination_data['sort_order'] start_page = pagination_data['start_page'] end_page = pagination_data['end_page'] campaign_obj = '' action = 'tabs-1' if request.method == 'POST': #search_tag = 1 form = SurveyDetailReportForm(request.user, request.POST) if form.is_valid(): # set session var value request.session['session_from_date'] = '' request.session['session_to_date'] = '' request.session['session_campaign_id'] = '' request.session['session_surveycalls_kwargs'] = '' request.session['session_survey_cdr_daily_data'] = {} if "from_date" in request.POST: # From from_date = request.POST['from_date'] request.session['session_from_date'] = from_date if "to_date" in request.POST: # To to_date = request.POST['to_date'] request.session['session_to_date'] = to_date campaign_id = variable_value(request, 'campaign') if campaign_id: request.session['session_campaign_id'] = campaign_id else: rows = [] campaign_id = '' try: if request.GET.get('page') or request.GET.get('sort_by'): from_date = request.session.get('session_from_date') to_date = request.session.get('session_to_date') campaign_id = request.session.get('session_campaign_id') search_tag = request.session.get('session_search_tag') else: from_date except NameError: tday = datetime.today() from_date = tday.strftime('%Y-%m-01') last_day = ((datetime(tday.year, tday.month, 1, 23, 59, 59, 999999) + relativedelta(months=1)) - relativedelta(days=1)).strftime('%d') to_date = tday.strftime('%Y-%m-' + last_day) search_tag = 0 # unset session var value request.session['session_from_date'] = from_date request.session['session_to_date'] = to_date request.session['session_campaign_id'] = '' request.session['session_surveycalls_kwargs'] = '' request.session['session_search_tag'] = search_tag start_date = ceil_strdate(from_date, 'start') end_date = ceil_strdate(to_date, 'end') kwargs = {} if not request.user.is_superuser: kwargs['user'] = request.user kwargs['disposition__exact'] = VOIPCALL_DISPOSITION.ANSWER survey_result_kwargs = {} if start_date and end_date: kwargs['starting_date__range'] = (start_date, end_date) survey_result_kwargs['created_date__range'] = (start_date, end_date) if start_date and end_date == '': kwargs['starting_date__gte'] = start_date survey_result_kwargs['created_date__gte'] = start_date if start_date == '' and end_date: kwargs['starting_date__lte'] = end_date survey_result_kwargs['created_date__lte'] = end_date all_call_list = [] try: campaign_obj = Campaign.objects.get(id=int(campaign_id)) survey_result_kwargs['campaign'] = campaign_obj survey_result = get_survey_result(survey_result_kwargs) kwargs['callrequest__campaign'] = campaign_obj # List of Survey VoIP call report voipcall_list = VoIPCall.objects.filter(**kwargs) request.session['session_surveycalls_kwargs'] = kwargs all_call_list = voipcall_list.values_list('id', flat=True) # Get daily report from session while using pagination & sorting if request.GET.get('page') or request.GET.get('sort_by'): survey_cdr_daily_data = request.session[ 'session_survey_cdr_daily_data'] action = 'tabs-2' else: survey_cdr_daily_data = survey_cdr_daily_report(voipcall_list) request.session[ 'session_survey_cdr_daily_data'] = survey_cdr_daily_data rows = voipcall_list.order_by(sort_order)[start_page:end_page] except: rows = [] if request.method == 'POST': request.session["err_msg"] = _('no campaign attached with survey.') template = 'frontend/survey/survey_report.html' data = { 'rows': rows, 'all_call_list': all_call_list, 'call_count': all_call_list.count() if all_call_list else 0, 'PAGE_SIZE': PAGE_SIZE, 'SURVEY_CALL_RESULT_NAME': SURVEY_CALL_RESULT_NAME, 'col_name_with_order': pagination_data['col_name_with_order'], 'total_data': survey_cdr_daily_data['total_data'], 'total_duration': survey_cdr_daily_data['total_duration'], 'total_calls': survey_cdr_daily_data['total_calls'], 'total_avg_duration': survey_cdr_daily_data['total_avg_duration'], 'max_duration': survey_cdr_daily_data['max_duration'], 'module': current_view(request), 'msg': request.session.get('msg'), 'err_msg': request.session.get('err_msg'), 'form': form, 'survey_result': survey_result, 'action': action, 'search_tag': search_tag, 'start_date': start_date, 'end_date': end_date, 'campaign_obj': campaign_obj, } request.session['msg'] = '' request.session['err_msg'] = '' return render_to_response(template, data, context_instance=RequestContext(request))
def changelist_view(self, request, extra_context=None): """Override changelist_view method of django-admin for search parameters **Attributes**: * ``form`` - VoipSearchForm * ``template`` - admin/dialer_cdr/voipcall/change_list.html **Logic Description**: * VoIP report Record Listing with search option & Daily Call Report search Parameters: by date, by status and by billed. """ opts = VoIPCall._meta app_label = opts.app_label query_string = '' form = VoipSearchForm() if request.method == 'POST': query_string = voipcall_search_admin_form_fun(request) return HttpResponseRedirect("/admin/" + opts.app_label + "/" + \ opts.object_name.lower() + "/?" + query_string) else: status = '' from_date = '' to_date = '' if request.GET.get('starting_date__gte'): from_date = variable_value(request, 'starting_date__gte') if request.GET.get('starting_date__lte'): to_date = variable_value(request, 'starting_date__lte')[0:10] if request.GET.get('disposition__exact'): status = variable_value(request, 'disposition__exact') form = VoipSearchForm(initial={ 'status': status, 'from_date': from_date, 'to_date': to_date }) ChangeList = self.get_changelist(request) try: cl = ChangeList(request, self.model, self.list_display, self.list_display_links, self.list_filter, self.date_hierarchy, self.search_fields, self.list_select_related, self.list_per_page, self.list_max_show_all, self.list_editable, self) except IncorrectLookupParameters: if ERROR_FLAG in request.GET.keys(): return render_to_response('admin/invalid_setup.html', {'title': _('Database error')}) return HttpResponseRedirect(request.path + '?' + ERROR_FLAG + '=1') kwargs = {} if request.META['QUERY_STRING'] == '': tday = datetime.today() kwargs['starting_date__gte'] = datetime(tday.year, tday.month, tday.day, 0, 0, 0, 0) cl.root_query_set.filter(**kwargs) formset = cl.formset = None # Session variable is used to get record set with searched option into export file request.session['admin_voipcall_record_qs'] = cl.root_query_set selection_note_all = ungettext('%(total_count)s selected', 'All %(total_count)s selected', cl.result_count) ctx = { 'selection_note': _('0 of %(cnt)s selected') % { 'cnt': len(cl.result_list) }, 'selection_note_all': selection_note_all % { 'total_count': cl.result_count }, 'cl': cl, 'form': form, 'opts': opts, 'model_name': opts.object_name.lower(), 'app_label': _('VoIP Report'), 'title': _('Call Report'), } return super(VoIPCallAdmin, self)\ .changelist_view(request, extra_context=ctx)
def changelist_view(self, request, extra_context=None): """Override changelist_view method of django-admin for search parameters **Attributes**: * ``form`` - AdminSMSSearchForm * ``template`` - admin/sms_module/smsmessage/sms_report.html **Logic Description**: * SMSMessage report Record Listing with search option search Parameters: by date, by status and by billed. """ opts = SMSMessage._meta query_string = '' form = AdminSMSSearchForm() if request.method == 'POST': query_string = sms_search_admin_form_fun(request) return HttpResponseRedirect( "/admin/" + opts.app_label + "/" + opts.object_name.lower() + "/?" + query_string) else: status = '' from_date = '' to_date = '' smscampaign = '' if request.GET.get('send_date__gte'): from_date = variable_value(request, 'send_date__gte') if request.GET.get('send_date__lte'): to_date = variable_value(request, 'send_date__lte')[0:10] if request.GET.get('status__exact'): status = variable_value(request, 'status__exact') if request.GET.get('sms_campaign'): smscampaign = variable_value(request, 'sms_campaign') form = AdminSMSSearchForm(initial={'status': status, 'from_date': from_date, 'to_date': to_date, 'smscampaign': smscampaign}) ChangeList = self.get_changelist(request) try: cl = ChangeList(request, self.model, self.list_display, self.list_display_links, self.list_filter, self.date_hierarchy, self.search_fields, self.list_select_related, self.list_per_page, self.list_max_show_all, self.list_editable, self) except IncorrectLookupParameters: if ERROR_FLAG in request.GET.keys(): return render_to_response('admin/invalid_setup.html', {'title': _('Database error')}) return HttpResponseRedirect(request.path + '?' + ERROR_FLAG + '=1') kwargs = {} if request.META['QUERY_STRING'] == '': tday = datetime.utcnow().replace(tzinfo=utc) kwargs['send_date__gte'] = datetime(tday.year, tday.month, tday.day, 0, 0, 0, 0).replace(tzinfo=utc) cl.root_query_set.filter(**kwargs) cl.formset = None # Session variable is used to get record set with searched option into export file request.session['admin_sms_record_qs'] = cl.root_query_set selection_note_all = ungettext('%(total_count)s selected', 'All %(total_count)s selected', cl.result_count) ctx = { 'selection_note': _('0 of %(cnt)s selected') % {'cnt': len(cl.result_list)}, 'selection_note_all': selection_note_all % {'total_count': cl.result_count}, 'cl': cl, 'form': form, 'opts': opts, 'model_name': opts.object_name.lower(), 'app_label': _('SMS module'), 'title': _('SMS report'), } return super(SMSMessageAdmin, self).changelist_view(request, extra_context=ctx)
def changelist_view(self, request, extra_context=None): """ Override changelist_view method of django-admin for search parameters **Attributes**: * ``form`` - VoipSearchForm * ``template`` - admin/dialer_cdr/voipcall/change_list.html **Logic Description**: * VoIP report Record Listing with search option & Daily Call Report search Parameters: by date, by status and by billed. """ opts = VoIPCall._meta query_string = '' form = VoipSearchForm(request.user) if request.method == 'POST': # Session variable get record set with searched option into export file request.session['admin_voipcall_record_kwargs'] = voipcall_record_common_fun(request) query_string = voipcall_search_admin_form_fun(request) return HttpResponseRedirect("/admin/%s/%s/?%s" % (opts.app_label, opts.object_name.lower(), query_string)) else: status = '' from_date = '' to_date = '' campaign_id = '' if request.GET.get('starting_date__gte'): from_date = variable_value(request, 'starting_date__gte') if request.GET.get('starting_date__lte'): to_date = variable_value(request, 'starting_date__lte')[0:10] if request.GET.get('disposition__exact'): status = variable_value(request, 'disposition__exact') if request.GET.get('callrequest__campaign_id'): campaign_id = variable_value(request, 'callrequest__campaign_id') form = VoipSearchForm(request.user, initial={'status': status, 'from_date': from_date, 'to_date': to_date, 'campaign': campaign_id}) ChangeList = self.get_changelist(request) try: cl = ChangeList(request, self.model, self.list_display, self.list_display_links, self.list_filter, self.date_hierarchy, self.search_fields, self.list_select_related, self.list_per_page, self.list_max_show_all, self.list_editable, self) except IncorrectLookupParameters: if ERROR_FLAG in request.GET.keys(): return render_to_response('admin/invalid_setup.html', {'title': _('Database error')}) return HttpResponseRedirect('%s?%s=1' % (request.path, ERROR_FLAG)) if request.META['QUERY_STRING'] == '': # Default # Session variable get record set with searched option into export file request.session['admin_voipcall_record_kwargs'] = voipcall_record_common_fun(request) query_string = voipcall_search_admin_form_fun(request) return HttpResponseRedirect("/admin/%s/%s/?%s" % (opts.app_label, opts.object_name.lower(), query_string)) cl.formset = None selection_note_all = ungettext('%(total_count)s selected', 'All %(total_count)s selected', cl.result_count) ctx = { 'selection_note': _('0 of %(cnt)s selected') % {'cnt': len(cl.result_list)}, 'selection_note_all': selection_note_all % {'total_count': cl.result_count}, 'cl': cl, 'form': form, 'opts': opts, 'model_name': opts.object_name.lower(), 'app_label': APP_LABEL, 'title': _('call report'), } return super(VoIPCallAdmin, self).changelist_view(request, extra_context=ctx)
def survey_report(request): """ Survey detail report for the logged in user **Attributes**: * ``template`` - frontend/survey/survey_report.html **Logic Description**: * List all survey_report which belong to the logged in user. """ tday = datetime.today() from_date = tday.strftime("%Y-%m-%d") to_date = tday.strftime("%Y-%m-%d") form = SurveyDetailReportForm(request.user, initial={'from_date': from_date, 'to_date': to_date}) search_tag = 1 survey_result = '' survey_cdr_daily_data = { 'total_data': '', 'total_duration': '', 'total_calls': '', 'total_avg_duration': '', 'max_duration': '', } sort_col_field_list = ['starting_date', 'phone_number', 'duration', 'disposition', 'id'] default_sort_field = 'starting_date' pagination_data =\ get_pagination_vars(request, sort_col_field_list, default_sort_field) PAGE_SIZE = pagination_data['PAGE_SIZE'] sort_order = pagination_data['sort_order'] start_page = pagination_data['start_page'] end_page = pagination_data['end_page'] campaign_obj = '' action = 'tabs-1' if request.method == 'POST': #search_tag = 1 form = SurveyDetailReportForm(request.user, request.POST) if form.is_valid(): # set session var value request.session['session_from_date'] = '' request.session['session_to_date'] = '' request.session['session_campaign_id'] = '' request.session['session_surveycalls_kwargs'] = '' request.session['session_survey_cdr_daily_data'] = {} if "from_date" in request.POST: # From from_date = request.POST['from_date'] request.session['session_from_date'] = from_date if "to_date" in request.POST: # To to_date = request.POST['to_date'] request.session['session_to_date'] = to_date campaign_id = variable_value(request, 'campaign') if campaign_id: request.session['session_campaign_id'] = campaign_id else: rows = [] campaign_id = '' try: if request.GET.get('page') or request.GET.get('sort_by'): from_date = request.session.get('session_from_date') to_date = request.session.get('session_to_date') campaign_id = request.session.get('session_campaign_id') search_tag = request.session.get('session_search_tag') else: from_date except NameError: tday = datetime.today() from_date = tday.strftime('%Y-%m-01') last_day = ((datetime(tday.year, tday.month, 1, 23, 59, 59, 999999) + relativedelta(months=1)) - relativedelta(days=1)).strftime('%d') to_date = tday.strftime('%Y-%m-' + last_day) search_tag = 0 # unset session var value request.session['session_from_date'] = from_date request.session['session_to_date'] = to_date request.session['session_campaign_id'] = '' request.session['session_surveycalls_kwargs'] = '' request.session['session_search_tag'] = search_tag start_date = ceil_strdate(from_date, 'start') end_date = ceil_strdate(to_date, 'end') kwargs = {} if not request.user.is_superuser: kwargs['user'] = request.user kwargs['disposition__exact'] = VOIPCALL_DISPOSITION.ANSWER survey_result_kwargs = {} if start_date and end_date: kwargs['starting_date__range'] = (start_date, end_date) survey_result_kwargs['created_date__range'] = (start_date, end_date) if start_date and end_date == '': kwargs['starting_date__gte'] = start_date survey_result_kwargs['created_date__gte'] = start_date if start_date == '' and end_date: kwargs['starting_date__lte'] = end_date survey_result_kwargs['created_date__lte'] = end_date all_call_list = [] try: campaign_obj = Campaign.objects.get(id=int(campaign_id)) survey_result_kwargs['campaign'] = campaign_obj survey_result = get_survey_result(survey_result_kwargs) kwargs['callrequest__campaign'] = campaign_obj # List of Survey VoIP call report voipcall_list = VoIPCall.objects.filter(**kwargs) request.session['session_surveycalls_kwargs'] = kwargs all_call_list = voipcall_list.values_list('id', flat=True) # Get daily report from session while using pagination & sorting if request.GET.get('page') or request.GET.get('sort_by'): survey_cdr_daily_data = request.session['session_survey_cdr_daily_data'] action = 'tabs-2' else: survey_cdr_daily_data = survey_cdr_daily_report(voipcall_list) request.session['session_survey_cdr_daily_data'] = survey_cdr_daily_data rows = voipcall_list.order_by(sort_order)[start_page:end_page] except: rows = [] if request.method == 'POST': request.session["err_msg"] = _('no campaign attached with survey.') template = 'frontend/survey/survey_report.html' data = { 'rows': rows, 'all_call_list': all_call_list, 'call_count': all_call_list.count() if all_call_list else 0, 'PAGE_SIZE': PAGE_SIZE, 'SURVEY_CALL_RESULT_NAME': SURVEY_CALL_RESULT_NAME, 'col_name_with_order': pagination_data['col_name_with_order'], 'total_data': survey_cdr_daily_data['total_data'], 'total_duration': survey_cdr_daily_data['total_duration'], 'total_calls': survey_cdr_daily_data['total_calls'], 'total_avg_duration': survey_cdr_daily_data['total_avg_duration'], 'max_duration': survey_cdr_daily_data['max_duration'], 'module': current_view(request), 'msg': request.session.get('msg'), 'err_msg': request.session.get('err_msg'), 'form': form, 'survey_result': survey_result, 'action': action, 'search_tag': search_tag, 'start_date': start_date, 'end_date': end_date, 'campaign_obj': campaign_obj, } request.session['msg'] = '' request.session['err_msg'] = '' return render_to_response(template, data, context_instance=RequestContext(request))
def voipcall_report(request): """VoIP Call Report **Attributes**: * ``form`` - VoipSearchForm * ``template`` - frontend/report/voipcall_report.html **Logic Description**: * Get VoIP call list according to search parameters for loggedin user **Important variable**: * ``request.session['voipcall_record_qs']`` - stores voipcall query set """ kwargs = {} kwargs['user'] = User.objects.get(username=request.user) from_date = '' to_date = '' disposition = variable_value(request, 'status') form = VoipSearchForm() if request.method == 'POST': if request.POST['from_date'] != "": from_date = request.POST['from_date'] if request.POST['to_date'] != "": to_date = request.POST['to_date'] form = VoipSearchForm(request.POST) kwargs = voipcall_record_common_fun(request) else: tday = datetime.today() kwargs['starting_date__gte'] = datetime(tday.year, tday.month, tday.day, 0, 0, 0, 0) voipcall_list = \ VoIPCall.objects.filter(**kwargs).order_by('-starting_date') # Session variable is used to get record set with searched option # into export file request.session['voipcall_record_qs'] = voipcall_list select_data = \ {"starting_date": "SUBSTR(CAST(starting_date as CHAR(30)),1,10)"} # Get Total Rrecords from VoIPCall Report table for Daily Call Report total_data = VoIPCall.objects.extra(select=select_data)\ .values('starting_date')\ .filter(**kwargs).annotate(Count('starting_date'))\ .annotate(Sum('duration'))\ .annotate(Avg('duration'))\ .order_by('-starting_date') # Following code will count total voip calls, duration if total_data.count() != 0: max_duration = \ max([x['duration__sum'] for x in total_data]) total_duration = \ sum([x['duration__sum'] for x in total_data]) total_calls = \ sum([x['starting_date__count'] for x in total_data]) total_avg_duration = \ (sum([x['duration__avg']\ for x in total_data])) / total_data.count() else: max_duration = 0 total_duration = 0 total_calls = 0 total_avg_duration = 0 template = 'frontend/report/voipcall_report.html' data = { 'form': form, 'from_date': from_date, 'to_date': to_date, 'disposition': disposition, 'total_data': total_data.reverse(), 'total_duration': total_duration, 'total_calls': total_calls, 'total_avg_duration': total_avg_duration, 'max_duration': max_duration, 'module': current_view(request), 'notice_count': notice_count(request), 'dialer_setting_msg': user_dialer_setting_msg(request.user), } return render_to_response(template, data, context_instance=RequestContext(request))
def customer_detail_change(request): """User Detail change on Customer UI **Attributes**: * ``form`` - UserChangeDetailForm, UserChangeDetailExtendForm, PasswordChangeForm * ``template`` - 'cdr/registration/user_detail_change.html' **Logic Description**: * User is able to change his/her detail. """ if not request.user.is_superuser: # not superuser if not chk_account_code(request): return HttpResponseRedirect('/?acc_code_error=true') user_detail = User.objects.get(username=request.user) try: user_detail_extened = UserProfile.objects.get(user=user_detail) except UserProfile.DoesNotExist: #create UserProfile user_detail_extened = UserProfile(user=user_detail) user_detail_extened.save() user_detail_form = UserChangeDetailForm(request.user, instance=user_detail) user_detail_extened_form = UserChangeDetailExtendForm(request.user, instance=user_detail_extened) user_password_form = PasswordChangeForm(user=request.user) check_phone_no_form = CheckPhoneNumberForm() try: user_ds = UserProfile.objects.get(user=request.user) except: dialer_set = '' # Define no of records per page PAGE_SIZE = settings.PAGE_SIZE try: PAGE_NUMBER = int(request.GET['page']) except: PAGE_NUMBER = 1 col_name_with_order = {} # default col_name_with_order['message'] = '-message' col_name_with_order['notice_type'] = '-notice_type' col_name_with_order['sender'] = '-sender' col_name_with_order['added'] = '-added' sort_field = variable_value(request, 'sort_by') if not sort_field: sort_field = 'message' # default sort field sort_order = '-' + sort_field # desc else: if "-" in sort_field: sort_order = sort_field col_name_with_order[sort_field] = sort_field[1:] else: sort_order = sort_field col_name_with_order[sort_field] = '-' + sort_field user_notification = \ notification.Notice.objects.filter(recipient=request.user) # Search on sender name q = (Q(sender=request.user)) if q: user_notification = user_notification.filter(q) user_notification = user_notification.order_by(sort_order) msg_detail = '' msg_pass = '' msg_number = '' msg_note = '' error_detail = '' error_pass = '' error_number = '' action = '' if 'action' in request.GET: action = request.GET['action'] if request.GET.get('msg_note') == 'true': msg_note = request.session['msg_note'] # Mark all notification as read if request.GET.get('notification') == 'mark_read_all': notification_list = notification.Notice.objects.filter(unseen=1, recipient=request.user) notification_list.update(unseen=0) msg_note = _('All notifications are marked as read.') if request.method == 'POST': if request.POST['form-type'] == "change-detail": user_detail_form = UserChangeDetailForm(request.user, request.POST, instance=user_detail) user_detail_extened_form = UserChangeDetailExtendForm(request.user, request.POST, instance=user_detail_extened) action = 'tabs-1' if user_detail_form.is_valid() and user_detail_extened_form.is_valid(): user_detail_form.save() user_detail_extened_form.save() msg_detail = _('Detail has been changed.') else: error_detail = _('Please correct the errors below.') else: # "change-password" user_password_form = PasswordChangeForm(user=request.user, data=request.POST) action = 'tabs-2' if user_password_form.is_valid(): user_password_form.save() msg_pass = _('Your password has been changed.') else: error_pass = _('Please correct the errors below.') template = 'cdr/registration/user_detail_change.html' data = { 'module': current_view(request), 'user_detail_form': user_detail_form, 'user_detail_extened_form': user_detail_extened_form, 'user_password_form': user_password_form, 'user_notification': user_notification, 'PAGE_SIZE': PAGE_SIZE, 'msg_detail': msg_detail, 'msg_pass': msg_pass, 'msg_note': msg_note, 'error_detail': error_detail, 'error_pass': error_pass, 'notice_count': notice_count(request), 'action': action, 'col_name_with_order': col_name_with_order, } return render_to_response(template, data, context_instance=RequestContext(request))
def survey_report(request): """ Survey detail report for the logged in user **Attributes**: * ``template`` - frontend/survey/survey_report.html **Logic Description**: * List all survey_report which belong to the logged in user. """ tday = datetime.today() from_date = tday.strftime("%Y-%m-%d") to_date = tday.strftime("%Y-%m-%d") form = SurveyDetailReportForm(request.user, initial={"from_date": from_date, "to_date": to_date}) search_tag = 1 survey_result = "" survey_cdr_daily_data = { "total_data": "", "total_duration": "", "total_calls": "", "total_avg_duration": "", "max_duration": "", } sort_col_field_list = ["starting_date", "phone_number", "duration", "disposition", "id"] default_sort_field = "starting_date" pagination_data = get_pagination_vars(request, sort_col_field_list, default_sort_field) PAGE_SIZE = pagination_data["PAGE_SIZE"] sort_order = pagination_data["sort_order"] start_page = pagination_data["start_page"] end_page = pagination_data["end_page"] survey_id = "" action = "tabs-1" campaign_obj = "" if request.method == "POST": # search_tag = 1 form = SurveyDetailReportForm(request.user, request.POST) if form.is_valid(): # set session var value request.session["session_from_date"] = "" request.session["session_to_date"] = "" request.session["session_survey_id"] = "" request.session["session_surveycalls_kwargs"] = "" request.session["session_survey_cdr_daily_data"] = {} if "from_date" in request.POST: # From from_date = request.POST["from_date"] request.session["session_from_date"] = from_date if "to_date" in request.POST: # To to_date = request.POST["to_date"] request.session["session_to_date"] = to_date survey_id = variable_value(request, "survey_id") if survey_id: request.session["session_survey_id"] = survey_id else: rows = [] survey_id = "" try: if request.GET.get("page") or request.GET.get("sort_by"): from_date = request.session.get("session_from_date") to_date = request.session.get("session_to_date") survey_id = request.session.get("session_survey_id") search_tag = request.session.get("session_search_tag") else: from_date except NameError: tday = datetime.utcnow().replace(tzinfo=utc) from_date = tday.strftime("%Y-%m-01") last_day = ( (datetime(tday.year, tday.month, 1, 23, 59, 59, 999999).replace(tzinfo=utc) + relativedelta(months=1)) - relativedelta(days=1) ).strftime("%d") to_date = tday.strftime("%Y-%m-" + last_day) search_tag = 0 # unset session var value request.session["session_from_date"] = from_date request.session["session_to_date"] = to_date request.session["session_survey_id"] = "" request.session["session_surveycalls_kwargs"] = "" request.session["session_search_tag"] = search_tag start_date = ceil_strdate(from_date, "start") end_date = ceil_strdate(to_date, "end") kwargs = {} if not request.user.is_superuser: kwargs["user"] = request.user kwargs["disposition__exact"] = VOIPCALL_DISPOSITION.ANSWER survey_result_kwargs = {} if start_date and end_date: kwargs["starting_date__range"] = (start_date, end_date) survey_result_kwargs["created_date__range"] = (start_date, end_date) if start_date and end_date == "": kwargs["starting_date__gte"] = start_date survey_result_kwargs["created_date__gte"] = start_date if start_date == "" and end_date: kwargs["starting_date__lte"] = end_date survey_result_kwargs["created_date__lte"] = end_date all_call_list = [] try: survey_result_kwargs["survey_id"] = survey_id survey_result = get_survey_result(survey_result_kwargs) campaign_obj = Survey.objects.get(id=int(survey_id)).campaign kwargs["callrequest__campaign"] = campaign_obj # List of Survey VoIP call report voipcall_list = VoIPCall.objects.filter(**kwargs) request.session["session_surveycalls_kwargs"] = kwargs all_call_list = voipcall_list.values_list("id", flat=True) # Get daily report from session while using pagination & sorting if request.GET.get("page") or request.GET.get("sort_by"): survey_cdr_daily_data = request.session["session_survey_cdr_daily_data"] action = "tabs-2" else: survey_cdr_daily_data = survey_cdr_daily_report(voipcall_list) request.session["session_survey_cdr_daily_data"] = survey_cdr_daily_data rows = voipcall_list.order_by(sort_order)[start_page:end_page] except: rows = [] if request.method == "POST": request.session["err_msg"] = _("no campaign attached with survey.") template = "frontend/survey/survey_report.html" data = { "rows": rows, "all_call_list": all_call_list, "call_count": all_call_list.count() if all_call_list else 0, "PAGE_SIZE": PAGE_SIZE, "SURVEY_CALL_RESULT_NAME": SURVEY_CALL_RESULT_NAME, "col_name_with_order": pagination_data["col_name_with_order"], "total_data": survey_cdr_daily_data["total_data"], "total_duration": survey_cdr_daily_data["total_duration"], "total_calls": survey_cdr_daily_data["total_calls"], "total_avg_duration": survey_cdr_daily_data["total_avg_duration"], "max_duration": survey_cdr_daily_data["max_duration"], "msg": request.session.get("msg"), "err_msg": request.session.get("err_msg"), "form": form, "survey_result": survey_result, "action": action, "search_tag": search_tag, "start_date": start_date, "end_date": end_date, "campaign_obj": campaign_obj, } request.session["msg"] = "" request.session["err_msg"] = "" return render_to_response(template, data, context_instance=RequestContext(request))
def survey_report(request): """Survey detail report for the logged in user **Attributes**: * ``template`` - frontend/survey/survey_report.html **Logic Description**: * List all survey_report which belong to the logged in user. """ tday = datetime.today() from_date = tday.strftime("%Y-%m-%d") to_date = tday.strftime("%Y-%m-%d") form = SurveyDetailReportForm(request.user, initial={'from_date': from_date, 'to_date': to_date}) search_tag = 1 survey_result = '' col_name_with_order = [] survey_cdr_daily_data = { 'total_data': '', 'total_duration': '', 'total_calls': '', 'total_avg_duration': '', 'max_duration': '', } PAGE_SIZE = settings.PAGE_SIZE action = 'tabs-1' if request.method == 'POST': #search_tag = 1 form = SurveyDetailReportForm(request.user, request.POST) if form.is_valid(): # set session var value request.session['session_from_date'] = '' request.session['session_to_date'] = '' request.session['session_campaign_id'] = '' request.session['session_surveycalls'] = '' request.session['session_survey_result'] = '' request.session['session_survey_cdr_daily_data'] = {} if "from_date" in request.POST: # From from_date = request.POST['from_date'] start_date = datetime(int(from_date[0:4]), int(from_date[5:7]), int(from_date[8:10]), 0, 0, 0, 0) request.session['session_from_date'] = from_date if "to_date" in request.POST: # To to_date = request.POST['to_date'] end_date = datetime(int(to_date[0:4]), int(to_date[5:7]), int(to_date[8:10]), 23, 59, 59, 999999) request.session['session_to_date'] = to_date campaign_id = variable_value(request, 'campaign') if campaign_id: request.session['session_campaign_id'] = campaign_id else: rows = [] campaign_id = '' try: if request.GET.get('page') or request.GET.get('sort_by'): from_date = request.session.get('session_from_date') to_date = request.session.get('session_to_date') campaign_id = request.session.get('session_campaign_id') search_tag = request.session.get('session_search_tag') else: from_date except NameError: tday = datetime.today() from_date = tday.strftime('%Y-%m-01') last_day = ((datetime(tday.year, tday.month, 1, 23, 59, 59, 999999) + \ relativedelta(months=1)) - \ relativedelta(days=1)).strftime('%d') to_date = tday.strftime('%Y-%m-' + last_day) search_tag = 0 # unset session var value request.session['session_from_date'] = from_date request.session['session_to_date'] = to_date request.session['session_campaign_id'] = '' request.session['session_surveycalls'] = '' request.session['session_survey_result'] = '' request.session['session_search_tag'] = search_tag start_date = datetime(int(from_date[0:4]), int(from_date[5:7]), int(from_date[8:10]), 0, 0, 0, 0) end_date = datetime(int(to_date[0:4]), int(to_date[5:7]), int(to_date[8:10]), 23, 59, 59, 999999) kwargs = {} kwargs['user'] = request.user kwargs['disposition__exact'] = 'ANSWER' survey_result_kwargs = {} survey_result_kwargs['callrequest__user'] = request.user if start_date and end_date: kwargs['starting_date__range'] = (start_date, end_date) survey_result_kwargs['created_date__range'] = (start_date, end_date) if start_date and end_date == '': kwargs['starting_date__gte'] = start_date survey_result_kwargs['created_date__gte'] = start_date if start_date == '' and end_date: kwargs['starting_date__lte'] = end_date survey_result_kwargs['created_date__lte'] = end_date try: campaign_id = int(campaign_id) campaign_obj = Campaign.objects.get(id=campaign_id) survey_result_kwargs['campaign'] = campaign_obj survey_result_kwargs['callrequest__status'] = 4 # Get survey result report from session # while using pagination & sorting if request.GET.get('page') or request.GET.get('sort_by'): survey_result = request.session['session_survey_result'] else: survey_result = get_survey_result(survey_result_kwargs) request.session['session_survey_result'] = survey_result kwargs['callrequest__campaign'] = campaign_obj # sorting on column col_name_with_order = {} sort_field = variable_value(request, 'sort_by') if not sort_field: sort_field = '-starting_date' # default sort field else: if "-" in sort_field: col_name_with_order['sort_field'] = sort_field[1:] else: col_name_with_order['sort_field'] = sort_field # List of Survey VoIP call report from_query =\ 'FROM survey_surveycampaignresult '\ 'WHERE survey_surveycampaignresult.callrequest_id = '\ 'dialer_callrequest.id ' select_group_query = 'SELECT group_concat(CONCAT_WS("*|*", question, response, record_file) SEPARATOR "-|-") ' rows = VoIPCall.objects\ .only('starting_date', 'phone_number', 'duration', 'disposition')\ .filter(**kwargs)\ .extra( select={ 'question_response': select_group_query + from_query }, ).order_by(sort_field) request.session['session_surveycalls'] = rows # Get daily report from session while using pagination & sorting if request.GET.get('page') or request.GET.get('sort_by'): survey_cdr_daily_data = \ request.session['session_survey_cdr_daily_data'] else: survey_cdr_daily_data = survey_cdr_daily_report(kwargs, from_query, select_group_query) request.session['session_survey_cdr_daily_data'] = \ survey_cdr_daily_data except: rows = [] if request.method == 'POST': request.session["err_msg"] = \ _('No campaign attached with survey.') template = 'frontend/survey/survey_report.html' data = { 'rows': rows, 'PAGE_SIZE': PAGE_SIZE, 'col_name_with_order': col_name_with_order, 'total_data': survey_cdr_daily_data['total_data'], 'total_duration': survey_cdr_daily_data['total_duration'], 'total_calls': survey_cdr_daily_data['total_calls'], 'total_avg_duration': survey_cdr_daily_data['total_avg_duration'], 'max_duration': survey_cdr_daily_data['max_duration'], 'module': current_view(request), 'msg': request.session.get('msg'), 'err_msg': request.session.get('err_msg'), 'notice_count': notice_count(request), 'form': form, 'survey_result': survey_result, 'action': action, 'search_tag': search_tag, 'start_date': start_date, 'end_date': end_date, } request.session['msg'] = '' request.session['err_msg'] = '' return render_to_response(template, data, context_instance=RequestContext(request))
def subscriber_report(self, request): """ Get subscriber report **Attributes**: * ``form`` - SubscriberReportForm * ``template`` - admin/dialer_campaign/subscriber/subscriber_report.html """ opts = Subscriber._meta tday = datetime.today() form = SubscriberReportForm(initial={"from_date": tday.strftime("%Y-%m-%d"), "to_date": tday.strftime("%Y-%m-%d")}) total_subscriber = 0 total_pending = 0 total_pause = 0 total_abort = 0 total_fail = 0 total_sent = 0 total_in_process = 0 total_not_auth = 0 total_completed = 0 if request.method == 'POST': form = SubscriberReportForm(request.POST) if form.is_valid(): start_date = '' end_date = '' if request.POST.get('from_date'): from_date = request.POST.get('from_date') start_date = ceil_strdate(from_date, 'start') if request.POST.get('to_date'): to_date = request.POST.get('to_date') end_date = ceil_strdate(to_date, 'end') campaign_id = variable_value(request, 'campaign_id') kwargs = {} if start_date and end_date: kwargs['updated_date__range'] = (start_date, end_date) if start_date and end_date == '': kwargs['updated_date__gte'] = start_date if start_date == '' and end_date: kwargs['updated_date__lte'] = end_date if campaign_id and campaign_id != '0': kwargs['campaign_id'] = campaign_id select_data = {"updated_date": "SUBSTR(CAST(updated_date as CHAR(30)),1,10)"} subscriber = Subscriber.objects\ .filter(**kwargs)\ .extra(select=select_data)\ .values('updated_date', 'status')\ .annotate(Count('updated_date'))\ .order_by('updated_date') for i in subscriber: total_subscriber += i['updated_date__count'] if i['status'] == SUBSCRIBER_STATUS.PENDING: total_pending += i['updated_date__count'] elif i['status'] == SUBSCRIBER_STATUS.PAUSE: total_pause += i['updated_date__count'] elif i['status'] == SUBSCRIBER_STATUS.ABORT: total_abort += i['updated_date__count'] elif i['status'] == SUBSCRIBER_STATUS.FAIL: total_fail += i['updated_date__count'] elif i['status'] == SUBSCRIBER_STATUS.SENT: total_sent += i['updated_date__count'] elif i['status'] == SUBSCRIBER_STATUS.IN_PROCESS: total_in_process += i['updated_date__count'] elif i['status'] == SUBSCRIBER_STATUS.NOT_AUTHORIZED: total_not_auth += i['updated_date__count'] else: #status COMPLETED total_completed += i['updated_date__count'] ctx = RequestContext(request, { 'form': form, 'opts': opts, 'total_subscriber': total_subscriber, 'total_pending': total_pending, 'total_pause': total_pause, 'total_abort': total_abort, 'total_fail': total_fail, 'total_sent': total_sent, 'total_in_process': total_in_process, 'total_not_auth': total_not_auth, 'total_completed': total_completed, 'SUBSCRIBER_STATUS_NAME': SUBSCRIBER_STATUS_NAME, 'model_name': opts.object_name.lower(), 'app_label': APP_LABEL, 'title': _('subscriber report'), }) return render_to_response('admin/dialer_campaign/subscriber/subscriber_report.html', context_instance=ctx)
def customer_detail_change(request): """User Detail change on Customer UI **Attributes**: * ``form`` - UserChangeDetailForm, UserChangeDetailExtendForm, PasswordChangeForm * ``template`` - 'cdr/registration/user_detail_change.html' **Logic Description**: * User is able to change his/her detail. """ if not request.user.is_superuser: # not superuser if not chk_account_code(request): return HttpResponseRedirect('/?acc_code_error=true') user_detail = User.objects.get(username=request.user) try: user_detail_extened = UserProfile.objects.get(user=user_detail) except UserProfile.DoesNotExist: #create UserProfile user_detail_extened = UserProfile(user=user_detail) user_detail_extened.save() user_detail_form = UserChangeDetailForm(request.user, instance=user_detail) user_detail_extened_form = UserChangeDetailExtendForm( request.user, instance=user_detail_extened) user_password_form = PasswordChangeForm(user=request.user) check_phone_no_form = CheckPhoneNumberForm() try: user_ds = UserProfile.objects.get(user=request.user) except: dialer_set = '' # Define no of records per page PAGE_SIZE = settings.PAGE_SIZE try: PAGE_NUMBER = int(request.GET['page']) except: PAGE_NUMBER = 1 col_name_with_order = {} # default col_name_with_order['message'] = '-message' col_name_with_order['notice_type'] = '-notice_type' col_name_with_order['sender'] = '-sender' col_name_with_order['added'] = '-added' sort_field = variable_value(request, 'sort_by') if not sort_field: sort_field = 'message' # default sort field sort_order = '-' + sort_field # desc else: if "-" in sort_field: sort_order = sort_field col_name_with_order[sort_field] = sort_field[1:] else: sort_order = sort_field col_name_with_order[sort_field] = '-' + sort_field user_notification = \ notification.Notice.objects.filter(recipient=request.user) # Search on sender name q = (Q(sender=request.user)) if q: user_notification = user_notification.filter(q) user_notification = user_notification.order_by(sort_order) msg_detail = '' msg_pass = '' msg_number = '' msg_note = '' error_detail = '' error_pass = '' error_number = '' action = '' if 'action' in request.GET: action = request.GET['action'] if request.GET.get('msg_note') == 'true': msg_note = request.session['msg_note'] # Mark all notification as read if request.GET.get('notification') == 'mark_read_all': notification_list = notification.Notice.objects.filter( unseen=1, recipient=request.user) notification_list.update(unseen=0) msg_note = _('All notifications are marked as read.') if request.method == 'POST': if request.POST['form-type'] == "change-detail": user_detail_form = UserChangeDetailForm(request.user, request.POST, instance=user_detail) user_detail_extened_form = UserChangeDetailExtendForm( request.user, request.POST, instance=user_detail_extened) action = 'tabs-1' if user_detail_form.is_valid( ) and user_detail_extened_form.is_valid(): user_detail_form.save() user_detail_extened_form.save() msg_detail = _('Detail has been changed.') else: error_detail = _('Please correct the errors below.') else: # "change-password" user_password_form = PasswordChangeForm(user=request.user, data=request.POST) action = 'tabs-2' if user_password_form.is_valid(): user_password_form.save() msg_pass = _('Your password has been changed.') else: error_pass = _('Please correct the errors below.') template = 'cdr/registration/user_detail_change.html' data = { 'module': current_view(request), 'user_detail_form': user_detail_form, 'user_detail_extened_form': user_detail_extened_form, 'user_password_form': user_password_form, 'user_notification': user_notification, 'PAGE_SIZE': PAGE_SIZE, 'msg_detail': msg_detail, 'msg_pass': msg_pass, 'msg_note': msg_note, 'error_detail': error_detail, 'error_pass': error_pass, 'notice_count': notice_count(request), 'action': action, 'col_name_with_order': col_name_with_order, } return render_to_response(template, data, context_instance=RequestContext(request))
def survey_report(request): """Survey detail report for the logged in user **Attributes**: * ``template`` - frontend/survey/survey_report.html **Logic Description**: * List all survey_report which belong to the logged in user. """ tday = datetime.today() from_date = tday.strftime("%Y-%m-%d") to_date = tday.strftime("%Y-%m-%d") form = SurveyDetailReportForm(request.user, initial={ 'from_date': from_date, 'to_date': to_date }) search_tag = 1 survey_result = '' col_name_with_order = [] survey_cdr_daily_data = { 'total_data': '', 'total_duration': '', 'total_calls': '', 'total_avg_duration': '', 'max_duration': '', } PAGE_SIZE = settings.PAGE_SIZE action = 'tabs-1' if request.method == 'POST': #search_tag = 1 form = SurveyDetailReportForm(request.user, request.POST) if form.is_valid(): # set session var value request.session['session_from_date'] = '' request.session['session_to_date'] = '' request.session['session_campaign_id'] = '' request.session['session_surveycalls'] = '' request.session['session_survey_result'] = '' request.session['session_survey_cdr_daily_data'] = {} if "from_date" in request.POST: # From from_date = request.POST['from_date'] start_date = datetime(int(from_date[0:4]), int(from_date[5:7]), int(from_date[8:10]), 0, 0, 0, 0) request.session['session_from_date'] = from_date if "to_date" in request.POST: # To to_date = request.POST['to_date'] end_date = datetime(int(to_date[0:4]), int(to_date[5:7]), int(to_date[8:10]), 23, 59, 59, 999999) request.session['session_to_date'] = to_date campaign_id = variable_value(request, 'campaign') if campaign_id: request.session['session_campaign_id'] = campaign_id else: rows = [] campaign_id = '' try: if request.GET.get('page') or request.GET.get('sort_by'): from_date = request.session.get('session_from_date') to_date = request.session.get('session_to_date') campaign_id = request.session.get('session_campaign_id') search_tag = request.session.get('session_search_tag') else: from_date except NameError: tday = datetime.today() from_date = tday.strftime('%Y-%m-01') last_day = ((datetime(tday.year, tday.month, 1, 23, 59, 59, 999999) + \ relativedelta(months=1)) - \ relativedelta(days=1)).strftime('%d') to_date = tday.strftime('%Y-%m-' + last_day) search_tag = 0 # unset session var value request.session['session_from_date'] = from_date request.session['session_to_date'] = to_date request.session['session_campaign_id'] = '' request.session['session_surveycalls'] = '' request.session['session_survey_result'] = '' request.session['session_search_tag'] = search_tag start_date = datetime(int(from_date[0:4]), int(from_date[5:7]), int(from_date[8:10]), 0, 0, 0, 0) end_date = datetime(int(to_date[0:4]), int(to_date[5:7]), int(to_date[8:10]), 23, 59, 59, 999999) kwargs = {} kwargs['user'] = request.user kwargs['disposition__exact'] = 'ANSWER' survey_result_kwargs = {} survey_result_kwargs['callrequest__user'] = request.user if start_date and end_date: kwargs['starting_date__range'] = (start_date, end_date) survey_result_kwargs['created_date__range'] = (start_date, end_date) if start_date and end_date == '': kwargs['starting_date__gte'] = start_date survey_result_kwargs['created_date__gte'] = start_date if start_date == '' and end_date: kwargs['starting_date__lte'] = end_date survey_result_kwargs['created_date__lte'] = end_date try: campaign_id = int(campaign_id) campaign_obj = Campaign.objects.get(id=campaign_id) survey_result_kwargs['campaign'] = campaign_obj survey_result_kwargs['callrequest__status'] = 4 # Get survey result report from session # while using pagination & sorting if request.GET.get('page') or request.GET.get('sort_by'): survey_result = request.session['session_survey_result'] else: survey_result = get_survey_result(survey_result_kwargs) request.session['session_survey_result'] = survey_result kwargs['callrequest__campaign'] = campaign_obj # sorting on column col_name_with_order = {} sort_field = variable_value(request, 'sort_by') if not sort_field: sort_field = '-starting_date' # default sort field else: if "-" in sort_field: col_name_with_order['sort_field'] = sort_field[1:] else: col_name_with_order['sort_field'] = sort_field # List of Survey VoIP call report from_query =\ 'FROM survey_surveycampaignresult '\ 'WHERE survey_surveycampaignresult.callrequest_id = '\ 'dialer_callrequest.id ' select_group_query = 'SELECT group_concat(CONCAT_WS("*|*", question, response, record_file) SEPARATOR "-|-") ' rows = VoIPCall.objects\ .only('starting_date', 'phone_number', 'duration', 'disposition')\ .filter(**kwargs)\ .extra( select={ 'question_response': select_group_query + from_query }, ).order_by(sort_field) request.session['session_surveycalls'] = rows # Get daily report from session while using pagination & sorting if request.GET.get('page') or request.GET.get('sort_by'): survey_cdr_daily_data = \ request.session['session_survey_cdr_daily_data'] else: survey_cdr_daily_data = survey_cdr_daily_report( kwargs, from_query, select_group_query) request.session['session_survey_cdr_daily_data'] = \ survey_cdr_daily_data except: rows = [] if request.method == 'POST': request.session["err_msg"] = \ _('No campaign attached with survey.') template = 'frontend/survey/survey_report.html' data = { 'rows': rows, 'PAGE_SIZE': PAGE_SIZE, 'col_name_with_order': col_name_with_order, 'total_data': survey_cdr_daily_data['total_data'], 'total_duration': survey_cdr_daily_data['total_duration'], 'total_calls': survey_cdr_daily_data['total_calls'], 'total_avg_duration': survey_cdr_daily_data['total_avg_duration'], 'max_duration': survey_cdr_daily_data['max_duration'], 'module': current_view(request), 'msg': request.session.get('msg'), 'err_msg': request.session.get('err_msg'), 'notice_count': notice_count(request), 'form': form, 'survey_result': survey_result, 'action': action, 'search_tag': search_tag, 'start_date': start_date, 'end_date': end_date, } request.session['msg'] = '' request.session['err_msg'] = '' return render_to_response(template, data, context_instance=RequestContext(request))