コード例 #1
0
    def export_message_tracker_details_to_excel(modeladmin, request, query_set):
        headers = ["Organization Name", "Organization Id","Type", "Month", "Total Incoming Submissions (In total)", "Total Incoming Submissions",
                   "Total SMS (incoming and outgoing)", "Outgoing Charged SMS: Total", "Outgoing SMS: Auto Reply", "Outgoing Charged SMS: Auto Reply",
                   "Outgoing SMS: Reminders", "Outgoing Charged SMS: Reminders", "Outgoing SMS: Send Message", "Outgoing Charged SMS: Send Message",
                   "Outgoing SMS: API", "Outgoing Charged SMS: API", "SMS Submissions", "SP Submissions", "Web Submissions", "SMS Subject Registration"]
        list = []

        textSearchFilter = get_text_search_filter(request.GET,MessageTrackerAdmin.search_fields)
        adminPanelFilter = get_admin_panel_filter(request.GET)

        filteredSms = MessageTracker.objects.all().filter(Q(**adminPanelFilter) & (textSearchFilter))
        for messageTracker in filteredSms:
            sms_tracker_month = ExcelDate(datetime.datetime.combine(messageTracker.month, datetime.datetime.min.time()),
                                          'dd.mm.yyyy') if messageTracker.month else None

            list.append([modeladmin.organization_name(messageTracker), modeladmin.organization_id(messageTracker),
                         modeladmin.type(messageTracker),
                         sms_tracker_month, messageTracker.total_incoming_in_total(),
                         messageTracker.total_monthly_incoming_messages(),
                         messageTracker.total_messages(), messageTracker.outgoing_message_count(),
                         messageTracker.outgoing_sms_count, messageTracker.outgoing_sms_charged_count,
                         messageTracker.sent_reminders_count, messageTracker.sent_reminders_charged_count,
                         messageTracker.send_message_count,
                         messageTracker.send_message_charged_count, messageTracker.sms_api_usage_count,
                         messageTracker.sms_api_usage_charged_count,
                         modeladmin.sms_submission(messageTracker), messageTracker.incoming_sp_count,
                         messageTracker.incoming_web_count, messageTracker.sms_registration_count])

        response = export_to_new_excel(headers, list, 'tracker_list')
        return response
コード例 #2
0
def export_user_list_to_excel(a,b,c):
    #Custom Method to export user details.
    def is_required(user):
        return True if user.groups.filter(name="NGO Admins").count() or user.groups.filter(name="Project Managers").count() \
            or user.groups.filter(name="Extended Users").count()else False

    def user_role(user):
        if user.groups.filter(name='NGO Admins').count():
            return 'Admin'
        elif user.groups.filter(name='Project Managers').count():
            return 'User'

    list = []
    for ngo_user in NGOUserProfile.objects.all():
        try:
            user = User.objects.get(id=ngo_user.user_id)
            if is_required(user) and not user.is_superuser:
                details = []
                details.append(user.first_name + ' ' + user.last_name)
                details.append(user.username)
                org_id = ngo_user.org_id
                organization = Organization.objects.get(org_id = org_id)
                details.append(organization.name)
                details.append(organization.status)
                details.append(organization.language)
                details.append(user_role(user))
                list.append(details)
        except Exception:
            continue
    headers = ['Name', 'email', 'Organization Name', 'Status', 'Account language','User Role']
    response = export_to_new_excel(headers,list,'user_list')
    return response
コード例 #3
0
    def export_sms_details_to_excel(modeladmin, request, query_set):
        list = []

        textSearchFilter = get_text_search_filter(request.GET,
                                                  SMSAdmin.search_fields)
        adminPanelFilter = get_admin_panel_filter(request.GET)

        filteredSms = SMS.objects.all().filter(
            Q(**adminPanelFilter) & (textSearchFilter))
        for sms in filteredSms:
            delivered_date_time = ExcelDate(
                datetime.combine(sms.delivered_at, datetime.min.time()),
                'dd.mm.yyyy') if sms.delivered_at else None
            creation_date_time = ExcelDate(
                datetime.combine(sms.created_at, datetime.min.time()),
                'dd.mm.yyyy') if sms.created_at else None
            list.append([
                sms.organization_id, sms.status, creation_date_time,
                delivered_date_time, sms.msg_from, sms.msg_to, sms.msg_type,
                sms.message
            ])

        headers = [
            'Organisation Id', 'Status', 'Creation Date', 'Delivery Date',
            'Message from Number', 'Message to Number', 'Message Type',
            'Content'
        ]
        response = export_to_new_excel(headers, list, 'sms_list')
        return response
コード例 #4
0
 def create_workbook_response(self, data, field_codes):
     field_codes.insert(0, self.form_code)
     headers = OrderedDict()
     headers[self.sheet_name] = data[0]
     headers['codes'] = field_codes
     return export_to_new_excel(headers, {},
                                self.file_name,
                                hide_codes_sheet=True,
                                browser=self.browser)
コード例 #5
0
 def _create_response(self,
                      columns,
                      submission_list,
                      submission_type,
                      hide_codes_sheet=False):
     header_list, submission_formatter = self._get_header_list(columns)
     return export_to_new_excel(header_list,
                                submission_list,
                                export_filename(submission_type,
                                                self.project_name),
                                submission_formatter,
                                hide_codes_sheet,
                                questionnaire=self.form_model)
コード例 #6
0
    def test_should_export_data_in_xlsx(self):
        self.format_row_patch.side_effect = lambda x: x
        file_response = export_to_new_excel(
            self.headers, self.data, 'filename',
            SubmissionFormatter(self.headers, None))
        self.assertTrue(isinstance(file_response, HttpResponse))
        self.assertEquals(file_response.get('Content-Disposition', None),
                          "attachment; filename=filename.xlsx")

        f = StringIO.StringIO(file_response.content)
        wb = load_workbook(f)
        ws = wb.get_active_sheet()
        self.assertEqual(len(ws.rows), 2)
        self.assertEqual(len(ws.columns), 14)
        f.close()
コード例 #7
0
    def test_should_export_data_in_xlsx(self):
        local_time_delta = '+', 0, 0
        submission_formatter = SubmissionFormatter(self.columns,
                                                   local_time_delta,
                                                   self.preferences)
        header_list = submission_formatter.format_header_data()
        file_response = export_to_new_excel(header_list, self.data, 'filename',
                                            submission_formatter)
        self.assertTrue(isinstance(file_response, HttpResponse))
        self.assertEquals(file_response.get('Content-Disposition', None),
                          "attachment; filename=filename.xlsx")

        f = StringIO.StringIO(file_response.content)
        wb = load_workbook(f)
        ws = wb.get_active_sheet()
        row_values = [[cell.value for cell in row] for row in ws.rows]
        expected_row_values = [[
            u'Submission Date', u'Data Sender Name', u'Data Sender Id',
            u"What is the city's last name?",
            u"What is the city's Unique ID Number?", u'Total sales'
        ],
                               [
                                   datetime.datetime(2016, 1, 30, 19, 32, 59,
                                                     999997), u'Einstein',
                                   u'rep2', u'chennai', u'cit1', 5000
                               ]]

        column_values = [[cell.value for cell in column]
                         for column in ws.columns]
        expected_column_values = [[
            u'Submission Date',
            datetime.datetime(2016, 1, 30, 19, 32, 59, 999997)
        ], [u'Data Sender Name', u'Einstein'
            ], [u'Data Sender Id', u'rep2'
                ], [u"What is the city's last name?", u'chennai'
                    ], [u"What is the city's Unique ID Number?", u'cit1'],
                                  [u'Total sales', 5000]]
        self.assertEqual(len(ws.rows), 2)
        self.assertEqual(len(ws.columns), 6)
        self.assertEqual(row_values, expected_row_values)
        self.assertEqual(column_values, expected_column_values)
        f.close()
コード例 #8
0
def export_subject(request):
    manager = get_database_manager(request.user)
    query_text = request.POST.get('query_text', '')
    subject_type = request.POST.get('subject_type', '').lower()
    subject_list = SubjectQuery().query(request.user, subject_type, query_text)
    form_model = get_form_model_by_entity_type(manager, [subject_type.lower()])

    response = HttpResponse(mimetype='application/vnd.ms-excel')
    response['Content-Disposition'] = 'attachment; filename="%s.xls"' % (
        subject_type, )
    field_codes = form_model.field_codes()
    field_codes.insert(0, form_model.form_code)
    labels = get_subject_headers(form_model.form_fields)
    raw_data = []
    headers = OrderedDict([(subject_type, labels), ("codes", field_codes)])

    for subject in subject_list:
        raw_data.append(subject)

    return export_to_new_excel(headers, {subject_type: raw_data},
                               subject_type,
                               hide_codes_sheet=True)
コード例 #9
0
 def _create_response(self, columns, submission_list, submission_type):
     header_list, submission_formatter = self._get_header_list(columns)
     return export_to_new_excel(header_list, submission_list, export_filename(submission_type, self.project_name),
                                submission_formatter)