#!/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 import 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.datetime.fromtimestamp(file.mtime, datetime.timezone.utc) match = re.search("^(?P[a-z0-9-]+)-(?P\d\d-\d\d)\.txt$", fname) if match: name = match.group("name") rev = match.group("rev") else: match = re.search("^(?P[a-z0-9-]+)-(?P\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))