[pycsw-devel] metadata editor

Tom Kralidis tomkralidis at gmail.com
Mon Jul 27 09:36:58 PDT 2015

On Mon, 27 Jul 2015, Eva Jelínková wrote:

> Date: Mon, 27 Jul 2015 17:34:36 +0200
> From: Eva Jelínková <evka.jelinkova at gmail.com>
> To: Tom Kralidis <tomkralidis at gmail.com>
> Cc: pycsw-devel at lists.osgeo.org
> Subject: Re: [pycsw-devel] metadata editor
> Hello Tom,
> thank you very much for your response. We are still at the stage of
> research and testing.
> We are going to store metadata XMLs in pycsw - it's great that user can
> access it easily via QGIS. We've already tested harvesting to CKAN which we
> plan to use as graphical user interface for browsing and searching.
> Our workflow is going to be probably like this:
> web form => MCF file => pygeometa => XML => pycsw => CKAN
> Thanks for Flask recommendation!
> I was thinking also about using CKAN as form for creating/editing records
> but I found it difficult to get the edited record back to pycsw or create
> XML straight from CKAN...
> There is one thing in pycsw that I haven't got yet. Maybe you can help me.
> I have some testing XMLs that I load to pycsw via pycsw-admin.py:
> python /path/to/pycsw-admin.py -c load_records -f /path/to/pycsw.cfg -p
> /path/to/xml -r

> When I update some of that XMLs it is impossible to just reload it because
> "Key (identifier)=(xy) already exists". So the easiest way for me (for now
> - I have just a few records) is delete all records in DB and than load them
> again.

We addressed this in https://github.com/geopython/pycsw/issues/290.  Adding 
a -y flag to pycsw-admin.py will force update (do a pycsw-admin.py -h to
see examples).  I wonder whether we should add this to the docs (http://docs.pycsw.org/en/latest/administration.html#loading-records) as well?

> I think the right way would be to use transactions (update) instead of
> deleting all the records all the time...
> Unfortunately there is not so much information about transactions in
> documentation (when I will be able to use transactions correctly I could
> add there some notes for people who are novices as I am :D ).
> For full update I added tags csw:Transaction and csw:Update to my metadata
> XML:
> <csw:Transaction ...>
> <csw:Update>
> <gmd:MD_Metadata ...>
> ...
> </gmd:MD_Metadata>
> </csw:Update>
> </csw:Transaction>
> and posted it by pycsw-admin.py:
> python /path/to/pycsw-admin.py -c post_xml -x /path/to/xml/sample.xml -u
> http://myhost/cgi-bin/csw.py
> It worked :) but my question is - is there any possibility to do the full
> update for whole directory full of XMLs (all with update tags)? According
> to the information I found here [1], full update should be able to update
> records in DB and also add new ones. I think that maybe we could create all
> XML files as update XMLs and than every time we run post_xml we would have
> all records updated. Would it be possible or am I on the completely wrong
> way?

The underlying functionality of pycsw-admin.py is all scriptable as well, so
you could write a script create a csw:Transaction XML as you describe with
each XML file in a directory written inline.  Having said this, pycsw-admin.py
provides these as convenience functions if you are able to run on the command
line, and the -y flag will force the update.

Hope this helps.


> Thanks for any advice,
> Eva Jelinkova
> [1]
> http://geopython.github.io/pycsw-workshop/docs/advanced/transactions.html
> 2015-07-27 14:41 GMT+02:00 Tom Kralidis <tomkralidis at gmail.com>:
>> On Sun, 26 Jul 2015, Eva Jelínková wrote:
>>  Date: Sun, 26 Jul 2015 23:17:05 +0200
>>> From: Eva Jelínková <evka.jelinkova at gmail.com>
>>> To: pycsw-devel at lists.osgeo.org
>>> Subject: [pycsw-devel] metadata editor
>>> Hi all pycsw people,
>>> we are trying to set a catalog service based on pycsw to store the
>>> information about the data and services in our company. pycsw works well
>> Great to hear this!  If you have endpoint(s), feel free to add them / have
>> them added to our live deployments wiki page [1], which powers our live
>> deployments map [2].
>>  for us, it seems that the only problem is creation of metadata records...
>>> I
>>> have tried GIMED and EUOSME metadata editors but none is good enough for
>>> our case. We need just an easy open source web form (ideally python
>>> based).
>>> It don't have to be valid for all requirements of the INSPIRE directive.
>>> We
>>> will probably develop one but if there is any similar project you know
>>> about, just let me know, please. It would really help us.
>> There are numerous web options out there embedded in applications like
>> GeoNode and CKAN, however at the cost of all the associated machinery.
>> Having said this, as part of another project I'm involved in, we recently
>> released pygeometa [3] which supports creating ISO from a simple
>> ConfigParser
>> file/object.  You could implement a simple Flask [4] based front end to
>> provide a form and saving logic, which would create a pygeometa
>> metadata object and then serialize to a metadata file as desired.  Or, even
>> better, publish directly to pycsw :)
>> ..Tom
>> [1] https://github.com/geopython/pycsw/wiki/Live-Deployments
>> [2] http://pycsw.org/community/
>> [3] https://github.com/geopython/pygeometa
>> [4] http://flask.pocoo.org/

More information about the pycsw-devel mailing list