def test_survey_forms(self): self.assertEqual(self.survey_template.name, "test_survey") #self.assertEqual(self.section_template.survey, self.survey_template) self.assertEqual(self.branching_template.section, self.section_template) self.assertEqual(self.result.section, self.section) form = PlayMessageSectionForm(self.user, instance=self.section_template) obj = form.save(commit=False) obj.question = "test question" obj.type = 1 obj.survey = self.survey_template obj.save() form = MultipleChoiceSectionForm(self.user, instance=self.section_template) obj = form.save(commit=False) obj.type = 2 obj.question = "test question" obj.key_0 = "apple" obj.survey = self.survey_template obj.save() form = RatingSectionForm(self.user, instance=self.section_template) obj = form.save(commit=False) obj.type = 3 obj.question = "test question" obj.rating_laps = 5 obj.survey_template = self.survey_template obj.save() form = CaptureDigitsSectionForm(self.user, instance=self.section_template) obj = form.save(commit=False) obj.type = 4 obj.question = "test question" obj.number_digits = 2 obj.min_number = 1 obj.max_number = 100 obj.survey = self.survey_template obj.save() form = RecordMessageSectionForm(self.user) obj = form.save(commit=False) obj.type = 5 obj.question = "test question" obj.survey = self.survey_template obj.save() form = CallTransferSectionForm(self.user) obj = form.save(commit=False) obj.type = 6 obj.question = "test question" obj.phonenumber = 1234567890 obj.survey = self.survey_template obj.save() form = SMSSectionForm(self.user) obj = form.save(commit=False) obj.type = 10 obj.question = "sms question" obj.sms_text = "this is test sms" obj.survey = self.survey_template obj.save() form = ScriptForm() obj = form.save(commit=False) obj.script = 'xyz' obj.survey = self.survey_template obj.save() form = SurveyDetailReportForm(self.user)
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 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 survey_report(request): """ Survey detail report for the logged in user **Attributes**: * ``template`` - survey/survey_report.html * ``form`` - SurveyDetailReportForm **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, request.POST or None, initial={'from_date': from_date, 'to_date': to_date}) 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'] pag_vars = get_pagination_vars(request, sort_col_field_list, default_sort_field='starting_date') survey_id = '' action = 'tabs-1' campaign_obj = '' rows = [] survey_id = '' post_var_with_page = 0 if form.is_valid(): post_var_with_page = 1 # set session var value request.session['session_surveycalls_kwargs'] = {} request.session['session_survey_cdr_daily_data'] = {} # set session var value field_list = ['from_date', 'to_date', 'survey_id'] unset_session_var(request, field_list) from_date = getvar(request, 'from_date') to_date = getvar(request, 'to_date') start_date = ceil_strdate(str(from_date), 'start') end_date = ceil_strdate(str(to_date), 'end') converted_start_date = start_date.strftime('%Y-%m-%d') converted_end_date = end_date.strftime('%Y-%m-%d') request.session['session_start_date'] = converted_start_date request.session['session_end_date'] = converted_end_date survey_id = getvar(request, 'survey_id', setsession=True) if request.GET.get('page') or request.GET.get('sort_by'): post_var_with_page = 1 start_date = request.session.get('session_start_date') end_date = request.session.get('session_end_date') start_date = ceil_strdate(start_date, 'start') end_date = ceil_strdate(end_date, 'end') survey_id = request.session.get('session_survey_id') form = SurveyDetailReportForm(request.user, initial={'from_date': start_date.strftime('%Y-%m-%d'), 'to_date': end_date.strftime('%Y-%m-%d'), 'survey_id': survey_id}) if post_var_with_page == 0: # default # unset session var 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) start_date = ceil_strdate(from_date, 'start') end_date = ceil_strdate(to_date, 'end') # 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'] = '' kwargs = {} if not request.user.is_superuser: kwargs['user'] = request.user kwargs['disposition__exact'] = CALL_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(pag_vars['sort_order'])[pag_vars['start_page']:pag_vars['end_page']] except: rows = [] if request.method == 'POST': request.session["err_msg"] = _('no campaign attached with survey.') data = { 'rows': rows, 'all_call_list': all_call_list, 'call_count': all_call_list.count() if all_call_list else 0, 'SURVEY_CALL_RESULT_NAME': SURVEY_CALL_RESULT_NAME, 'col_name_with_order': pag_vars['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, 'start_date': start_date, 'end_date': end_date, 'campaign_obj': campaign_obj, } request.session['msg'] = '' request.session['err_msg'] = '' return render_to_response('survey/survey_report.html', 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 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 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))