Exemplo n.º 1
0
    def get(self, request):
        book = Databook()
        book.add_sheet(self.bilateral_table_data_sheet())
        book.add_sheet(self.multilateral_and_foundation_table_data_sheet())
        book.add_sheet(self.five_largest_graph_data_sheet())
        book.add_sheet(self.seven_largest_single_data_sheet())
        book.add_sheet(self.other_disbursements_data_sheet())

        response = HttpResponse(book.xls, mimetype='application/ms-excel')
        response['Content-Disposition'] = 'attachment; filename=%s.xls' % u"back_data"

        return response
Exemplo n.º 2
0
    def export(self, task=None):
        """
        Export the resources to a file.

        :param task: optional celery task. If given, the task state will be
                     updated.
        """
        book = Databook()

        export_kwargs = {}
        if task is not None:
            total = sum([
                resource.get_queryset().count() for resource in self.resources
            ])
            export_kwargs['task_meta'] = {
                'task': task,
                'total': total,
                'done': 0
            }

        num_queries_start = len(connection.queries)

        for resource in self.resources:
            model = resource.Meta.model
            logger.debug('Export kwargs: %s' % export_kwargs)
            dataset = resource.export(
                **export_kwargs
            )  # takes optional queryset argument (select related)

            len_queries = len(connection.queries)
            queries = len_queries - num_queries_start
            logger.info('Number of objects: %d' %
                        resource.get_queryset().count())
            logger.info('Executed %d queries' % queries)
            num_queries_start = len_queries

            if task is not None:
                export_kwargs['task_meta']['done'] += dataset.height

            if resource.title is not None:
                dataset.title = force_text(
                    resource.title)[:31]  # maximum of 31 chars int title
            else:
                dataset.title = u'{name} ({app}.{model})'.format(
                    name=model._meta.verbose_name_plural,
                    app=model._meta.app_label,
                    model=model.__name__)[:31]  # maximum of 31 chars int title

            book.add_sheet(dataset)
        return book
Exemplo n.º 3
0
    def test_kwargs_forwarded(self, resource_for_model, mocked_export):
        """
        Test that kwargs passed to `export` are forwarded to the ModelResource
        for export.
        """
        from exportdb.tasks import export

        book = Databook()
        book.add_sheet(Dataset())
        mocked_export.return_value = book

        kwargs = {'foo': 'bar', 'baz': 10}
        export(Exporter, **kwargs)

        export_models = get_export_models()
        for i, export_model in enumerate(export_models):
            self.assertEqual(
                resource_for_model.call_args_list[i],
                mock.call(export_model, foo='bar', baz=10)
            )
Exemplo n.º 4
0
    def export(self, task=None):
        """
        Export the resources to a file.

        :param task: optional celery task. If given, the task state will be
                     updated.
        """
        book = Databook()

        export_kwargs = {}
        if task is not None:
            total = sum([resource.get_queryset().count() for resource in self.resources])
            export_kwargs['task_meta'] = {'task': task, 'total': total, 'done': 0}

        num_queries_start = len(connection.queries)

        for resource in self.resources:
            model = resource.Meta.model
            logger.debug('Export kwargs: %s' % export_kwargs)
            dataset = resource.export(**export_kwargs)  # takes optional queryset argument (select related)

            len_queries = len(connection.queries)
            queries = len_queries - num_queries_start
            logger.info('Number of objects: %d' % resource.get_queryset().count())
            logger.info('Executed %d queries' % queries)
            num_queries_start = len_queries

            if task is not None:
                export_kwargs['task_meta']['done'] += dataset.height

            if resource.title is not None:
                dataset.title = force_text(resource.title)[:31]  # maximum of 31 chars int title
            else:
                dataset.title = u'{name} ({app}.{model})'.format(
                    name=model._meta.verbose_name_plural,
                    app=model._meta.app_label,
                    model=model.__name__
                )[:31]  # maximum of 31 chars int title

            book.add_sheet(dataset)
        return book
Exemplo n.º 5
0
                    "user_list": package_users_line[2:]
                }
            package_users[model] = temp_package_users


load_data()

work_book = Databook()
TOP_N = 1000
for model in package_users:
    headers = ("应用包名", "应用名称", "应用安装数量", "一级分类", "二级分类", "是否预装", "安装比率")
    data = []
    package_ranks[model] = get_package_rank(package_users[model])
    print("model is ", model)
    top_apps = get_top_apps(package_ranks[model], TOP_N, start=0)
    print(top_apps)
    for index in range(len(top_apps)):
        print()
        package_detail = get_package_details(top_apps[index][0], model)
        data.append((package_detail["package"], package_detail["name"], package_detail["numbers"],
                     package_detail["first_category"],
                     package_detail["second_category"], package_detail["is_prestall"],
                     int(package_detail["numbers"]) / phone_model_user_number[model]))
    dataset = Dataset(*data, headers=headers, title=model)
    with open(model + "_TOP"+ str(TOP_N) + ".xlsx", "wb") as f:
        f.write(dataset.xlsx)

    work_book.add_sheet(dataset)
    with open(str(TOP_N) + ".xls", "wb") as f:
        f.write(work_book.xls)
Exemplo n.º 6
0
 def save(self):
     book = Databook()
     self.data.title = self.out_sheet
     book.add_sheet(self.data)
     with open(self.out_fname_prefix + '.' + self.out_type, 'wb') as f:
         f.write(book.export(self.out_type))
Exemplo n.º 7
0
def get_whole_results(output_dir_path="./"):
    """
    根据输入的机型数据和 输出类型 输出计算结果,默认的输出类型为excel文件,但是后期可以更换为json等,来满足网页显示
    不需要输出phone的名称,这个函数返回最终的计算结果,并以excel的形式展现
    :param output_dir_path: 存放文件的目录
    :param phone_model: 机型名称
    :param output_type: 输出结果的类型
    :return: None
    """
    work_book = Databook()
    category_info = get_all_category(marker_apps_excel)
    common_headers = []
    for model in phone_model:
        common_headers.append(model)

    summary = {}
    for category in category_info:
        category_headers = list(common_headers)
        category_headers.insert(0, category)
        data_list = []
        package_list = category_info[category]
        for package in package_list:
            package_data = [get_package_name(package)]
            for model in phone_model:
                try:
                    user_number = package_users[model][package]["user_num"]
                except KeyError as ke:
                    user_number = 0
                package_data.append(str(user_number))
            data_list.append(tuple(package_data))
        unique_user = ["unique user"]
        print(data_list)
        for model in phone_model:
            unique_user_number = len(
                get_union_user(package_list, package_users[model]))
            unique_user.append(unique_user_number)
        summary[category] = unique_user[1:]
        data_list.append(tuple(unique_user))
        work_sheet = Dataset(*data_list,
                             title=category,
                             headers=category_headers)
        work_book.add_sheet(work_sheet)

    summary_data = []
    for category in summary:
        user_numbers = summary[category]
        rate_line = [category]
        for index in range(len(user_numbers)):
            rate_line.append(
                int(user_numbers[index]) / phone_user_number_list[index])
        # for model in phone_model:
        #     rate_line.append(int(user_number)/phone_model_user_number[model])
        summary_data.append(tuple(rate_line))

    summary_headers = ["分类"]
    for model in phone_model:
        summary_headers.append(model)

    import time
    summary_sheet = Dataset(*summary_data,
                            headers=summary_headers,
                            title="summary")
    with open(output_dir_path + "summary.xlsx", "wb") as f:
        f.write(summary_sheet.xlsx)

    with open(output_dir_path + "details.xlsx", "wb") as f:
        f.write(work_book.xlsx)
Exemplo n.º 8
0
def get_whole_results(output_dir_path="./"):
    """
    根据输入的机型数据和 输出类型 输出计算结果,默认的输出类型为excel文件,但是后期可以更换为json等,来满足网页显示
    不需要输出phone的名称,这个函数返回最终的计算结果,并以excel的形式展现
    :param output_dir_path: 存放文件的目录
    :param phone_model: 机型名称
    :param output_type: 输出结果的类型
    :return: None
    """
    work_book = Databook()
    category_info = get_all_category(marker_apps_excel)
    common_headers = []
    for model in phone_model:
        common_headers.append(model)

    summary = {}
    for category in category_info:
        category_headers = list(common_headers)
        category_headers.insert(0, category)
        data_list = []
        package_list = category_info[category]
        for package in package_list:
            package_data = [get_package_name(package)]
            for model in phone_model:
                try:
                    user_number = package_users[model][package]["user_num"]
                except KeyError as ke:
                    user_number = 0
                package_data.append(str(user_number))
            data_list.append(tuple(package_data))
        unique_user = ["unique user"]
        print(data_list)
        for model in phone_model:
            unique_user_number = len(get_union_user(package_list,  package_users[model]))
            unique_user.append(unique_user_number)
        summary[category]  = unique_user[1:]
        data_list.append(tuple(unique_user))
        work_sheet = Dataset(*data_list, title=category, headers=category_headers)
        work_book.add_sheet(work_sheet)

    summary_data = []
    for category in summary:
        user_numbers = summary[category]
        rate_line = [category]
        for index in range(len(user_numbers)):
            rate_line.append(int(user_numbers[index])/phone_user_number_list[index])
        # for model in phone_model:
        #     rate_line.append(int(user_number)/phone_model_user_number[model])
        summary_data.append(tuple(rate_line))

    summary_headers = ["分类"]
    for model in phone_model:
        summary_headers.append(model)

    import  time
    summary_sheet  = Dataset(*summary_data,headers= summary_headers, title="summary" )
    with open(output_dir_path + "summary.xlsx","wb") as f:
        f.write(summary_sheet.xlsx)

    with open(output_dir_path + "details.xlsx", "wb") as  f:
        f.write(work_book.xlsx)