コード例 #1
0
    def csv_summary(self, product=None, searchtype=None):
        summary_model = SummaryModel()
        values_list, account_nums, service_types, event_types, impact_types, quantity, uom, rate, amount, usage_rec_ids, dc_ids, region_ids, res_ids, res_names, attribute_1, attribute_2, attribute_3 = (
            [] for i in range(17)
        )
        searchtype_col = ""
        for row in csv.DictReader(open(self.csv_file)):
            values_list.append(row)
            if searchtype is not None:
                for header, detail in row.iteritems():
                    if detail.lower() == searchtype.lower():
                        searchtype_col = header
        if searchtype_col is not "":
            grouper = itemgetter("SERVICE_TYPE", searchtype_col)
        else:
            grouper = itemgetter("SERVICE_TYPE")
        for key, grp in groupby(sorted(values_list, key=grouper), grouper):
            for item in grp:
                if product is None:
                    service_types.append(item["SERVICE_TYPE"])
                elif product is not None and searchtype is not None:
                    if (
                        item["SERVICE_TYPE"].lower() == product.lower()
                        and item[searchtype_col].lower() == searchtype.lower()
                    ):
                        amount.append(item["AMOUNT"])
                elif product is not None and searchtype is None:
                    if item["SERVICE_TYPE"].lower() == product.lower():
                        account_nums.append(item["ACCOUNT_NO"])
                        service_types.append(item["SERVICE_TYPE"])
                        event_types.append(item["EVENT_TYPE"])
                        impact_types.append(item["IMPACT_TYPE"])
                        quantity.append(item["QUANTITY"])
                        uom.append(item["UOM"])
                        rate.append(item["RATE"])
                        amount.append(item["AMOUNT"])
                        usage_rec_ids.append(item["USAGE_RECORD_ID"])
                        dc_ids.append(item["DC_ID"])
                        region_ids.append(item["REGION_ID"])
                        res_ids.append(item["RES_ID"])
                        res_names.append(item["RES_NAME"])
                        attribute_1.append(item["ATTRIBUTE_1"])
                        attribute_2.append(item["ATTRIBUTE_2"])
                        attribute_3.append(item["ATTRIBUTE_3"])
        summary_model.account_nums = set(account_nums)
        summary_model.service_types = set(service_types)
        summary_model.event_types = set(event_types)
        summary_model.impact_types = set(impact_types)
        summary_model.quantity = set(quantity)
        summary_model.uom = set(uom)
        summary_model.rate = set(rate)
        summary_model.amount = sum([float(x) for x in amount])
        summary_model.usage_record_id = set(usage_rec_ids)
        summary_model.dc_id = set(dc_ids)
        summary_model.region_id = set(region_ids)
        summary_model.res_id = set(res_ids)
        summary_model.res_name = set(res_names)
        summary_model.attribute_1 = set(attribute_1)
        summary_model.attribute_2 = set(attribute_2)
        summary_model.attribute_3 = set(attribute_3)

        return summary_model
コード例 #2
0
    def xml_summary(self, product=None, searchtype=None):
        summary_model = SummaryModel()
        values_list, account_nums, service_types, event_types, impact_types, quantity, uom, rate, amount, usage_rec_ids, dc_ids, region_ids, res_ids, res_names, attribute_1 = (
            [] for i in range(15)
        )
        myfile = open(self.xml_file, "r")
        data = myfile.read().replace("\n", "")
        m = ParseBillingXml._xml_to_obj(data)
        for usage in m.accounts[0].rated_usages:
            if product is None:
                service_types.append(usage.service_name)
            elif product is not None and searchtype is None:
                if usage.service_name.lower() == product.lower():
                    service_types.append(usage.service_name)
                    event_types.append(usage.event_type)
                    quantity.append(usage.quantity)
                    uom.append(usage.unit_of_measure)
                    rate.append(usage.rate)
                    amount.append(usage.amount)
                    usage_rec_ids.append(usage.record_id)
                    dc_ids.append(usage.data_center)
                    region_ids.append(usage.region)
                    res_ids.append(usage.resource_id)
                    res_names.append(usage.resource_name)
                    attribute_1.append(usage.attributes)
        summary_model.service_types = set(service_types)
        summary_model.event_types = set(event_types)
        summary_model.quantity = set(quantity)
        summary_model.uom = set(uom)
        summary_model.rate = set(rate)
        summary_model.amount = sum([float(x) for x in amount])
        summary_model.usage_record_id = set(usage_rec_ids)
        summary_model.dc_id = set(dc_ids)
        summary_model.region_id = set(region_ids)
        summary_model.res_id = set(res_ids)
        summary_model.res_name = set(res_names)
        summary_model.attribute_1 = attribute_1

        return summary_model