1+ #!/usr/bin/env python
2+
3+ import os
4+ import sys
5+
6+ version = "0.10"
7+ program = os .path .basename (sys .argv [0 ])
8+ progdir = os .path .dirname (sys .argv [0 ])
9+
10+ # assume we're placed in ietf/bin/:
11+ sys .path = [progdir + "/../../" ] + sys .path
12+ os .environ ["DJANGO_SETTINGS_MODULE" ] = "ietf.settings"
13+
14+ # ----------------------------------------------------------------------
15+ def note (string ):
16+ sys .stdout .write ("%s\n " % (string ))
17+
18+ # ----------------------------------------------------------------------
19+ def warn (string ):
20+ sys .stderr .write (" * %s\n " % (string ))
21+
22+ # ------------------------------------------------------------------------------
23+
24+ import re
25+ from datetime import datetime as Datetime
26+
27+ from django .conf import settings
28+
29+ from ietf .utils .path import path as Path
30+ from ietf .doc .models import Document , NewRevisionDocEvent
31+ from ietf .person .models import Person
32+
33+ system_entity = Person .objects .get (name = "(System)" )
34+
35+ charterdir = Path (settings .CHARTER_PATH )
36+ for file in charterdir .files ("charter-ietf-*.txt" ):
37+ fname = file .name
38+ ftime = Datetime .fromtimestamp (file .mtime )
39+ match = re .search ("^(?P<name>[a-z0-9-]+)-(?P<rev>\d\d-\d\d)\.txt$" , fname )
40+ if match :
41+ name = match .group ("name" )
42+ rev = match .group ("rev" )
43+ else :
44+ match = re .search ("^(?P<name>[a-z0-9-]+)-(?P<rev>\d\d)\.txt$" , fname )
45+ if match :
46+ name = match .group ("name" )
47+ rev = match .group ("rev" )
48+ else :
49+ warn ("Failed extracting revision from filename: '%s'" % fname )
50+ try :
51+ doc = Document .objects .get (type = "charter" , name = name )
52+ try :
53+ event = NewRevisionDocEvent .objects .get (doc = doc , type = 'new_revision' , rev = rev )
54+ note ("." )
55+ except NewRevisionDocEvent .MultipleObjectsReturned , e :
56+ warn ("Multiple NewRevisionDocEvent exists for '%s'" % fname )
57+ except NewRevisionDocEvent .DoesNotExist :
58+ event = NewRevisionDocEvent (doc = doc , type = 'new_revision' , rev = rev , by = system_entity , time = ftime , desc = "" )
59+ event .save ()
60+ note ("Created new NewRevisionDocEvent for %s-%s" % (name , rev ))
61+ except Document .DoesNotExist :
62+ warn ("Document not found: '%s'; no NewRevisionDocEvent created for '%s'" % (name , fname ))
63+
0 commit comments