def get_related_urls(pkg): ''' Get related urls for package ''' ret = [] for rel in Related.get_for_dataset(pkg): ret.append(rel.related.url) return ret
def _toggle_featured(self, reuse_id, featured=None): ''' Mark or unmark a reuse as featured ''' user = toolkit.c.userobj if not user or not user.sysadmin: raise toolkit.NotAuthorized() reuse = Related.get(reuse_id) reuse.featured = featured if featured is not None else (0 if reuse.featured else 1) self.commit() return reuse return self.json_response(reuse)
def _toggle_featured(self, reuse_id, featured=None): ''' Mark or unmark a reuse as featured ''' user = toolkit.c.userobj if not user or not user.sysadmin: raise toolkit.NotAuthorized() reuse = Related.get(reuse_id) reuse.featured = featured if featured is not None else ( 0 if reuse.featured else 1) self.commit() return reuse return self.json_response(reuse)
def tordf(self, id, format): graph = Graph() pkg = Package.get(id) if pkg: data = pkg.as_dict() metadoc = URIRef('') user = None if pkg.roles: owner = [role for role in pkg.roles if role.role == 'admin'] if len(owner): user = User.get(owner[0].user_id) profileurl = "" if user: profileurl = URIRef(config.get('ckan.site_url', '') +\ h.url_for(controller="user", action="read", id=user.name)) graph.add((metadoc, DC.identifier, Literal(data["id"])\ if 'identifier' not in data["extras"]\ else URIRef(data["extras"]["identifier"]))) graph.add((metadoc, DC.modified, Literal(data["metadata_modified"], datatype=XSD.dateTime))) graph.add((metadoc, FOAF.primaryTopic, Identifier(data['name']))) uri = URIRef(data['name']) if data["license"]: graph.add((uri, DC.rights, Literal(data["license"]))) if "versionPID" in data["extras"]: graph.add((uri, DC.identifier, Literal(data["extras"]["versionPID"]))) graph.add((uri, DC.identifier, Literal(data["name"]))) graph.add((uri, DC.modified, Literal(data.get("version", ''), datatype=XSD.dateTime))) org = URIRef(FOAF.Person) if profileurl: graph.add((uri, DC.publisher, profileurl)) graph.add((profileurl, RDF.type, org)) graph.add((profileurl, FOAF.name, Literal(data["extras"]["publisher"]))) graph.add((profileurl, FOAF.phone, Identifier(data["extras"]["phone"]))) graph.add((profileurl, FOAF.homepage, Identifier(data["extras"]["contactURL"]))) graph.add((uri, DC.rightsHolder, URIRef(data["extras"]["owner"]) if data["extras"]["owner"].startswith(('http','urn'))\ else Literal(data["extras"]["owner"]))) log.debug(data["extras"]) if all((k in data["extras"] and data["extras"][k] != "") for k in ("project_name",\ "project_homepage",\ "project_funding",\ "funder")): project = URIRef(FOAF.Project) projecturl = URIRef(data["extras"]["project_homepage"]) graph.add((uri, DC.contributor, projecturl)) graph.add((projecturl, RDF.type, project)) graph.add((projecturl, FOAF.name, Literal(data["extras"]["project_name"]))) graph.add((projecturl, FOAF.homepage, Identifier(data["extras"]["project_homepage"]))) graph.add((projecturl, RDFS.comment, Literal(data["extras"]["project_funder"]))) for key in data["extras"]: log.debug(key) if key.startswith('author'): graph.add((uri, DC.creator, URIRef(data["extras"][key])\ if data["extras"][key].startswith(('http','urn'))\ else Literal(data["extras"][key]))) if key.startswith("title"): lastlangnum = key.split('_')[-1] log.debug(lastlangnum) lastlang = data["extras"]["lang_title_%s" % lastlangnum] graph.add((uri, DC.title, Literal(data["extras"][key], lang=lastlang))) for tag in data['tags']: graph.add((uri, DC.subject, Literal(tag))) for lang in data["extras"].get("language", "").split(','): graph.add((uri, DC.language, Literal(lang.strip()))) if "access" in data["extras"]: graph.add((uri, DC.rights, self._make_rights_element(data["extras"]))) # Extended metadatamodel if all(k in data["extras"] for k in ("temporal_coverage_begin", "temporal_coverage_end")): graph.add((uri, DC.temporal, Literal(self._make_temporal(data["extras"])))) if "geographical_coverage" in data["extras"]: graph.add((uri, DC.spatial, Literal(data["extras"]["geographical_coverage"]))) for rel in Related.get_for_dataset(pkg): graph.add((uri, DC.isReferencedBy, Literal(rel.related.title))) if "notes_rendered" in data: graph.add((uri, DC.description, Literal(data["notes_rendered"]))) response.headers['Content-type'] = 'text/xml' if format == 'rdf': format = 'pretty-xml' return graph.serialize(format=format) else: return ""