Skip to content

Commit c5e364d

Browse files
committed
Added a script to create NewRevisionDocEvent entries for charter files.
- Legacy-Id: 4859
1 parent 153d34c commit c5e364d

2 files changed

Lines changed: 1050 additions & 0 deletions

File tree

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
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

Comments
 (0)