def pkg_xl_dict_to_fs_dict(cls, pkg_xl_dict, logger=None): '''Convert a Package represented in an Excel-type dictionary to a dictionary suitable for fieldset data. Takes Excel-type dict: {'name':'wikipedia', 'resource-0-url':'http://static.wikipedia.org/'} Returns Fieldset-type dict: {'name':'wikipedia', 'resources':[{'url':'http://static.wikipedia.org/'}]} ''' import ckan.forms standard_fields = model.Package.get_fields() pkg_fs_dict = OrderedDict() for title, cell in pkg_xl_dict.items(): if cell: if title in standard_fields: pkg_fs_dict[title] = cell elif title == 'license': license_id = cls.license_2_license_id(cell) if license: pkg_fs_dict['license_id'] = license_id else: logger( 'Warning: No license name matches \'%s\'. Ignoring license.' % cell) elif title.startswith('resource-'): match = re.match('resource-(\d+)-(\w+)', title) if match: res_index, field = match.groups() res_index = int(res_index) field = str(field) if not pkg_fs_dict.has_key('resources'): pkg_fs_dict['resources'] = [] resources = pkg_fs_dict['resources'] num_new_resources = 1 + res_index - len(resources) for i in range(num_new_resources): blank_dict = OrderedDict() for blank_field in model.Resource.get_columns(): blank_dict[blank_field] = u'' pkg_fs_dict['resources'].append(blank_dict) pkg_fs_dict['resources'][res_index][field] = cell else: logger( 'Warning: Could not understand resource title \'%s\'. Ignoring value: %s' % (title, cell)) elif title.startswith('relationships'): # TODO pass elif title == 'download_url': # deprecated - only in there for compatibility pass elif title in readonly_keys: pass else: if not pkg_fs_dict.has_key('extras'): pkg_fs_dict['extras'] = {} pkg_fs_dict['extras'][title] = cell return pkg_fs_dict
def pkg_xl_dict_to_fs_dict(cls, pkg_xl_dict, logger=None): '''Convert a Package represented in an Excel-type dictionary to a dictionary suitable for fieldset data. Takes Excel-type dict: {'name':'wikipedia', 'resource-0-url':'http://static.wikipedia.org/'} Returns Fieldset-type dict: {'name':'wikipedia', 'resources':[{'url':'http://static.wikipedia.org/'}]} ''' import ckan.forms standard_fields = model.Package.get_fields() pkg_fs_dict = OrderedDict() for title, cell in pkg_xl_dict.items(): if cell: if title in standard_fields: pkg_fs_dict[title] = cell elif title == 'license': license_id = cls.license_2_license_id(cell) if license: pkg_fs_dict['license_id'] = license_id else: logger('Warning: No license name matches \'%s\'. Ignoring license.' % cell) elif title.startswith('resource-'): match = re.match('resource-(\d+)-(\w+)', title) if match: res_index, field = match.groups() res_index = int(res_index) field = str(field) if not pkg_fs_dict.has_key('resources'): pkg_fs_dict['resources'] = [] resources = pkg_fs_dict['resources'] num_new_resources = 1 + res_index - len(resources) for i in range(num_new_resources): blank_dict = OrderedDict() for blank_field in model.Resource.get_columns(): blank_dict[blank_field] = u'' pkg_fs_dict['resources'].append(blank_dict) pkg_fs_dict['resources'][res_index][field] = cell else: logger('Warning: Could not understand resource title \'%s\'. Ignoring value: %s' % (title, cell)) elif title.startswith('relationships'): # TODO pass elif title == 'download_url': # deprecated - only in there for compatibility pass elif title in readonly_keys: pass else: if not pkg_fs_dict.has_key('extras'): pkg_fs_dict['extras'] = {} pkg_fs_dict['extras'][title] = cell return pkg_fs_dict
def records(self): """Returns each record as a dict.""" for row_index in range(self._first_record_row, self._data.get_num_rows()): row = self._data.get_row(row_index) row_has_content = False for cell in row: if cell: row_has_content = True break if row_has_content: record_dict = OrderedDict(zip(self.titles, row)) if record_dict.has_key(None): del record_dict[None] yield record_dict
def records(self): """Returns each record as a dict.""" for row_index in range(self._first_record_row, self._data.get_num_rows()): row = self._data.get_row(row_index) row_has_content = False for cell in row: if cell: row_has_content = True break if row_has_content: record_dict = OrderedDict(zip(self.titles, row)) if record_dict.has_key(None): del record_dict[None] yield record_dict