import subprocess, os from django.http import HttpResponse from django.shortcuts import render_to_response from django.template import RequestContext from django.template.loader import render_to_string from django import forms from django.db.models import Q from ietf.ietfauth.decorators import role_required from ietf.doc.models import * from ietf.sync import iana, rfceditor from ietf.sync.discrepancies import find_discrepancies SYNC_BIN_PATH = os.path.abspath(os.path.join(os.path.dirname(os.path.abspath(__file__)), "../bin")) #@role_required('Secretariat', 'IANA', 'RFC Editor') def discrepancies(request): sections = find_discrepancies() return render_to_response("sync/discrepancies.html", dict(sections=sections), context_instance=RequestContext(request)) class UpdateIanaForm(forms.Form): protocols_page = forms.BooleanField(initial=False, required=False, help_text="For when a reference to an RFC has been added to the IANA protocols page" % iana.PROTOCOLS_URL) changes = forms.BooleanField(initial=False, required=False, help_text="For new changes at the changes JSON dump" % iana.CHANGES_URL) def update_iana(request): if request.method == 'POST': form = UpdateIanaForm(request.POST) if form.is_valid(): failed = False if form.cleaned_data["protocols_page"]: failed = failed or subprocess.call(["python", os.path.join(SYNC_BIN_PATH, "iana-protocols-updates")]) if form.cleaned_data["changes"]: failed = failed or subprocess.call(["python", os.path.join(SYNC_BIN_PATH, "iana-changes-updates")]) if failed: return HttpResponse("FAIL") else: return HttpResponse("OK") else: form = UpdateIanaForm() return render_to_response('sync/update.html', dict(form=form, org="IANA", ), context_instance=RequestContext(request)) class UpdateRFCEditorForm(forms.Form): queue = forms.BooleanField(initial=False, required=False, help_text="For when queue2.xml has been updated" % rfceditor.QUEUE_URL) index = forms.BooleanField(initial=False, required=False, help_text="For when rfc-index.xml has been updated" % rfceditor.INDEX_URL) def update_rfc_editor(request): if request.method == 'POST': form = UpdateRFCEditorForm(request.POST) if form.is_valid(): failed = False if form.cleaned_data["queue"]: failed = failed or subprocess.call(["python", os.path.join(SYNC_BIN_PATH, "rfc-editor-queue-updates")]) if form.cleaned_data["index"]: failed = failed or subprocess.call(["python", os.path.join(SYNC_BIN_PATH, "rfc-editor-index-updates")]) if failed: return HttpResponse("FAIL") else: return HttpResponse("OK") else: form = UpdateRFCEditorForm() return render_to_response('sync/update.html', dict(form=form, org="RFC Editor", ), context_instance=RequestContext(request))