Ejemplo n.º 1
0
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
Ejemplo n.º 2
0
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
Ejemplo n.º 3
0
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