Exemplo n.º 1
0
def accept_pingback(pingback):
    uploader = Uploader()
    uploader.upload(store=pingback.store,
                    graph_name=pingback.graph_name,
                    data=pingback.data,
                    mimetype='text/n3')

    pingback.mark_published()
Exemplo n.º 2
0
    def execute(self, transform_manager, input):
        transform_manager.start(self, [input])

        logger.debug("Starting upload of %r", input)

        extension = input.rsplit('.', 1)[-1]
        try:
            serializer = self.formats[extension]
        except KeyError:
            logger.exception("Unrecognized RDF extension: %r", extension)
            raise

        graph = rdflib.ConjunctiveGraph()
        graph.parse(open(input, 'r'),
                    format=serializer,
                    publicID=self.graph_name)

        logger.debug("Parsed graph")

        datetime_now = self.site_timezone.localize(
            datetime.datetime.now().replace(microsecond=0))
        modified = graph.value(self.graph_name,
                               NS['dcterms'].modified,
                               default=rdflib.Literal(datetime_now))
        created = graph.value(self.graph_name, NS['dcterms'].created)
        if not created:
            logger.debug("Getting created date from %r",
                         transform_manager.store.query_endpoint)
            endpoint = Endpoint(transform_manager.store.query_endpoint)
            results = list(
                endpoint.query(self.created_query %
                               {'graph': self.graph_name.n3()}))
            if results:
                created = results[0].date
            else:
                created = modified

        graph += (
            (self.graph_name, NS.rdf.type, NS.sd.Graph),
            (self.graph_name, NS.dcterms.modified, modified),
            (self.graph_name, NS.dcterms.created, created),
        )

        logger.debug("About to serialize")

        output = transform_manager('rdf')
        with open(output, 'w') as f:
            graph.serialize(f)

        logger.debug("Serialization done; about to upload")

        uploader = Uploader()
        uploader.upload(stores=(transform_manager.store, ),
                        graph_name=self.graph_name,
                        filename=output,
                        method=self.method,
                        mimetype='application/rdf+xml')

        logger.debug("Upload complete")

        transform_manager.end([self.graph_name])
        transform_manager.touched_graph(self.graph_name)