From 609f368ce122e163d4692ed33b2b7584724adaa9 Mon Sep 17 00:00:00 2001 From: Robert Sparks Date: Wed, 15 Jul 2015 02:13:48 +0000 Subject: [PATCH] Still clunky but far enough along for sprinters to play with and comment on - Legacy-Id: 9720 --- hack_pres.py | 31 +++++++++++++++++++++ ietf/doc/views_doc.py | 18 ++++++++---- ietf/doc/views_material.py | 21 ++++++++++---- ietf/meeting/models.py | 3 ++ ietf/templates/doc/document_draft.html | 19 +++++++++++++ ietf/templates/meeting/group_materials.html | 9 ++++++ ietf/templates/meeting/materials.html | 1 + 7 files changed, 90 insertions(+), 12 deletions(-) create mode 100755 hack_pres.py diff --git a/hack_pres.py b/hack_pres.py new file mode 100755 index 000000000..9590229cd --- /dev/null +++ b/hack_pres.py @@ -0,0 +1,31 @@ +#!/usr/bin/python + +import os, sys +import django + +#basedir = os.path.abspath(os.path.join(os.path.dirname(os.path.abspath(__file__)), '..')) +#sys.path.insert(0, basedir) +os.environ.setdefault("DJANGO_SETTINGS_MODULE", "ietf.settings") + +django.setup() + +from django.db.utils import IntegrityError +from ietf.meeting.views import session_draft_list +from ietf.meeting.models import Meeting +from ietf.doc.models import Document + +m93 = Meeting.objects.get(number=93) + +for acronym in set(m93.agenda.scheduledsession_set.values_list('session__group__acronym',flat=True)): + for namerev in session_draft_list(93,acronym): + name=namerev[:-3] + rev = namerev[-2:] + doc = Document.objects.filter(docalias__name=name).first() + if not doc: + print "Can't find anything named",name + else: + for session in m93.session_set.filter(group__acronym=acronym): + try: + session.sessionpresentation_set.get_or_create(document=doc,rev=rev) + except IntegrityError: + print "No luck on ",acronym,"->",name,rev diff --git a/ietf/doc/views_doc.py b/ietf/doc/views_doc.py index efc5db1df..026fbc47e 100644 --- a/ietf/doc/views_doc.py +++ b/ietf/doc/views_doc.py @@ -299,6 +299,8 @@ def document_main(request, name, rev=None): status_changes = [ rel.document for rel in status_change_docs if rel.document.get_state_slug() in ('appr-sent','appr-pend')] proposed_status_changes = [ rel.document for rel in status_change_docs if rel.document.get_state_slug() in ('needshep','adrev','iesgeval','defer','appr-pr')] + presentations = doc.future_presentations() + # remaining actions actions = [] @@ -361,6 +363,7 @@ def document_main(request, name, rev=None): table_rows['stream'] += 1 if consensus else 0 table_rows['stream'] += 1 if shepherd_writeup or can_edit_shepherd_writeup else 0 table_rows['stream'] += 1 if published and started_iesg_process and published.time < started_iesg_process.time else 0 + table_rows['stream'] += 1 if presentations or can_edit_stream_info else 0 table_rows['iesg'] += 1 if iesg_state and (doc.note or can_edit) else 0 @@ -422,6 +425,7 @@ def document_main(request, name, rev=None): search_archive=search_archive, actions=actions, tracking_document=tracking_document, + presentations=presentations, ), context_instance=RequestContext(request)) @@ -540,13 +544,15 @@ def document_main(request, name, rev=None): if doc.type_id in ("slides", "agenda", "minutes"): can_manage_material = can_manage_materials(request.user, doc.group) - presentations = None - if doc.type_id=='slides' and doc.get_state_slug('slides')=='active' : - presentations = doc.future_presentations() + #presentations = None + #if doc.type_id=='slides' and doc.get_state_slug('slides')=='active' : + # presentations = doc.future_presentations() + presentations = doc.future_presentations() if doc.meeting_related(): - # disallow editing meeting-related stuff through this - # interface for the time being - can_manage_material = False + ## disallow editing meeting-related stuff through this + ## interface for the time being + # Now try allowing it + # can_manage_material = False basename = doc.canonical_name() # meeting materials are unversioned at the moment if doc.external_url: # we need to remove the extension for the globbing below to work diff --git a/ietf/doc/views_material.py b/ietf/doc/views_material.py index c1c5f6c3c..9747ae994 100644 --- a/ietf/doc/views_material.py +++ b/ietf/doc/views_material.py @@ -250,11 +250,15 @@ def get_upcoming_manageable_sessions(user, doc, acronym=None, date=None, seq=Non def edit_material_presentations(request, name, acronym=None, date=None, seq=None, week_day=None): doc = get_object_or_404(Document, name=name) - if not (doc.type_id=='slides' and doc.get_state('slides').slug=='active'): - raise Http404 + + # For now, allow any document type, in any state to be put on an agenda. + # if not (doc.type_id=='slides' and doc.get_state('slides').slug=='active'): + # raise Http404 group = doc.group - if not (group.features.has_materials and can_manage_materials(request.user,group)): + + #if not (group.features.has_materials and can_manage_materials(request.user,group)): + if not can_manage_materials(request.user,group): raise Http404 sorted_sessions = get_upcoming_manageable_sessions(request.user, doc, acronym, date, seq, week_day) @@ -301,11 +305,16 @@ def edit_material_presentations(request, name, acronym=None, date=None, seq=None def material_presentations(request, name, acronym=None, date=None, seq=None, week_day=None): doc = get_object_or_404(Document, name=name) - if not (doc.type_id=='slides' and doc.get_state('slides').slug=='active'): - raise Http404 + + # For now, allow any document type, in any state to be put on an agenda. + #if not (doc.type_id=='slides' and doc.get_state('slides').slug=='active'): + # raise Http404 group = doc.group - if not (group.features.has_materials and can_manage_materials(request.user,group)): + + #if not (group.features.has_materials and can_manage_materials(request.user,group)): + + if not can_manage_materials(request.user,group): raise Http404 sorted_sessions = get_upcoming_manageable_sessions(request.user, doc, acronym, date, seq, week_day) diff --git a/ietf/meeting/models.py b/ietf/meeting/models.py index bcecac490..02525e52d 100644 --- a/ietf/meeting/models.py +++ b/ietf/meeting/models.py @@ -895,6 +895,9 @@ class Session(models.Model): def slides(self): return list(self.materials.filter(type='slides').exclude(states__type='slides',states__slug='deleted').order_by('order')) + def drafts(self): + return list(self.materials.filter(type='draft')) + def __unicode__(self): if self.meeting.type_id == "interim": return self.meeting.number diff --git a/ietf/templates/doc/document_draft.html b/ietf/templates/doc/document_draft.html index 7cf63883f..58de392d4 100644 --- a/ietf/templates/doc/document_draft.html +++ b/ietf/templates/doc/document_draft.html @@ -196,6 +196,25 @@ {% endif %} + {% if presentations or can_edit_stream_info %} + + On Agenda + + {% if not snapshot and can_edit_stream_info %} + {% doc_edit_button "material_presentations" name=doc.name %} + {% endif %} + + + + {% if presentations %} + {% for pres in presentations %}{{ pres.session.short_name }} at {{ pres.session.meeting }} {% if pres.rev != doc.rev %}(version -{{ pres.rev }}){% endif %}{% if not forloop.last %}, {% endif %}{% endfor %} + {% else %} + None + {% endif %} + + + {% endif %} + Document shepherd diff --git a/ietf/templates/meeting/group_materials.html b/ietf/templates/meeting/group_materials.html index af8299d45..f5432b7c2 100644 --- a/ietf/templates/meeting/group_materials.html +++ b/ietf/templates/meeting/group_materials.html @@ -48,6 +48,15 @@ {% endfor %} {% endwith %} + + {% with session.drafts as drafts %} + {% for draft in drafts %} + {{ draft.canonical_name }}
+ {% empty %} + No drafts + {% endfor %} + {% endwith %} + {% endif %} diff --git a/ietf/templates/meeting/materials.html b/ietf/templates/meeting/materials.html index 36912db99..f5a015479 100644 --- a/ietf/templates/meeting/materials.html +++ b/ietf/templates/meeting/materials.html @@ -64,6 +64,7 @@ Agenda Minutes Slides + Drafts