Merged in [11888] from rjsparks@nostrum.com:

Added an order field to sessionpresentation to allow ordering slides. Reworked the session details page to break slides and drafts into their own sections.
 - Legacy-Id: 11892
Note: SVN reference [11888] has been migrated to Git commit 89a3afe025
This commit is contained in:
Henrik Levkowetz 2016-08-30 16:29:51 +00:00
parent 24222db8c0
commit 02e2f591bc
4 changed files with 109 additions and 26 deletions

View file

@ -0,0 +1,31 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
import debug # pyflakes:ignore
from django.db import models, migrations
def forward(apps, schema_editor):
SessionPresentation = apps.get_model("meeting","SessionPresentation")
for sp in SessionPresentation.objects.filter(document__type__slug='slides',session__meeting__number__in=['95','96']):
sp.order = int(sp.document.name.split('-')[-1])
sp.save()
def reverse(apps, schema_editor):
pass
class Migration(migrations.Migration):
dependencies = [
('meeting', '0035_auto_20160818_1610'),
]
operations = [
migrations.AddField(
model_name='sessionpresentation',
name='order',
field=models.PositiveSmallIntegerField(default=0),
preserve_default=True,
),
migrations.RunPython(forward,reverse)
]

View file

@ -959,6 +959,7 @@ class SessionPresentation(models.Model):
session = models.ForeignKey('Session')
document = models.ForeignKey(Document)
rev = models.CharField(verbose_name="revision", max_length=16, null=True, blank=True)
order = models.PositiveSmallIntegerField(default=0)
class Meta:
db_table = 'meeting_session_materials'

View file

@ -1022,9 +1022,16 @@ def session_details(request, num, acronym ):
else:
session.time = session.status.name
session.filtered_artifacts = session.sessionpresentation_set.filter(document__type__slug__in=['agenda','minutes','bluesheets'])
session.filtered_slides = session.sessionpresentation_set.filter(document__type__slug='slides').order_by('order')
session.filtered_drafts = session.sessionpresentation_set.filter(document__type__slug='draft')
# TODO FIXME Deleted materials shouldn't be in the sessionpresentation_set
session.filtered_sessionpresentation_set = [p for p in session.sessionpresentation_set.all() if p.document.get_state_slug(p.document.type_id)!='deleted']
type_counter.update([p.document.type.slug for p in session.filtered_sessionpresentation_set])
for qs in [session.filtered_artifacts,session.filtered_slides,session.filtered_drafts]:
qs = [p for p in qs if p.document.get_state_slug(p.document.type_id)!='deleted']
type_counter.update([p.document.type.slug for p in qs])
#session.filtered_sessionpresentation_set = [p for p in session.sessionpresentation_set.all() if p.document.get_state_slug(p.document.type_id)!='deleted']
#type_counter.update([p.document.type.slug for p in session.filtered_sessionpresentation_set])
can_manage = can_manage_materials(request.user, Group.objects.get(acronym=acronym))

View file

@ -10,6 +10,7 @@
{% for session in sessions %}
<h2>{% if sessions|length > 1 %}Session {{ forloop.counter }} : {% endif %}{{ session.time }}{% if session.name %} : {{ session.name }}{% endif %}</h2>
{% if session.agenda_note %}<h3>{{session.agenda_note}}</h3>{% endif %}
{% if can_manage_materials %}
{% if session.status.slug == 'sched' or session.status.slug == 'schedw' %}
@ -33,30 +34,73 @@
{% endif %}
{% endif %}
{% if session.filtered_sessionpresentation_set %}
<div class="panel panel-default">
<div class="panel-heading">Materials:</div>
<div class="panel-body">
<table class="table table-condensed table-striped">
{% for pres in session.filtered_sessionpresentation_set %}
{% if pres.document.type_id != 'bluesheets' and pres.document.type_id != 'recording' %}
<tr>
<td>
{% if pres.rev %}
{% url 'doc_view' name=pres.document.name rev=pres.rev as url %}
{% else %}
{% url 'doc_view' name=pres.document.name as url %}
{% endif %}
<a href="{{url}}">{{pres.document.title}} ({{ pres.document.name }}{% if pres.rev %}-{{ pres.rev }}{% endif %})
</a>
</td>
</tr>
{% endif %}
{% endfor %}
</table>
</div>
</div>
{% endif %}
{% if session.filtered_artifacts %}
<div class="panel panel-default">
<div class="panel-heading">Artifacts</div>
<div class="panel-body">
<table class="table table-condensed table-striped">
{% for pres in session.filtered_artifacts %}
<tr>
<td>
{% if pres.rev %}
{% url 'doc_view' name=pres.document.name rev=pres.rev as url %}
{% else %}
{% url 'doc_view' name=pres.document.name as url %}
{% endif %}
<a href="{{url}}">{{pres.document.title}} ({{ pres.document.name }}{% if pres.rev %}-{{ pres.rev }}{% endif %})
</a>
</td>
</tr>
{% endfor %}
</table>
</div>
</div>
{% endif %}
{% if session.filtered_slides %}
<div class="panel panel-default">
<div class="panel-heading">Slides</div>
<div class="panel-body">
<table class="table table-condensed table-striped">
{% for pres in session.filtered_slides %}
<tr>
<td>
{% if pres.rev %}
{% url 'doc_view' name=pres.document.name rev=pres.rev as url %}
{% else %}
{% url 'doc_view' name=pres.document.name as url %}
{% endif %}
<a href="{{url}}">{{pres.document.title}} ({{ pres.document.name }}{% if pres.rev %}-{{ pres.rev }}{% endif %})
</a>
</td>
</tr>
{% endfor %}
</table>
</div>
</div>
{% endif %}
{% if session.filtered_drafts %}
<div class="panel panel-default">
<div class="panel-heading">Drafts</div>
<div class="panel-body">
<table class="table table-condensed table-striped">
{% for pres in session.filtered_drafts %}
<tr>
<td>
{% if pres.rev %}
{% url 'doc_view' name=pres.document.name rev=pres.rev as url %}
{% else %}
{% url 'doc_view' name=pres.document.name as url %}
{% endif %}
<a href="{{url}}">{{pres.document.title}} ({{ pres.document.name }}{% if pres.rev %}-{{ pres.rev }}{% endif %})
</a>
</td>
</tr>
{% endfor %}
</table>
</div>
</div>
{% endif %}
{% endfor %}
{% endblock %}