def post_save_layerext(instance, sender, **kwargs): """ force save on Layer object: patch to modeltranslation and trigger signals """ if not kwargs['created']: a = instance.mldict('titleml') instance.layer_ptr.title = a[DEFAULT_LANGUAGE] instance.layer_ptr.abstract = instance.mldict('abstractml')[DEFAULT_LANGUAGE] instance.layer_ptr.supplemental_information = instance.mldict('supplemental_information_ml')[DEFAULT_LANGUAGE] if instance.layer_ptr.supplemental_information is None: instance.layer_ptr.supplemental_information = '-' # instance.layer_ptr.keywords = instance.keywords_list_clean(DEFAULT_LANGUAGE) instance.layer_ptr.keywords.add(*instance.keywords_list_clean(DEFAULT_LANGUAGE)) instance.layer_ptr.save() # save CignoResources in RDF resource_uri = instance.get_public_url() crdf = CignoRDF() if instance.gemetkeywords is not None and instance.gemetkeywords != '': gemetkeywords = json.loads(instance.gemetkeywords) else: gemetkeywords = None crdf.add_resource_keywords(resource_uri, instance.uuid, instance.mldict('titleml'), gemetkeywords )
def post_save_connection(instance, sender, **kwargs): crdf = CignoRDF() # if external try to load rdf info # TODO: use a better test and test if already loaded if not instance.s_url.startswith(surf.ns.LOCAL): crdf.store.load_triples(source = instance.s_url) if not instance.o_url.startswith(surf.ns.LOCAL): crdf.store.load_triples(source = instance.o_url) crdf.add_triple(instance.s_url, instance.connection_type.url, instance.o_url)
def render_connections(obj): crdf = CignoRDF() resource_name = obj.get_absolute_url() resource_uri = surf.ns.LOCAL[resource_name] resource = crdf.session.get_resource(resource_uri, crdf.CignoResources) resource.load() # preload rdfresource = {'dcterms_subject': []} for k in resource.dcterms_subject: rdfresource['dcterms_subject'].append({ 'subject': k.subject, 'label': k.skos_prefLabel.first }) return {'rdfresource': rdfresource}
def post_save_resource(instance, sender, **kwargs): logger.debug("POST SAVE titleml %s" % getattr(instance, 'titleml')) # syncGeonames has to come first (so geonetwork can use extents instance.syncGeonames() instance.save_to_geonetwork() # save CignoResources in RDF resource_uri = instance.get_public_url() crdf = CignoRDF() if instance.gemetkeywords is not None and instance.gemetkeywords != '': gemetkeywords = json.loads(instance.gemetkeywords) else: gemetkeywords = None crdf.add_resource_keywords(resource_uri, instance.uuid, instance.mldict('titleml'), gemetkeywords )
def geonamesGeoJson(self): crdf = CignoRDF() features= { "type": "FeatureCollection", "features": []} geonamesids = [] if self.geonamesids is not None and len(self.geonamesids) > 0: geonamesids = self.geonamesids.split(',') for id in geonamesids: gn = crdf.GeoNames('http://sws.geonames.org/%s/' % id) gn.load() long = gn.geo_long[0] lat = gn.geo_lat[0] feature = { 'type': "Feature", 'geometry': {"type": "Point", "coordinates": [long, lat]}, 'properties': { 'type': 'link', 'geonameId': id, 'name': lbyl(gn.gn_name), 'fcodeName': lbyl(gn.gn_featureCode[0].skos_prefLabel), 'countryName': 'Italy' } } features['features'].append(feature) return features
def post_delete_layer(instance, sender, **kwargs): crdf = CignoRDF() crdf.remove(surf.ns.LOCAL[instance.get_absolute_url()])
def post_delete_resource(instance, sender, **kwargs): instance.delete_from_geonetwork() crdf = CignoRDF() crdf.remove(instance.get_public_url())