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, })
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, })
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]
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]
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]
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]