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 |