src/core/import_processor.py
changeset 28 5918a9d353d0
parent 0 4095911a7830
child 33 61c3ffd94f11
--- a/src/core/import_processor.py	Fri Jun 21 17:09:03 2013 +0200
+++ b/src/core/import_processor.py	Mon Jun 24 00:38:29 2013 +0200
@@ -24,6 +24,11 @@
         setattr(obj, self.field, value)
         return {}
 
+class TrimCharFieldProcessor(CharFieldProcessor):
+    
+    def process(self, obj, value):
+        return super(TrimCharFieldProcessor, self).process(obj, value.strip())
+
 class BooleanFieldProcessor(ImportProcessor):
     
     def process(self, obj, value):
@@ -32,14 +37,14 @@
 class DateFieldProcessor(ImportProcessor):
     
     def process(self, obj, value):
-        setattr(obj, self.field, parser.parse(value))
+        setattr(obj, self.field, parser.parse(value) if value else None)
 
 class TermProcessor(ImportProcessor):
     
-    def __init__(self, field, context, notice_term_klass, re_split = "[;,:]", re_sub = "\(.+?\)"):
+    def __init__(self, field, context, notice_term_klass, re_split = r"[\;\,\:\(\)]", re_sub = "\(.+?\)"):
         ImportProcessor.__init__(self, field)
-        self.re_split = re_split
-        self.re_sub = re_sub
+        self.re_split = re.compile(re_split)
+        self.re_sub = re.compile(re_sub) if re_sub else None
         self.context = context
         self.notice_term_klass = notice_term_klass
     
@@ -56,11 +61,10 @@
         #remove everything between ()
         value = getattr(obj, self.field)
         if self.re_sub:
-            value = re.sub(self.re_sub, "", value)
-        for token in re.split(self.re_split, value):
+            value = self.re_sub.sub("", value)
+        for token in self.re_split.split(value):
             token = token.strip()
             nt = self.build_notice_term(token, obj)
             if nt is not None:
                 res.setdefault(self.notice_term_klass,[]).append(nt)
-                
         return res