room details

This commit is contained in:
Élie Bouttier 2016-10-11 21:43:31 +02:00
parent cd930cb9de
commit f9e36b396f
5 changed files with 48 additions and 3 deletions

View File

@ -22,3 +22,11 @@ class Room(models.Model):
def get_absolute_url(self): def get_absolute_url(self):
return reverse('list-rooms') return reverse('list-rooms')
@property
def talks_by_date(self):
return self.talk_set.filter(start_date__isnull=False).order_by('start_date').all()
@property
def unscheduled_talks(self):
return self.talk_set.filter(start_date__isnull=True).all()

View File

@ -0,0 +1,31 @@
{% extends 'base.html' %}
{% load i18n %}
{% block planningtab %} class="active"{% endblock %}
{% block content %}
<h1>{{ room.name }}</h1>
{{ room.label }}
<h4>Scheduled talks:</h4>
{% for talk in room.talks_by_date %}
{% if forloop.first %}<ul>{% endif %}
<li>{{ talk.start_date }} ({{ talk.estimated_duration }} mins): <a href="{% url 'show-talk' talk.slug %}">{{ talk }}</a></li>
{% if forloop.last %}</ul>{% endif %}
{% empty %}
<em>{% trans "No talks." %}</em>
{% endfor %}
<h4>Unscheduled talks:</h4>
{% for talk in room.unscheduled_talks %}
{% if forloop.first %}<ul>{% endif %}
<li><a href="{% url 'show-talk' talk.slug %}">{{ talk }}</a></li>
{% if forloop.last %}</ul>{% endif %}
{% empty %}
<em>{% trans "No talks." %}</em>
{% endfor %}
{% endblock %}

View File

@ -15,16 +15,18 @@
<div class="row"> <div class="row">
{% for room in room_list %} {% for room in room_list %}
<div class="col-xs-6 col-sm-4"> <div class="col-xs-6 col-sm-4">
<h2>{{ room }}</h2> <h2><a href="{% url 'show-room' room.slug %}">{{ room }}</a></h2>
{% if room.label %}<p>{{ room.label }}</p>{% endif %} {% if room.label %}<p>{{ room.label }}</p>{% endif %}
<p> <p>
{{ room.capacity }} {% trans "place" %}{{ room.capacity|pluralize }} {{ room.capacity }} {% trans "place" %}{{ room.capacity|pluralize }}
{% if request|staff %} {% if request|staff %}
| |
{{ room.talk_set.count }} {% trans "talk" %}{{ room.talk_set.count|pluralize }} {{ room.talk_set.count }} {% trans "talk" %}{{ room.talk_set.count|pluralize }}
{% if request|orga %}
| |
<a href="{% url 'edit-room' room.slug %}">{% bootstrap_icon "pencil" %}</a> <a href="{% url 'edit-room' room.slug %}">{% bootstrap_icon "pencil" %}</a>
{% endif %} {% endif %}
{% endif %}
</p> </p>
</div> </div>
{% cycle '' '<div class="clearfix visible-xs"></div>' %} {% cycle '' '<div class="clearfix visible-xs"></div>' %}

View File

@ -6,5 +6,6 @@ from planning import views
urlpatterns = [ urlpatterns = [
url(r'^room/$', views.RoomList.as_view(), name='list-rooms'), url(r'^room/$', views.RoomList.as_view(), name='list-rooms'),
url(r'^room/add/$', views.RoomCreate.as_view(), name='add-room'), url(r'^room/add/$', views.RoomCreate.as_view(), name='add-room'),
url(r'^room/(?P<slug>[-\w]+)/$', views.RoomDetail.as_view(), name='show-room'),
url(r'^room/(?P<slug>[-\w]+)/edit/$', views.RoomUpdate.as_view(), name='edit-room'), url(r'^room/(?P<slug>[-\w]+)/edit/$', views.RoomUpdate.as_view(), name='edit-room'),
] ]

View File

@ -2,7 +2,7 @@ from django.shortcuts import render
from django.contrib.sites.shortcuts import get_current_site from django.contrib.sites.shortcuts import get_current_site
from django.views.generic import CreateView, DetailView, ListView, UpdateView from django.views.generic import CreateView, DetailView, ListView, UpdateView
from accounts.mixins import OrgaRequiredMixin from accounts.mixins import OrgaRequiredMixin, StaffRequiredMixin
from proposals.mixins import OnSiteFormMixin from proposals.mixins import OnSiteFormMixin
from .models import Room from .models import Room
@ -18,7 +18,7 @@ class RoomFormMixin(OnSiteFormMixin):
form_class = RoomForm form_class = RoomForm
class RoomList(OrgaRequiredMixin, RoomMixin, ListView): class RoomList(StaffRequiredMixin, RoomMixin, ListView):
pass pass
@ -27,3 +27,6 @@ class RoomCreate(OrgaRequiredMixin, RoomMixin, RoomFormMixin, CreateView):
class RoomUpdate(OrgaRequiredMixin, RoomMixin, RoomFormMixin, UpdateView): class RoomUpdate(OrgaRequiredMixin, RoomMixin, RoomFormMixin, UpdateView):
pass pass
class RoomDetail(StaffRequiredMixin, RoomMixin, DetailView):
pass