datatracker/ietf/bin/create-charter-newrevisiondocevents
2016-12-16 17:50:04 +00:00

73 lines
2.5 KiB
Python
Executable file

#!/usr/bin/env python
import os
import sys
version = "0.10"
program = os.path.basename(sys.argv[0])
progdir = os.path.dirname(sys.argv[0])
# boilerplate
basedir = os.path.abspath(os.path.join(os.path.dirname(__file__), "../.."))
sys.path = [ basedir ] + sys.path
os.environ["DJANGO_SETTINGS_MODULE"] = "ietf.settings"
virtualenv_activation = os.path.join(basedir, "env", "bin", "activate_this.py")
if os.path.exists(virtualenv_activation):
execfile(virtualenv_activation, dict(__file__=virtualenv_activation))
# ----------------------------------------------------------------------
def note(string):
sys.stdout.write("%s\n" % (string))
# ----------------------------------------------------------------------
def warn(string):
sys.stderr.write(" * %s\n" % (string))
# ------------------------------------------------------------------------------
import re
from datetime import datetime as Datetime
import django
django.setup()
from django.conf import settings
from ietf.utils.path import path as Path
from ietf.doc.models import Document, NewRevisionDocEvent
from ietf.person.models import Person
system_entity = Person.objects.get(name="(System)")
charterdir = Path(settings.CHARTER_PATH)
for file in charterdir.files("charter-ietf-*.txt"):
fname = file.name
ftime = Datetime.fromtimestamp(file.mtime)
match = re.search("^(?P<name>[a-z0-9-]+)-(?P<rev>\d\d-\d\d)\.txt$", fname)
if match:
name = match.group("name")
rev = match.group("rev")
else:
match = re.search("^(?P<name>[a-z0-9-]+)-(?P<rev>\d\d)\.txt$", fname)
if match:
name = match.group("name")
rev = match.group("rev")
else:
warn("Failed extracting revision from filename: '%s'" % fname)
try:
doc = Document.objects.get(type="charter", name=name)
try:
event = NewRevisionDocEvent.objects.get(doc=doc, type='new_revision', rev=rev)
note(".")
except NewRevisionDocEvent.MultipleObjectsReturned, e:
warn("Multiple NewRevisionDocEvent exists for '%s'" % fname)
except NewRevisionDocEvent.DoesNotExist:
event = NewRevisionDocEvent(doc=doc, type='new_revision', rev=rev, by=system_entity, time=ftime, desc="")
event.save()
note("Created new NewRevisionDocEvent for %s-%s" % (name, rev))
except Document.DoesNotExist:
warn("Document not found: '%s'; no NewRevisionDocEvent created for '%s'" % (name, fname))