diff --git a/conference/talks.py b/conference/talks.py index 86b1d1e66..71c081d64 100644 --- a/conference/talks.py +++ b/conference/talks.py @@ -1,13 +1,12 @@ from django.conf.urls import url -from django.contrib.admin.views.decorators import staff_member_required +from django.conf import settings +from django.db.models import Q from django.shortcuts import get_object_or_404 from django.template.response import TemplateResponse -from conference.models import Talk +from conference.models import Talk, TALK_STATUS, TALK_TYPE_CHOICES -# Temporary -@staff_member_required def talk(request, talk_slug): """ Display Talk @@ -22,6 +21,59 @@ def talk(request, talk_slug): ) +def list_accepted_talks_for_current_conference(request): + """ + """ + # Copy from conference/talk_vorting.py; + # Possibly could be refactored to use some function to come up with filters + talk_type = request.GET.get("talk_type", "all") + extra_filters = [] + if talk_type == "talk": + extra_filters += [ + Q( + type__in=[ + TALK_TYPE_CHOICES.t_30, + TALK_TYPE_CHOICES.t_45, + TALK_TYPE_CHOICES.t_60, + ] + ) + ] + if talk_type == "training": + extra_filters += [Q(type__in=[TALK_TYPE_CHOICES.r_180])] + if talk_type == "poster": + extra_filters += [ + Q( + type__in=[ + TALK_TYPE_CHOICES.i_60, + TALK_TYPE_CHOICES.p_180, + TALK_TYPE_CHOICES.n_60, + TALK_TYPE_CHOICES.n_90, + ] + ) + ] + if talk_type == "helpdesk": + extra_filters += [Q(type__in=[TALK_TYPE_CHOICES.h_180])] + + talks = get_accepted_talks_for_current_conference(extra_filters) + + return TemplateResponse( + request, + "ep19/bs/talks/list_accepted_talks.html", + {"talks": talks, "talk_type": talk_type} + ) + + +def get_accepted_talks_for_current_conference(extra_filters): + return ( + Talk.objects + .filter( + conference=settings.CONFERENCE_CONFERENCE, + status=TALK_STATUS.accepted + ) + .filter(*extra_filters) + ) + + def dump_relevant_talk_information_to_dict(talk: Talk): output = { @@ -61,4 +113,7 @@ def dump_relevant_talk_information_to_dict(talk: Talk): return output -urlpatterns = [url(r"^(?P[\w-]+)/$", talk, name="talk")] +urlpatterns = [ + url(r"^$", list_accepted_talks_for_current_conference, name="list"), + url(r"^(?P[\w-]+)/$", talk, name="talk"), +] diff --git a/templates/ep19/bs/talks/list_accepted_talks.html b/templates/ep19/bs/talks/list_accepted_talks.html new file mode 100644 index 000000000..07f3bfcba --- /dev/null +++ b/templates/ep19/bs/talks/list_accepted_talks.html @@ -0,0 +1,63 @@ +{% extends "ep19/bs/base.html" %} + +{% block content %} + + +
+
+
+

List of accepted proposals for EP2019

+

Proposal type + + All + + + Talk + + + Training + + + Poster/Panel/Interactive + + + Help desk + +

+
+
+ +
+
+ {% for talk in talks %} +
+

{{ talk.title }}

+

{{ talk.sub_title }}

+
{% for speaker in talk.get_all_speakers %}{{ speaker.user.assopy_user.name }}{% if not forloop.last %}, {% endif %}{% endfor %}
+

{% for t in talk.tags.all %}{{ t }} {% endfor %}

+ {#

{{ talk.get_abstract|linebreaks }}

#} +

+ Type: {{ talk.get_type_display }}; Python level: {{ talk.get_level_display }}; Domain level: {{ talk.get_domain_level_display }} +

+
+ {% endfor %}{# talk in talks #} +
+
+
+{% endblock %}