<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;
        mso-fareast-language:EN-US;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:#0563C1;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:#954F72;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri",sans-serif;
        mso-fareast-language:EN-US;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:72.0pt 72.0pt 72.0pt 72.0pt;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-GB" link="#0563C1" vlink="#954F72">
<div class="WordSection1">
<p class="MsoNormal">Hi all,<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">I’m encountering an error related to Hierarchical Keywords when trying to add a layer to geonode using file_upload(). The h_keyword (“human health”) has already been added previously when adding another layer. I’m not sure if this is a
 bug in _HierarchicalTagManager.add()? <a href="https://github.com/GeoNode/geonode/blob/master/geonode/base/models.py#L276">
https://github.com/GeoNode/geonode/blob/master/geonode/base/models.py#L276</a> <o:p>
</o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Any help would be appreciated<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Thanks<o:p></o:p></p>
<p class="MsoNormal">Gavin<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">>>> layer = file_upload(filename='/home/ec2-user/test/ospar_encounters_2012_01.shp', name='Encounters2012', user=ospar, abstract='encounters 2012 test', overwrite=True, metadata_uploaded_preserve=True)<o:p></o:p></p>
<p class="MsoNormal">Traceback (most recent call last):<o:p></o:p></p>
<p class="MsoNormal">  File "<console>", line 1, in <module><o:p></o:p></p>
<p class="MsoNormal">  File "/opt/python/run/venv/src/geonode/geonode/layers/utils.py", line 514, in file_upload<o:p></o:p></p>
<p class="MsoNormal">    layer.keywords.add(*keywords)<o:p></o:p></p>
<p class="MsoNormal">  File "/opt/python/run/venv/src/geonode/geonode/base/models.py", line 291, in add<o:p></o:p></p>
<p class="MsoNormal">    tag_objs.add(HierarchicalKeyword.add_root(name=new_tag))<o:p></o:p></p>
<p class="MsoNormal">  File "/opt/python/run/venv/local/lib/python2.7/site-packages/treebeard/mp_tree.py", line 593, in add_root<o:p></o:p></p>
<p class="MsoNormal">    return MP_AddRootHandler(cls, **kwargs).process()<o:p></o:p></p>
<p class="MsoNormal">  File "/opt/python/run/venv/local/lib/python2.7/site-packages/treebeard/mp_tree.py", line 295, in process<o:p></o:p></p>
<p class="MsoNormal">    return last_root.add_sibling('sorted-sibling', **self.kwargs)<o:p></o:p></p>
<p class="MsoNormal">  File "/opt/python/run/venv/local/lib/python2.7/site-packages/treebeard/mp_tree.py", line 982, in add_sibling<o:p></o:p></p>
<p class="MsoNormal">    return MP_AddSiblingHandler(self, pos, **kwargs).process()<o:p></o:p></p>
<p class="MsoNormal">  File "/opt/python/run/venv/local/lib/python2.7/site-packages/treebeard/mp_tree.py", line 420, in process<o:p></o:p></p>
<p class="MsoNormal">    newobj.save()<o:p></o:p></p>
<p class="MsoNormal">  File "/opt/python/run/venv/local/lib/python2.7/site-packages/taggit/models.py", line 86, in save<o:p></o:p></p>
<p class="MsoNormal">    return super(TagBase, self).save(*args, **kwargs)<o:p></o:p></p>
<p class="MsoNormal">  File "/opt/python/run/venv/local/lib/python2.7/site-packages/django/db/models/base.py", line 734, in save<o:p></o:p></p>
<p class="MsoNormal">    force_update=force_update, update_fields=update_fields)<o:p></o:p></p>
<p class="MsoNormal">  File "/opt/python/run/venv/local/lib/python2.7/site-packages/django/db/models/base.py", line 762, in save_base<o:p></o:p></p>
<p class="MsoNormal">    updated = self._save_table(raw, cls, force_insert, force_update, using, update_fields)<o:p></o:p></p>
<p class="MsoNormal">  File "/opt/python/run/venv/local/lib/python2.7/site-packages/django/db/models/base.py", line 846, in _save_table<o:p></o:p></p>
<p class="MsoNormal">    result = self._do_insert(cls._base_manager, using, fields, update_pk, raw)<o:p></o:p></p>
<p class="MsoNormal">  File "/opt/python/run/venv/local/lib/python2.7/site-packages/django/db/models/base.py", line 885, in _do_insert<o:p></o:p></p>
<p class="MsoNormal">    using=using, raw=raw)<o:p></o:p></p>
<p class="MsoNormal">  File "/opt/python/run/venv/local/lib/python2.7/site-packages/django/db/models/manager.py", line 127, in manager_method<o:p></o:p></p>
<p class="MsoNormal">    return getattr(self.get_queryset(), name)(*args, **kwargs)<o:p></o:p></p>
<p class="MsoNormal">  File "/opt/python/run/venv/local/lib/python2.7/site-packages/django/db/models/query.py", line 920, in _insert<o:p></o:p></p>
<p class="MsoNormal">    return query.get_compiler(using=using).execute_sql(return_id)<o:p></o:p></p>
<p class="MsoNormal">  File "/opt/python/run/venv/local/lib/python2.7/site-packages/django/db/models/sql/compiler.py", line 974, in execute_sql<o:p></o:p></p>
<p class="MsoNormal">    cursor.execute(sql, params)<o:p></o:p></p>
<p class="MsoNormal">  File "/opt/python/run/venv/local/lib/python2.7/site-packages/django/db/backends/utils.py", line 79, in execute<o:p></o:p></p>
<p class="MsoNormal">    return super(CursorDebugWrapper, self).execute(sql, params)<o:p></o:p></p>
<p class="MsoNormal">  File "/opt/python/run/venv/local/lib/python2.7/site-packages/django/db/backends/utils.py", line 64, in execute<o:p></o:p></p>
<p class="MsoNormal">    return self.cursor.execute(sql, params)<o:p></o:p></p>
<p class="MsoNormal">  File "/opt/python/run/venv/local/lib/python2.7/site-packages/django/db/utils.py", line 98, in __exit__<o:p></o:p></p>
<p class="MsoNormal">    six.reraise(dj_exc_type, dj_exc_value, traceback)<o:p></o:p></p>
<p class="MsoNormal">  File "/opt/python/run/venv/local/lib/python2.7/site-packages/django/db/backends/utils.py", line 64, in execute<o:p></o:p></p>
<p class="MsoNormal">    return self.cursor.execute(sql, params)<o:p></o:p></p>
<p class="MsoNormal">IntegrityError: duplicate key value violates unique constraint "base_hierarchicalkeyword_name_key"<o:p></o:p></p>
<p class="MsoNormal">DETAIL:  Key (name)=(human health) already exists.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">The snippet of the xml metadata containing the keywords:<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><gmd:descriptiveKeywords><o:p></o:p></p>
<p class="MsoNormal"><gmd:MD_Keywords><o:p></o:p></p>
<p class="MsoNormal"><gmd:keyword><o:p></o:p></p>
<p class="MsoNormal"><gco:CharacterString>Human health and safety</gco:CharacterString><o:p></o:p></p>
<p class="MsoNormal"></gmd:keyword><o:p></o:p></p>
<p class="MsoNormal"><gmd:thesaurusName><o:p></o:p></p>
<p class="MsoNormal"><gmd:CI_Citation><o:p></o:p></p>
<p class="MsoNormal"><gmd:title><o:p></o:p></p>
<p class="MsoNormal"><gco:CharacterString>GEMET - INSPIRE themes, version 1.0</gco:CharacterString><o:p></o:p></p>
<p class="MsoNormal"></gmd:title><o:p></o:p></p>
<p class="MsoNormal"><gmd:date><o:p></o:p></p>
<p class="MsoNormal"><gmd:CI_Date><o:p></o:p></p>
<p class="MsoNormal"><gmd:date><o:p></o:p></p>
<p class="MsoNormal"><gco:Date>2010-01-13</gco:Date><o:p></o:p></p>
<p class="MsoNormal"></gmd:date><o:p></o:p></p>
<p class="MsoNormal"><gmd:dateType><o:p></o:p></p>
<p class="MsoNormal"><gmd:CI_DateTypeCode codeList="http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_DateTypeCode" codeListValue="publication">publication</gmd:CI_DateTypeCode><o:p></o:p></p>
<p class="MsoNormal"></gmd:dateType><o:p></o:p></p>
<p class="MsoNormal"></gmd:CI_Date><o:p></o:p></p>
<p class="MsoNormal"></gmd:date><o:p></o:p></p>
<p class="MsoNormal"></gmd:CI_Citation><o:p></o:p></p>
<p class="MsoNormal"></gmd:thesaurusName><o:p></o:p></p>
<p class="MsoNormal"></gmd:MD_Keywords><o:p></o:p></p>
<p class="MsoNormal"></gmd:descriptiveKeywords><o:p></o:p></p>
<p class="MsoNormal"><gmd:descriptiveKeywords><o:p></o:p></p>
<p class="MsoNormal"><gmd:MD_Keywords><o:p></o:p></p>
<p class="MsoNormal"><gmd:keyword><o:p></o:p></p>
<p class="MsoNormal"><gco:CharacterString>human health</gco:CharacterString><o:p></o:p></p>
<p class="MsoNormal"></gmd:keyword><o:p></o:p></p>
<p class="MsoNormal"><gmd:thesaurusName><o:p></o:p></p>
<p class="MsoNormal"><gmd:CI_Citation><o:p></o:p></p>
<p class="MsoNormal"><gmd:title><o:p></o:p></p>
<p class="MsoNormal"><gco:CharacterString>GEMET - Themes, version 2.4</gco:CharacterString><o:p></o:p></p>
<p class="MsoNormal"></gmd:title><o:p></o:p></p>
<p class="MsoNormal"><gmd:date><o:p></o:p></p>
<p class="MsoNormal"><gmd:CI_Date><o:p></o:p></p>
<p class="MsoNormal"><gmd:date><o:p></o:p></p>
<p class="MsoNormal"><gco:Date>2010-01-13</gco:Date><o:p></o:p></p>
<p class="MsoNormal"></gmd:date><o:p></o:p></p>
<p class="MsoNormal"><gmd:dateType><o:p></o:p></p>
<p class="MsoNormal"><gmd:CI_DateTypeCode codeList="http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_DateTypeCode" codeListValue="publication">publication</gmd:CI_DateTypeCode><o:p></o:p></p>
<p class="MsoNormal"></gmd:dateType><o:p></o:p></p>
<p class="MsoNormal"></gmd:CI_Date><o:p></o:p></p>
<p class="MsoNormal"></gmd:date><o:p></o:p></p>
<p class="MsoNormal"></gmd:CI_Citation><o:p></o:p></p>
<p class="MsoNormal"></gmd:thesaurusName><o:p></o:p></p>
<p class="MsoNormal"></gmd:MD_Keywords><o:p></o:p></p>
<p class="MsoNormal"></gmd:descriptiveKeywords><o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</body>
</html>