diff --git a/ietf/doc/templatetags/ietf_filters.py b/ietf/doc/templatetags/ietf_filters.py
index 2d03d55f4..fd9bb2df7 100644
--- a/ietf/doc/templatetags/ietf_filters.py
+++ b/ietf/doc/templatetags/ietf_filters.py
@@ -447,7 +447,11 @@ def format_history_text(text):
if text.startswith("This was part of a ballot set with:"):
full = urlize_ietf_docs(full)
- full = mark_safe(keep_spacing(linebreaksbr(urlize(sanitize_html(full)))))
+ return format_snippet(full)
+
+@register.filter
+def format_snippet(text):
+ full = mark_safe(keep_spacing(linebreaksbr(urlize(sanitize_html(text)))))
snippet = truncatewords_html(full, 25)
if snippet != full:
return mark_safe(u'
%s[show all]
%s
' % (snippet, full))
diff --git a/ietf/group/info.py b/ietf/group/info.py
index cff40b125..4beacd9e2 100644
--- a/ietf/group/info.py
+++ b/ietf/group/info.py
@@ -267,7 +267,8 @@ def concluded_groups(request):
dict(group_types=group_types))
def get_group_materials(group):
- return Document.objects.filter(group=group, type__in=group.features.material_types, session=None).exclude(states__slug="deleted")
+# return Document.objects.filter(group=group, type__in=group.features.material_types, session=None).exclude(states__slug="deleted")
+ return Document.objects.filter(group=group, type__in=group.features.material_types).exclude(states__slug="deleted")
def construct_group_menu_context(request, group, selected, group_type, others):
"""Return context with info for the group menu filled in."""
@@ -450,6 +451,8 @@ def materials(request, acronym, group_type=None):
if d.type not in doc_types:
doc_types[d.type] = []
doc_types[d.type].append(d)
+ # This needs to be better - probably looking at ScheduledSession, and perhaps ignoring future Sessions
+ d.last_presented = d.sessionpresentation_set.order_by('-session__meeting__date').first()
return render(request, 'group/materials.html',
construct_group_menu_context(request, group, "materials", group_type, {
diff --git a/ietf/meeting/migrations/0019_version_materials.py b/ietf/meeting/migrations/0019_version_materials.py
index c53ef7c8c..f699c6847 100644
--- a/ietf/meeting/migrations/0019_version_materials.py
+++ b/ietf/meeting/migrations/0019_version_materials.py
@@ -188,7 +188,7 @@ class Migration(SchemaMigration):
'comments': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
'group': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['group.Group']"}),
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'materials': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['doc.Document']", 'symmetrical': 'False', 'through': u"orm['meeting.VersionedMaterials']", 'blank': 'True'}),
+ 'materials': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['doc.Document']", 'symmetrical': 'False', 'through': u"orm['meeting.SessionPresentation']", 'blank': 'True'}),
'meeting': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['meeting.Meeting']"}),
'modified': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
@@ -213,8 +213,8 @@ class Migration(SchemaMigration):
'time': ('django.db.models.fields.DateTimeField', [], {}),
'type': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['name.TimeSlotTypeName']"})
},
- u'meeting.versionedmaterials': {
- 'Meta': {'object_name': 'VersionedMaterials', 'db_table': "'meeting_session_materials'"},
+ u'meeting.sessionpresentation': {
+ 'Meta': {'object_name': 'SessionPresentation', 'db_table': "'meeting_session_materials'"},
'doc': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['doc.Document']"}),
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'rev': ('django.db.models.fields.CharField', [], {'max_length': '16', 'blank': 'True'}),
diff --git a/ietf/meeting/migrations/0020_snapshot_material_revisions.py b/ietf/meeting/migrations/0020_snapshot_material_revisions.py
index 088e6a8ac..ee26a3902 100644
--- a/ietf/meeting/migrations/0020_snapshot_material_revisions.py
+++ b/ietf/meeting/migrations/0020_snapshot_material_revisions.py
@@ -4,7 +4,7 @@ from south.v2 import DataMigration
class Migration(DataMigration):
def forwards(self, orm):
- for vm in orm['meeting.VersionedMaterials'].objects.all():
+ for vm in orm['meeting.SessionPresentation'].objects.all():
vm.rev = vm.document.rev
vm.save()
@@ -185,7 +185,7 @@ class Migration(DataMigration):
'comments': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
'group': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['group.Group']"}),
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'materials': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['doc.Document']", 'symmetrical': 'False', 'through': u"orm['meeting.VersionedMaterials']", 'blank': 'True'}),
+ 'materials': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['doc.Document']", 'symmetrical': 'False', 'through': u"orm['meeting.SessionPresentation']", 'blank': 'True'}),
'meeting': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['meeting.Meeting']"}),
'modified': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
@@ -210,8 +210,8 @@ class Migration(DataMigration):
'time': ('django.db.models.fields.DateTimeField', [], {}),
'type': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['name.TimeSlotTypeName']"})
},
- u'meeting.versionedmaterials': {
- 'Meta': {'object_name': 'VersionedMaterials', 'db_table': "'meeting_session_materials'"},
+ u'meeting.sessionpresentation': {
+ 'Meta': {'object_name': 'SessionPresentation', 'db_table': "'meeting_session_materials'"},
'document': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['doc.Document']"}),
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'rev': ('django.db.models.fields.CharField', [], {'max_length': '16', 'blank': 'True'}),
diff --git a/ietf/meeting/models.py b/ietf/meeting/models.py
index bb62596a0..6ac604027 100644
--- a/ietf/meeting/models.py
+++ b/ietf/meeting/models.py
@@ -777,7 +777,7 @@ class Constraint(models.Model):
return ct1
-class VersionedMaterials(models.Model):
+class SessionPresentation(models.Model):
session = models.ForeignKey('Session')
document = models.ForeignKey(Document)
rev = models.CharField(verbose_name="revision", max_length=16, blank=True)
@@ -811,7 +811,7 @@ class Session(models.Model):
scheduled = models.DateTimeField(null=True, blank=True)
modified = models.DateTimeField(default=datetime.datetime.now)
- materials = models.ManyToManyField(Document, through=VersionedMaterials, blank=True)
+ materials = models.ManyToManyField(Document, through=SessionPresentation, blank=True)
resources = models.ManyToManyField(ResourceAssociation)
unique_constraints_dict = None
diff --git a/ietf/meeting/test_data.py b/ietf/meeting/test_data.py
index c568cbe21..e7a877f76 100644
--- a/ietf/meeting/test_data.py
+++ b/ietf/meeting/test_data.py
@@ -2,7 +2,7 @@ import datetime
from ietf.doc.models import Document, State
from ietf.group.models import Group
-from ietf.meeting.models import Meeting, Room, TimeSlot, Session, Schedule, ScheduledSession, ResourceAssociation, VersionedMaterials
+from ietf.meeting.models import Meeting, Room, TimeSlot, Session, Schedule, ScheduledSession, ResourceAssociation, SessionPresentation
from ietf.name.models import RoomResourceName
from ietf.person.models import Person
from ietf.utils.test_data import make_test_data
@@ -46,15 +46,15 @@ def make_meeting_test_data():
doc = Document.objects.create(name='agenda-mars-ietf-42', type_id='agenda', title="Agenda", external_url="agenda-mars")
doc.set_state(State.objects.get(type=doc.type_id, slug="active"))
- mars_session.versionedmaterials_set.add(VersionedMaterials(session=mars_session,document=doc,rev=doc.rev))
+ mars_session.sessionpresentation_set.add(SessionPresentation(session=mars_session,document=doc,rev=doc.rev))
doc = Document.objects.create(name='minutes-mars-ietf-42', type_id='minutes', title="Minutes", external_url="minutes-mars")
doc.set_state(State.objects.get(type=doc.type_id, slug="active"))
- mars_session.versionedmaterials_set.add(VersionedMaterials(session=mars_session,document=doc,rev=doc.rev))
+ mars_session.sessionpresentation_set.add(SessionPresentation(session=mars_session,document=doc,rev=doc.rev))
doc = Document.objects.create(name='slides-mars-ietf-42', type_id='slides', title="Slideshow", external_url="slides-mars")
doc.set_state(State.objects.get(type=doc.type_id, slug="active"))
- mars_session.versionedmaterials_set.add(VersionedMaterials(session=mars_session,document=doc,rev=doc.rev))
+ mars_session.sessionpresentation_set.add(SessionPresentation(session=mars_session,document=doc,rev=doc.rev))
return meeting
diff --git a/ietf/secr/proceedings/views.py b/ietf/secr/proceedings/views.py
index 58636c00d..3afce1325 100644
--- a/ietf/secr/proceedings/views.py
+++ b/ietf/secr/proceedings/views.py
@@ -23,7 +23,7 @@ from ietf.secr.utils.meeting import get_upload_root, get_material, get_timeslot
from ietf.doc.models import Document, DocAlias, DocEvent, State, NewRevisionDocEvent
from ietf.group.models import Group
from ietf.ietfauth.utils import has_role
-from ietf.meeting.models import Meeting, Session, TimeSlot, ScheduledSession, VersionedMaterials
+from ietf.meeting.models import Meeting, Session, TimeSlot, ScheduledSession, SessionPresentation
from ietf.secr.proceedings.forms import EditSlideForm, InterimMeetingForm, ReplaceSlideForm, UnifiedUploadForm
from ietf.secr.proceedings.proc_utils import ( gen_acknowledgement, gen_agenda, gen_areas, gen_attendees,
gen_group_pages, gen_index, gen_irtf, gen_overview, gen_plenaries, gen_progress, gen_research,
@@ -842,9 +842,9 @@ def upload_unified(request, meeting_num, acronym=None, session_id=None):
# for the current meeting (until tools support different materials for diff sessions)
if sessions:
for s in sessions:
- s.materials.versionedmaterials_set.add(VersionedMaterials(session=s,document=doc,rev=doc.rev))
+ s.materials.sessionpresentation_set.add(SessionPresentation(session=s,document=doc,rev=doc.rev))
else:
- session.materials.versionedmaterials_set.add(VersionedMaterials(session=session,document=doc,rev=doc.rev))
+ session.materials.sessionpresentation_set.add(SessionPresentation(session=session,document=doc,rev=doc.rev))
# create NewRevisionDocEvent instead of uploaded, per Ole
NewRevisionDocEvent.objects.create(type='new_revision',
diff --git a/ietf/templates/doc/document_history.html b/ietf/templates/doc/document_history.html
index ec50b9cee..c2de18b59 100644
--- a/ietf/templates/doc/document_history.html
+++ b/ietf/templates/doc/document_history.html
@@ -77,5 +77,5 @@
{% endblock content %}
{% block content_end %}
-
+
{% endblock content_end %}
diff --git a/ietf/templates/group/history.html b/ietf/templates/group/history.html
index 66d2b0a8d..b59871d53 100644
--- a/ietf/templates/group/history.html
+++ b/ietf/templates/group/history.html
@@ -22,5 +22,5 @@
{% endblock %}
{% block content_end %}
-
+
{% endblock %}
diff --git a/ietf/templates/group/materials.html b/ietf/templates/group/materials.html
index 221e00e1f..afa04ff3d 100644
--- a/ietf/templates/group/materials.html
+++ b/ietf/templates/group/materials.html
@@ -6,6 +6,7 @@
{% block morecss %}
{{ block.super }}
.materials .edit-options { float: right; margin-left: 2em; font-style: italic; }
+ .materials .snippable { width:25em; }
{% endblock %}
{% block group_content %}
@@ -19,15 +20,19 @@
Title |
- Rev. |
+ Abstract |
+ Curr. Rev. |
Date |
+ Last Presented |
{% for d in docs %}
{{ d.title }} |
+ {{ d.abstract|format_snippet }} |
{{ d.rev }} |
{{ d.time|date:"Y-m-d" }} |
+ {% if d.last_presented %}-{{ d.last_presented.rev }} at {{d.last_presented.session.meeting}}{% endif %} |
{% endfor %}
@@ -39,3 +44,7 @@
{% endif %}
{% endblock %}
+
+{% block content_end %}
+
+{% endblock %}
diff --git a/static/css/base2.css b/static/css/base2.css
index 1bd01acd8..1824c97d0 100644
--- a/static/css/base2.css
+++ b/static/css/base2.css
@@ -154,7 +154,7 @@ table.ietf-table { border-collapse:collapse; border:1px solid #7f7f7f; }
.ietf-divider { background: #2647a0; color: white; font-size:116%; padding:0.5em 1em; }
-table.history .snippet .show-all { color: blue; cursor: pointer; }
+table .snippet .show-all { color: blue; cursor: pointer; }
.error-text {
font-size: 1.095em;
diff --git a/static/js/history.js b/static/js/snippet.js
similarity index 61%
rename from static/js/history.js
rename to static/js/snippet.js
index 3b44400e6..411af9144 100644
--- a/static/js/history.js
+++ b/static/js/snippet.js
@@ -1,5 +1,5 @@
jQuery(function () {
- jQuery("table.history .snippet .show-all").click(function () {
+ jQuery("table .snippet .show-all").click(function () {
jQuery(this).parents(".snippet").hide().siblings(".full").show();
});
});