summaryrefslogtreecommitdiff
path: root/chimere/utils.py
diff options
context:
space:
mode:
Diffstat (limited to 'chimere/utils.py')
-rw-r--r--chimere/utils.py27
1 files changed, 22 insertions, 5 deletions
diff --git a/chimere/utils.py b/chimere/utils.py
index f3ec751..73e38ba 100644
--- a/chimere/utils.py
+++ b/chimere/utils.py
@@ -73,7 +73,7 @@ class ImportManager(object):
raise NotImplementedError
def create_or_update_item(self, cls, values, import_key, version=None,
- key='', pk=None):
+ key='', pk=None, category=None):
updated, created, item = False, False, None
import_key = unicode(import_key).replace(':', '^')
if not values.get('name'):
@@ -138,8 +138,11 @@ class ImportManager(object):
if import_key:
item.set_key(key, import_key)
item.categories.clear()
- for cat in self.importer_instance.categories.all():
- item.categories.add(cat)
+ if category:
+ item.categories.add(category)
+ else:
+ for cat in self.importer_instance.categories.all():
+ item.categories.add(cat)
return item, updated, created
@classmethod
@@ -964,6 +967,8 @@ class HtmlXsltManager(ImportManager):
val = re.sub(r, replaced % {'base_url':base_url}, val)
item[k] = html_unescape(val)
updated_item, new_item = 0, 0
+ key_categories = self.importer_instance.get_key_category_dict()
+ missing_cats = set()
for item in items:
if not self.importer_instance.default_localisation and \
not "point" in item and not ("lat" in item and item['lat']):
@@ -973,6 +978,12 @@ class HtmlXsltManager(ImportManager):
self.importer_instance.origin),
'license':self.importer_instance.license,
'name':item['name']}
+ category = None
+ if 'category' in item and item['category']:
+ if item['category'] in key_categories:
+ category = key_categories[item['category']]
+ else:
+ missing_cats.add(item['category'])
cls = Marker
if 'point' in item:
x, y = item['point'].split(",")
@@ -1008,12 +1019,18 @@ class HtmlXsltManager(ImportManager):
int(values['day2']))
break
key = item['key']
- it, updated, created = self.create_or_update_item(cls, dct, key)
+ it, updated, created = self.create_or_update_item(cls, dct, key,
+ category=category)
if updated:
updated_item += 1
if created:
new_item += 1
- return (new_item, updated_item, '')
+ msg = ''
+ if missing_cats:
+ msg = _(u"Names \"%s\" doesn't match existing categories. "
+ u"Modify the import to match theses names with categories.") % (
+ u'", "'.join(missing_cats))
+ return (new_item, updated_item, msg)
class XMLXsltManager(HtmlXsltManager):
PARSER = 'XMLParser'