Refactored history snippets for general use
Moved from VersionedMaterials to SessionPresentation for the through table name Added the abstract and most recent presentation to the documents on the group materials page Working snapshot before building historic edu-team documents - Legacy-Id: 8349
This commit is contained in:
parent
75b94bd114
commit
c3f460cbe9
|
@ -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'<div class="snippet">%s<span class="show-all">[show all]</span></div><div style="display:none" class="full">%s</div>' % (snippet, full))
|
||||
|
|
|
@ -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, {
|
||||
|
|
|
@ -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'}),
|
||||
|
|
|
@ -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'}),
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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',
|
||||
|
|
|
@ -77,5 +77,5 @@
|
|||
{% endblock content %}
|
||||
|
||||
{% block content_end %}
|
||||
<script type="text/javascript" src="/js/history.js"></script>
|
||||
<script type="text/javascript" src="/js/snippet.js"></script>
|
||||
{% endblock content_end %}
|
||||
|
|
|
@ -22,5 +22,5 @@
|
|||
{% endblock %}
|
||||
|
||||
{% block content_end %}
|
||||
<script src="/js/history.js" type="text/javascript"></script>
|
||||
<script src="/js/snippet.js" type="text/javascript"></script>
|
||||
{% endblock %}
|
||||
|
|
|
@ -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 @@
|
|||
|
||||
<tr>
|
||||
<th>Title</th>
|
||||
<th>Rev.</th>
|
||||
<th>Abstract</th>
|
||||
<th>Curr. Rev.</th>
|
||||
<th>Date</th>
|
||||
<th>Last Presented</th>
|
||||
</tr>
|
||||
|
||||
{% for d in docs %}
|
||||
<tr class="{% cycle "evenrow" "oddrow" %}">
|
||||
<td><a class="title-link" href="{% url "doc_view" name=d.name %}">{{ d.title }}</a></td>
|
||||
<td class='snippable'>{{ d.abstract|format_snippet }} </td>
|
||||
<td>{{ d.rev }}</td>
|
||||
<td>{{ d.time|date:"Y-m-d" }}</td>
|
||||
<td>{% if d.last_presented %}-{{ d.last_presented.rev }} at {{d.last_presented.session.meeting}}{% endif %}</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</table>
|
||||
|
@ -39,3 +44,7 @@
|
|||
{% endif %}
|
||||
|
||||
{% endblock %}
|
||||
|
||||
{% block content_end %}
|
||||
<script src="/js/snippet.js" type="text/javascript"></script>
|
||||
{% endblock %}
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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();
|
||||
});
|
||||
});
|
Loading…
Reference in a new issue