]> git.parisson.com Git - telemeta-data.git/commitdiff
migration: use some heuristics to make a difference between month/year and day/month
authorolivier <olivier@3bf09e05-f825-4182-b9bc-eedd7160adf0>
Thu, 11 Jun 2009 17:13:11 +0000 (17:13 +0000)
committerolivier <olivier@3bf09e05-f825-4182-b9bc-eedd7160adf0>
Thu, 11 Jun 2009 17:13:11 +0000 (17:13 +0000)
git-svn-id: http://svn.parisson.org/svn/crem@102 3bf09e05-f825-4182-b9bc-eedd7160adf0

trunk/import/migration/tasks/dates.py

index 61ff83764d014ed4f5956661fae61d7e801d57b6..6b35f5e4c208c0ae1be1287b1b834de29a1a5763 100644 (file)
@@ -80,9 +80,9 @@ class CollectionsYearConverter(DataMigrator):
                     match = re.match(r'^([0-9]{2,4})[;/,>?-]?$', year_str)
                 
                 if match:
-                    from_year = self.parse_year(int(match.group(1)))
+                    from_year = self.parse_year(match.group(1))
                     if match.lastindex > 1:
-                        to_year = self.parse_year(int(match.group(2)))
+                        to_year = self.parse_year(match.group(2))
                     else:
                         to_year = from_year
 
@@ -130,10 +130,18 @@ class ItemsDateConverter(DataMigrator):
 
     def parse_date_data(self, data, default_year, month_names):
         
+        if data.has_key('month_or_year') and int(data['month_or_year']):
+            if int(data['month_or_year']) <= 12 and default_year:
+                data['month'] = data['month_or_year']
+                data['day']   = data['day_or_month']
+            else:
+                data['year']  = data['month_or_year']
+                data['month'] = data['day_or_month']
+                
         if data.has_key('year') and int(data['year']):
-            year = self.parse_year(int(data['year']))
+            year = self.parse_year(data['year'])
             if data.has_key('until_year'):
-                until_year = self.parse_year(int(data['until_year']))
+                until_year = self.parse_year(data['until_year'])
             else:
                 until_year = year
         else:
@@ -214,8 +222,10 @@ class ItemsDateConverter(DataMigrator):
             # from and until year
             ur'^ *(?P<year>[0-9]{4}) *[/,-] *(?P<until_year>[0-9]{2,4}) *$',
 
+            # day and month or month and year
+            ur'^ *(?P<day_or_month>[0-9]{1,2}) *[_./-] *(?P<month_or_year>[0-9]{2,4}) *$',
+
             # month and year
-            ur'^ *(?P<month>[0-9]{1,2}) *[_./-] *(?P<year>[0-9]{2,4}) *$',
             ur'^ *(?P<name>' + namepattern  + ') *\.? *(?P<year>[0-9]{2,4}) *-'
                ' *(?P<until_name>' + namepattern  + ') *\.? *(?P<until_year>[0-9]{2,4}) *$',
             ur'^ *(début|mi|fin|) *(?P<name>' + namepattern  + ') *(?P<year>[0-9]{2,4})[ ?]*$',
@@ -262,7 +272,7 @@ class ItemsDateConverter(DataMigrator):
 
             old_code        = row[0]
             year_str        = row[1]
-            default_year    = self.parse_year(int(year_str))
+            default_year    = self.parse_year(year_str)
             date_str        = row[2]
 
             data = {}