From 6e4d27ca5bad61b5d4bb977adf2445b40a8db174 Mon Sep 17 00:00:00 2001 From: Henrik Levkowetz Date: Thu, 25 Oct 2012 21:18:06 +0000 Subject: [PATCH] Added a management command to generate bibxml files for drafts. It's not fully cooked yet, as it needs to differentiate between documents which are currently drafts, and those that have been published as RFCs, but the basics are there. - Legacy-Id: 4953 --- ietf/doc/management/__init__.py | 0 ietf/doc/management/commands/__init__.py | 0 .../commands/generate_draft_bibxml_files.py | 38 +++++++++++++++++++ ietf/settings.py | 6 +++ ietf/templates/doc/bibxml.xml | 15 ++++++++ 5 files changed, 59 insertions(+) create mode 100644 ietf/doc/management/__init__.py create mode 100644 ietf/doc/management/commands/__init__.py create mode 100644 ietf/doc/management/commands/generate_draft_bibxml_files.py create mode 100644 ietf/templates/doc/bibxml.xml diff --git a/ietf/doc/management/__init__.py b/ietf/doc/management/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/ietf/doc/management/commands/__init__.py b/ietf/doc/management/commands/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/ietf/doc/management/commands/generate_draft_bibxml_files.py b/ietf/doc/management/commands/generate_draft_bibxml_files.py new file mode 100644 index 000000000..a8e4d358e --- /dev/null +++ b/ietf/doc/management/commands/generate_draft_bibxml_files.py @@ -0,0 +1,38 @@ +import sys +import os + +from django.core.management.base import BaseCommand +from django.db.models import Q +from django.conf import settings +from django.template.loader import render_to_string + +from ietf.doc.models import Document + +def write(fn, new): + try: + f = open(fn) + old = f.read().decode('utf-8') + f.close + except IOError: + old = "" + if old.strip() != new.strip(): + sys.stdout.write(os.path.basename(fn)+'\n') + f = open(fn, "wb") + f.write(new.encode('utf-8')) + f.close() + +class Command(BaseCommand): + help = (u'Generate draft bibxml files, for xml2rfc references') + + def handle(self, *args, **options): + documents = Document.objects.filter(type__slug='draft') + bibxmldir = os.path.join(settings.BIBXML_BASE_PATH, 'bibxml3') + if not os.path.exists(bibxmldir): + os.makedirs(bibxmldir) + for doc in documents: + ref_text = render_to_string('doc/bibxml.xml', {'doc': doc, 'doc_bibtype':'I-D'}) + ref_file_name = os.path.join(bibxmldir, 'reference.I-D.%s.xml' % (doc.name, )) + ref_rev_file_name = os.path.join(bibxmldir, 'reference.I-D.%s-%s.xml' % (doc.name, doc.rev)) + write(ref_file_name, ref_text) + write(ref_rev_file_name, ref_text) + \ No newline at end of file diff --git a/ietf/settings.py b/ietf/settings.py index 4b6eefa8b..a8c7a6e89 100644 --- a/ietf/settings.py +++ b/ietf/settings.py @@ -294,6 +294,12 @@ USE_DB_REDESIGN_PROXY_CLASSES = True SOUTH_TESTS_MIGRATE = False +# Generation of bibxml files for xml2rfc +BIBXML_BASE_PATH = '/a/www/ietf-ftp/xml2rfc' + +# Timezone files for iCalendar +TZDATA_ICS_PATH = '/www/ietf-datatracker/tz/ics/' + # Put SECRET_KEY in here, or any other sensitive or site-specific # changes. DO NOT commit settings_local.py to svn. from settings_local import * diff --git a/ietf/templates/doc/bibxml.xml b/ietf/templates/doc/bibxml.xml new file mode 100644 index 000000000..8d402f144 --- /dev/null +++ b/ietf/templates/doc/bibxml.xml @@ -0,0 +1,15 @@ + + + + {{doc.title}} + {% for entry in doc.authors.all %}{% with entry.address as email %}{% with entry.person as author %} + + {{author.affiliation}} + + {% endwith %}{% endwith %}{% endfor %} + + {{doc.abstract}} + + + +