def _mdimport(layer, vals, keywords, xml): # print >>sys.stderr, 'VALS', vals # set taggit keywords layer.keywords.clear() layer.keywords.add(*keywords) # set model properties for (key, value) in vals.items(): # print >>sys.stderr, key, unicode(value).encode('utf8') # EDI_Metadata e MD_Metadata non riesco a leggerlo, inoltre EDI può averlo multiplo mentre GeoNode no if key == 'spatial_representation_type': value = SpatialRepresentationType(identifier=value) elif key == 'topic_category': key = 'category' value = TopicCategory.objects.get( identifier=get_topic_category(value.encode('utf8'))) elif key == 'supplemental_information' and value is None: value = ' ' elif key in [ 'md_contact', 'citation_contact', 'identification_contact' ]: _set_contact_role_scope(key, value, layer.mdextension) setattr(layer, key, value) layer.save() return layer
def _savelayermd(layer, rndt, ediml, version='1'): if ediml: fileid = _get_fileid(ediml) # new fileid must be equal to the old one if layer.mdextension.fileid is not None: if int(layer.mdextension.fileid) != int(fileid): raise Exception( 'New fileid (%s) is different from the old one (%s)' % (fileid, layer.mdextension.fileid)) layer.mdextension.fileid = fileid vals, keywords = rndt2dict(etree.fromstring(rndt)) errors = _post_validate(vals) if len(errors) > 0: raise Exception(errors) # print >>sys.stderr, 'VALS', vals # set taggit keywords layer.keywords.clear() layer.keywords.add(*keywords) # set model properties for (key, value) in vals.items(): # print >>sys.stderr, key, unicode(value).encode('utf8') # EDI_Metadata e MD_Metadata non riesco a leggerlo, inoltre EDI può averlo multiplo mentre GeoNode no if key == 'spatial_representation_type': value = SpatialRepresentationType(identifier=value) elif key == 'topic_category': key = 'category' value = TopicCategory.objects.get( identifier=get_topic_category(value.encode('utf8'))) elif key == 'supplemental_information' and value is None: value = ' ' elif key in [ 'md_contact', 'citation_contact', 'identification_contact', 'distributor_contact' ]: _set_contact_role_scope(key, value, layer.mdextension) setattr(layer, key, value) layer.save() # save rndt & edi xml layer.mdextension.md_language = vals['md_language'] layer.mdextension.md_date = vals['md_date'] if vals[ 'md_date'] is not None else layer.date layer.mdextension.rndt_xml = rndt layer.mdextension.ediversion = version if ediml: layer.mdextension.elements_xml = ediml layer.mdextension.save() return True
def _mdimport(layer, vals, keywords, xml): # print >>sys.stderr, 'VALS', vals # set taggit keywords layer.keywords.clear() layer.keywords.add(*keywords) # set model properties for (key, value) in vals.items(): # print >>sys.stderr, key, unicode(value).encode('utf8') # EDI_Metadata e MD_Metadata non riesco a leggerlo, inoltre EDI può averlo multiplo mentre GeoNode no if key == 'spatial_representation_type': value = SpatialRepresentationType(identifier=value) elif key == 'topic_category': key = 'category' value = TopicCategory.objects.get(identifier=get_topic_category(value.encode('utf8'))) elif key == 'supplemental_information' and value is None: value = ' ' elif key in ['md_contact', 'citation_contact', 'identification_contact']: _set_contact_role_scope(key, value, layer.mdextension) setattr(layer, key, value) layer.save() return layer