src/core/import_processor.py
changeset 28 5918a9d353d0
parent 0 4095911a7830
child 33 61c3ffd94f11
equal deleted inserted replaced
27:d5f4dde387a9 28:5918a9d353d0
    22     
    22     
    23     def process(self, obj, value):
    23     def process(self, obj, value):
    24         setattr(obj, self.field, value)
    24         setattr(obj, self.field, value)
    25         return {}
    25         return {}
    26 
    26 
       
    27 class TrimCharFieldProcessor(CharFieldProcessor):
       
    28     
       
    29     def process(self, obj, value):
       
    30         return super(TrimCharFieldProcessor, self).process(obj, value.strip())
       
    31 
    27 class BooleanFieldProcessor(ImportProcessor):
    32 class BooleanFieldProcessor(ImportProcessor):
    28     
    33     
    29     def process(self, obj, value):
    34     def process(self, obj, value):
    30         setattr(obj, self.field, value and value.strip().lower() in ['oui', '1', 't', 'yes', 'y', 'o'])
    35         setattr(obj, self.field, value and value.strip().lower() in ['oui', '1', 't', 'yes', 'y', 'o'])
    31 
    36 
    32 class DateFieldProcessor(ImportProcessor):
    37 class DateFieldProcessor(ImportProcessor):
    33     
    38     
    34     def process(self, obj, value):
    39     def process(self, obj, value):
    35         setattr(obj, self.field, parser.parse(value))
    40         setattr(obj, self.field, parser.parse(value) if value else None)
    36 
    41 
    37 class TermProcessor(ImportProcessor):
    42 class TermProcessor(ImportProcessor):
    38     
    43     
    39     def __init__(self, field, context, notice_term_klass, re_split = "[;,:]", re_sub = "\(.+?\)"):
    44     def __init__(self, field, context, notice_term_klass, re_split = r"[\;\,\:\(\)]", re_sub = "\(.+?\)"):
    40         ImportProcessor.__init__(self, field)
    45         ImportProcessor.__init__(self, field)
    41         self.re_split = re_split
    46         self.re_split = re.compile(re_split)
    42         self.re_sub = re_sub
    47         self.re_sub = re.compile(re_sub) if re_sub else None
    43         self.context = context
    48         self.context = context
    44         self.notice_term_klass = notice_term_klass
    49         self.notice_term_klass = notice_term_klass
    45     
    50     
    46     def build_notice_term(self, token, obj):
    51     def build_notice_term(self, token, obj):
    47         uri = graph.get_uri_for_term(token, context=self.context)
    52         uri = graph.get_uri_for_term(token, context=self.context)
    54     def process(self, obj, value):
    59     def process(self, obj, value):
    55         res = {}
    60         res = {}
    56         #remove everything between ()
    61         #remove everything between ()
    57         value = getattr(obj, self.field)
    62         value = getattr(obj, self.field)
    58         if self.re_sub:
    63         if self.re_sub:
    59             value = re.sub(self.re_sub, "", value)
    64             value = self.re_sub.sub("", value)
    60         for token in re.split(self.re_split, value):
    65         for token in self.re_split.split(value):
    61             token = token.strip()
    66             token = token.strip()
    62             nt = self.build_notice_term(token, obj)
    67             nt = self.build_notice_term(token, obj)
    63             if nt is not None:
    68             if nt is not None:
    64                 res.setdefault(self.notice_term_klass,[]).append(nt)
    69                 res.setdefault(self.notice_term_klass,[]).append(nt)
    65                 
       
    66         return res
    70         return res