Esempio n. 1
0
    def _loc_type_dict(self, loc_type):

        uncategorized_keys = set()
        tab_rows = []
        for loc in SQLLocation.active_objects.filter(
                domain=self.domain, location_type__name=loc_type.name):
            model_data, uncategorized_data = \
                self.data_model.get_model_and_uncategorized(loc.metadata)

            uncategorized_keys.update(uncategorized_data.keys())

            loc_dict = {
                'location_id': loc.location_id,
                'site_code': loc.site_code,
                'name': loc.name,
                'parent_site_code': loc.parent.site_code if loc.parent else '',
                'latitude': loc.latitude or '',
                'longitude': loc.longitude or '',
                'data': model_data,
                'uncategorized_data': uncategorized_data,
                'consumption': self.get_consumption(loc),
                LOCATION_SHEET_HEADERS['external_id']: loc.external_id,
                LOCATION_SHEET_HEADERS['do_delete']: ''
            }
            tab_rows.append(dict(flatten_json(loc_dict)))

        header_keys = [
            'location_id', 'site_code', 'name', 'parent_code', 'latitude',
            'longitude', 'external_id', 'do_delete'
        ]
        tab_headers = [LOCATION_SHEET_HEADERS[h] for h in header_keys]

        def _extend_headers(prefix, headers):
            tab_headers.extend(
                json_to_headers({prefix: {header: None
                                          for header in headers}}))

        _extend_headers('data', (f.slug for f in self.data_model.fields))
        _extend_headers('uncategorized_data', uncategorized_keys)
        if self.include_consumption_flag and loc_type.name not in self.administrative_types:
            _extend_headers('consumption', self.product_codes)

        sheet_title = loc_type.code

        return (sheet_title, {
            'headers': tab_headers,
            'rows': tab_rows,
        })
Esempio n. 2
0
    def _loc_type_dict(self, loc_type):

        uncategorized_keys = set()
        tab_rows = []
        for loc in Location.filter_by_type(self.domain, loc_type.name):

            model_data, uncategorized_data = \
                self.data_model.get_model_and_uncategorized(loc.metadata)

            uncategorized_keys.update(uncategorized_data.keys())

            loc_dict = {
                'location_id': loc.location_id,
                'site_code': loc.site_code,
                'name': loc.name,
                'parent_site_code': loc.parent.site_code if loc.parent else '',
                'latitude': loc.latitude or '',
                'longitude': loc.longitude or '',
                'data': model_data,
                'uncategorized_data': uncategorized_data,
                'consumption': self.get_consumption(loc),
                LOCATION_SHEET_HEADERS['external_id']: loc.external_id,
                LOCATION_SHEET_HEADERS['do_delete']: ''
            }
            tab_rows.append(dict(flatten_json(loc_dict)))

        header_keys = ['location_id', 'site_code', 'name', 'parent_code',
                       'latitude', 'longitude', 'external_id', 'do_delete']
        tab_headers = [LOCATION_SHEET_HEADERS[h] for h in header_keys]

        def _extend_headers(prefix, headers):
            tab_headers.extend(json_to_headers(
                {prefix: {header: None for header in headers}}
            ))
        _extend_headers('data', (f.slug for f in self.data_model.fields))
        _extend_headers('uncategorized_data', uncategorized_keys)
        if self.include_consumption_flag and loc_type.name not in self.administrative_types:
            _extend_headers('consumption', self.product_codes)

        sheet_title = loc_type.code

        return (sheet_title, {
            'headers': tab_headers,
            'rows': tab_rows,
        })
Esempio n. 3
0
 def _get_group_rows():
     for group_dict in group_dicts:
         row = dict(flatten_json(group_dict))
         yield [row.get(header, '') for header in group_headers]
Esempio n. 4
0
def get_user_rows(user_dicts, user_headers):
    for user_dict in user_dicts:
        row = dict(flatten_json(user_dict))
        yield [row.get(header, '') for header in user_headers]
Esempio n. 5
0
 def _user_rows():
     for user_dict in user_dicts:
         row = dict(flatten_json(user_dict))
         yield [row.get(header) or '' for header in user_headers]
Esempio n. 6
0
 def _get_group_rows():
     for group_dict in group_dicts:
         row = dict(flatten_json(group_dict))
         yield [row.get(header) or '' for header in group_headers]
Esempio n. 7
0
 def _user_rows():
     for user_dict in user_dicts:
         row = dict(flatten_json(user_dict))
         yield [row.get(header) or '' for header in user_headers]