Pouze CSV export přednášek (smazání ostatních)

This commit is contained in:
Jonas Havelka 2025-02-19 18:53:44 +01:00
parent 7a70b9dcff
commit 4d5800f3b8
3 changed files with 5 additions and 73 deletions

View file

@ -2,19 +2,19 @@
{% block content %} {% block content %}
<h1>{% block nadpis1a %} <h1>{% block nadpis1a %}
Hlasování o přednáškách Výsledky hlasování o přednáškách
{% endblock %}</h1> {% endblock %}</h1>
{# Projdi vsechny seznamy #} {# Projdi vsechny seznamy #}
<div class="mam-org-only"> <div class="mam-org-only">
<ul> <ul>
{% for seznam in object_list %} {% for seznam in object_list %}
<li> <li>
{% if seznam.stav == 1 %} {# STAV_NAHRH = 1 #} {% if seznam.stav == seznam.Stav.NAVRH %}
<a href="/prednasky/seznam_prednasek/{{seznam.id}}">Návrh přednášek na soustředění {{seznam.soustredeni.misto}} </a> Návrh přednášek na soustředění {{seznam.soustredeni.misto}}
{% else %} {% else %}
<a href="/prednasky/seznam_prednasek/{{seznam.id}}">Seznam přednášek na soustředění {{seznam.soustredeni.misto}} </a> Seznam přednášek na soustředění {{seznam.soustredeni.misto}}
{% endif %} {% endif %}
<a href='{% url "seznam-export-csv" seznam=seznam.id %}'>Export</a> <a href='{% url "seznam-export-csv" seznam=seznam.id %}'>(CSV)</a>
</li> </li>
{% endfor %} {% endfor %}
</ul> </ul>

View file

@ -12,19 +12,9 @@ urlpatterns = [
'prednasky/metaseznam_prednasek', 'prednasky/metaseznam_prednasek',
org_required(views.MetaSeznamListView.as_view()), org_required(views.MetaSeznamListView.as_view()),
name='metaseznam-list'), name='metaseznam-list'),
# path(
# 'prednasky/seznam_prednasek/<int:seznam>/export',
# org_required(views.SeznamExportView),
# name='seznam-export'
# ),
path( path(
'prednasky/seznam_prednasek/<int:seznam>/hlasovani.csv', 'prednasky/seznam_prednasek/<int:seznam>/hlasovani.csv',
org_required(views.PrednaskyExportView), org_required(views.PrednaskyExportView),
name='seznam-export-csv' name='seznam-export-csv'
), ),
path(
'prednasky/seznam_prednasek/<int:seznam>/',
org_required(views.SeznamListView.as_view()),
name='seznam-list'
),
] ]

View file

@ -133,64 +133,6 @@ class MetaSeznamListView(generic.ListView):
template_name = 'prednasky/metaseznam_prednasek.html' template_name = 'prednasky/metaseznam_prednasek.html'
class SeznamListView(generic.ListView):
"""
Náhled na to, kolik která přednáška v :py:class:`Seznamu <prednasky.models.Seznam>` :py:class:`hlasů <prednasky.models.Hlasovani.Body>`.
(Je otázka, zda tento View vůbec chceme. Pokud ano, hodilo by se do něj přidat i znalosti.)
"""
template_name = 'prednasky/seznam_prednasek.html'
def get_queryset(self):
self.seznam = get_object_or_404(Seznam, id=self.kwargs["seznam"])
prednasky = Prednaska.objects.filter(seznamy=self.seznam).order_by(
'org__osoba__user__first_name', 'org__osoba__user__last_name'
)
return prednasky
# FIXME nahradit anotaci s filtrem po prechodu na Django 2.2
def get_context_data(self,**kwargs):
context = super(SeznamListView, self).get_context_data(**kwargs)
# hlasovani se vztahuje k nejnovejsimu soustredeni
sous = Soustredeni.objects.first()
seznam = Seznam.objects.filter(soustredeni = sous, stav=Seznam.Stav.NAVRH).first()
for obj in self.object_list:
hlasovani_set = obj.hlasovani_set.filter(seznam=seznam).only('body')
obj.body = sum(map(lambda x: x.body,hlasovani_set))
return context
# def SeznamExportView(request, seznam):
# """Vypíše výsledky hlasování ve formátu pro prologovský optimalizátor"""
# # TODO zřejmě se nepoužívá, časem vyřadit? nahradit tabulkou vhodnější pro
# # lidi?
# hlasovani = Hlasovani.objects.filter(seznam=seznam)
# prednasky = Prednaska.objects.filter(seznamy=seznam)
# orgove = set(p.org for p in prednasky)
# ucastnici = set(h.ucastnik for h in hlasovani)
#
# for p in prednasky:
# p.body = []
# for u in ucastnici:
# try:
# p.body.append(hlasovani.get(ucastnik=u, prednaska=p).body)
# except ObjectDoesNotExist:
# # účastník nehlasoval
# p.body.append("?")
#
# for h in hlasovani:
# h.ucastnik = hash(h.ucastnik)
#
# return render(
# request,
# 'prednasky/seznam_prednasek_export.txt',
# {"hlasovani": hlasovani, "prednasky": prednasky, "orgove": orgove},
# content_type="text/plain"
# )
def PrednaskyExportView(request: HttpRequest, seznam: int, **kwargs) -> HttpResponse: def PrednaskyExportView(request: HttpRequest, seznam: int, **kwargs) -> HttpResponse:
""" """
Vrátí všechna :py:class:`Hlasování <prednasky.models.Hlasovani>` Vrátí všechna :py:class:`Hlasování <prednasky.models.Hlasovani>`