Frage

Ich baue einen benutzerdefinierten Harvester zum Importieren von Daten von einer externen Site in CKAN (Version 1.8).

Es funktioniert ziemlich gut und erstellt die Metadaten und die damit verbundenen Ressourcen. Ich möchte diese Ressourcen zusammenfassen und einen neuen CSV erstellen, um ihn im DataStore zu speichern, während er in der Importphase ernte ist.

Ich weiß, dass ich die Datastore-API verwenden kann

Ist es möglich, die DataStore-API-Funktionen direkt aus der Harvester aufzurufen?https://github.com/okfn/ckan/blob/master/ckanext/datastore/logic/action.py.

Jede Funktion nimmt einen Kontextparameter an, der nicht dokumentiert ist.

War es hilfreich?

Lösung

Sie haben ein paar verschiedene Dinge, die Sie hier tun:

  • Konvertieren von CSV in die entsprechende Python-Struktur (oder JSON) für das Einfügen in den Datastore
  • Einfügen in den Datastore

Für letztere können Sie entweder verwenden:

Die API ruft nur die logischen Aktionen an (plus tut auth), so dass diese ziemlich ähnlich sind, aber der logische Ansatz wird wahrscheinlich schneller sein, und könnte natürlicher sein, wenn Sie bereits Code tun. Dass sagte, die API könnte konzeptionell sauberer sein, da Sie Ihre verschiedenen Komponenten in Form einer definierten Web-APIs nette Grenzen haben.

Für den ersteren (dh Umbau von CSV an JSON) empfehlen Sie die Verwendung der Datenkonverter-Bibliothek., insbesondere das Commas.py-Teil, das in genau das gewünschte Format umgewandelt wird. Es gibt einen vollständigen Webdienst, der auf Basis von Datenkonvertern entwickelt wird, aber es ist noch nicht voll funktionsfähig.

Andere Tipps

Ich habe dies gelöst, indem ich CkANEXT-DataStorer (für den Datastore) und ckanclient (für das Hochladen der Datei) gelöst habe (zum Hochladen der Datei)

CKANClient wird mit CKAN 1.8 abgeheitert, da es nicht korrekt umwickelt. Wir haben mit diesem blutenden und schmutzigen Patch gelöst https://gist.github.com/mammadori/4945812.

Ein besseres Fix wäre vollständig umdrehen und ändert stattdessen den gesamten CKANCLIENT, um Anforderungen zu verwenden.

Danke für deine Unterstützung

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top