První pokus o upload příloh při nahrávání řešitelova řešení
This commit is contained in:
parent
2766bee5e7
commit
f43b0b4da7
4 changed files with 97 additions and 74 deletions
|
@ -33,79 +33,7 @@
|
||||||
|
|
||||||
<hr>
|
<hr>
|
||||||
|
|
||||||
{{ prilohy.management_form }}
|
{% include "odevzdavatko/prilohy.html" %}
|
||||||
|
|
||||||
<h4>Soubory s řešením</h4>
|
|
||||||
|
|
||||||
<p style="text-align: justify">Maximální součet velikostí příloh je cca 49 MB. Pokud je to možné a dává to smysl, pošli nám prosím své řešení ve formátu PDF, ostatní formáty nemusíme umět otevřít.</p>
|
|
||||||
<p style="text-align: justify">Pokud svůj soubor rozumně pojmenuješ, urychlíš opravování a předejdeš tomu, že si nějakého tvého řešení nevšimneme. Například z <code>img_250921_101205.pdf</code> nepoznáme, kterou úlohu jsi odevzdal, zato <code>uloha_3.pdf</code> nebo <code>tema_1.pdf</code>, to už je něco jiného. Případně můžeš využít i poznámku řešitele.</p>
|
|
||||||
|
|
||||||
<div id="form_set">
|
|
||||||
{% for form in prilohy.forms %}
|
|
||||||
<div class="attachment">
|
|
||||||
{{ form.non_field_errors }}
|
|
||||||
{# {{ form.errors }} FIXME: možná tohle chceme zobrazovat? #}
|
|
||||||
<table class='form' id="reseni">
|
|
||||||
<tr>
|
|
||||||
{% for field in form.visible_fields %}
|
|
||||||
|
|
||||||
<td>
|
|
||||||
<label class="field-label{% if field.field.required %} field-required{% endif %}" for="{{ field.id_for_label }}">
|
|
||||||
{{ field.label }}:
|
|
||||||
</label>
|
|
||||||
|
|
||||||
</td>
|
|
||||||
<td {% if field.help_text %} class="field-with-comment"{% endif %}>
|
|
||||||
{{ field }}
|
|
||||||
<span class="field-comment">{{ field.help_text|safe }}</span>
|
|
||||||
</td>
|
|
||||||
|
|
||||||
<td><span class="field-error">{{ field.errors }}</span></td>
|
|
||||||
|
|
||||||
{% endfor %}
|
|
||||||
|
|
||||||
<td>
|
|
||||||
<input type="button" value="Odebrat přílohu" class="remove_attachment" id="{{form.prefix}}-jsremove">
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</div>
|
|
||||||
{% endfor %}
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<input type="button" value="Přidat přílohu" id="add_attachment">
|
|
||||||
|
|
||||||
<div id="empty_form" style="display:none">
|
|
||||||
<div class="attachment">
|
|
||||||
|
|
||||||
<table class='form no_error' id="reseni">
|
|
||||||
<tr>
|
|
||||||
{% for field in prilohy.empty_form.visible_fields %}
|
|
||||||
|
|
||||||
<td>
|
|
||||||
<label class="field-label{% if field.field.required %} field-required{% endif %}" for="{{ field.id_for_label }}">
|
|
||||||
{{ field.label }}:
|
|
||||||
</label>
|
|
||||||
|
|
||||||
</td>
|
|
||||||
<td {% if field.help_text %} class="field-with-comment"{% endif %}>
|
|
||||||
{{ field }}
|
|
||||||
<span class="field-comment">{{ field.help_text|safe }}</span>
|
|
||||||
</td>
|
|
||||||
|
|
||||||
<td><span class="field-error">{{ field.errors }}</span></td>
|
|
||||||
|
|
||||||
{% endfor %}
|
|
||||||
|
|
||||||
<td>
|
|
||||||
|
|
||||||
|
|
||||||
<input type="button" value="Odebrat přílohu" class="remove_attachment" id="id_prilohy-__prefix__-jsremove">
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<hr>
|
<hr>
|
||||||
<h4>Odevzdat řešení</h4>
|
<h4>Odevzdat řešení</h4>
|
||||||
|
|
|
@ -3,6 +3,7 @@
|
||||||
{% block script %}
|
{% block script %}
|
||||||
<!--script type="text/javascript" src="{% static 'admin/js/vendor/jquery/jquery.js' %}"></script!-->
|
<!--script type="text/javascript" src="{% static 'admin/js/vendor/jquery/jquery.js' %}"></script!-->
|
||||||
{{form.media}}
|
{{form.media}}
|
||||||
|
<script src="{% static 'odevzdavatko/dynamic_formsets.js' %}"></script>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
|
@ -11,9 +12,16 @@
|
||||||
Vložit řešení
|
Vložit řešení
|
||||||
{% endblock %}{% endblock %}
|
{% endblock %}{% endblock %}
|
||||||
</h1>
|
</h1>
|
||||||
<form action="{% url 'seminar_vloz_reseni' %}" method="post">
|
<form enctype="multipart/form-data" action="{% url 'seminar_vloz_reseni' %}" method="post" onsubmit="return zkontroluj_prilohy();">
|
||||||
{% csrf_token %}
|
{% csrf_token %}
|
||||||
{{form.as_p}}
|
{{form.as_p}}
|
||||||
|
|
||||||
|
<hr>
|
||||||
|
|
||||||
|
{% include "odevzdavatko/prilohy.html" %}
|
||||||
|
|
||||||
|
<hr>
|
||||||
|
<h4>Vložit řešení</h4>
|
||||||
<input type="submit" value="Vložit">
|
<input type="submit" value="Vložit">
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
|
|
73
odevzdavatko/templates/odevzdavatko/prilohy.html
Normal file
73
odevzdavatko/templates/odevzdavatko/prilohy.html
Normal file
|
@ -0,0 +1,73 @@
|
||||||
|
{{ prilohy.management_form }}
|
||||||
|
|
||||||
|
<h4>Soubory s řešením</h4>
|
||||||
|
|
||||||
|
<p style="text-align: justify">Maximální součet velikostí příloh je cca 49 MB. Pokud je to možné a dává to smysl, pošli nám prosím své řešení ve formátu PDF, ostatní formáty nemusíme umět otevřít.</p>
|
||||||
|
<p style="text-align: justify">Pokud svůj soubor rozumně pojmenuješ, urychlíš opravování a předejdeš tomu, že si nějakého tvého řešení nevšimneme. Například z <code>img_250921_101205.pdf</code> nepoznáme, kterou úlohu jsi odevzdal, zato <code>uloha_3.pdf</code> nebo <code>tema_1.pdf</code>, to už je něco jiného. Případně můžeš využít i poznámku řešitele.</p>
|
||||||
|
|
||||||
|
<div id="form_set">
|
||||||
|
{% for form in prilohy.forms %}
|
||||||
|
<div class="attachment">
|
||||||
|
{{ form.non_field_errors }}
|
||||||
|
{# {{ form.errors }} FIXME: možná tohle chceme zobrazovat? #}
|
||||||
|
<table class='form' id="reseni">
|
||||||
|
<tr>
|
||||||
|
{% for field in form.visible_fields %}
|
||||||
|
|
||||||
|
<td>
|
||||||
|
<label class="field-label{% if field.field.required %} field-required{% endif %}" for="{{ field.id_for_label }}">
|
||||||
|
{{ field.label }}:
|
||||||
|
</label>
|
||||||
|
|
||||||
|
</td>
|
||||||
|
<td {% if field.help_text %} class="field-with-comment"{% endif %}>
|
||||||
|
{{ field }}
|
||||||
|
<span class="field-comment">{{ field.help_text|safe }}</span>
|
||||||
|
</td>
|
||||||
|
|
||||||
|
<td><span class="field-error">{{ field.errors }}</span></td>
|
||||||
|
|
||||||
|
{% endfor %}
|
||||||
|
|
||||||
|
<td>
|
||||||
|
<input type="button" value="Odebrat přílohu" class="remove_attachment" id="{{form.prefix}}-jsremove">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
{% endfor %}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<input type="button" value="Přidat přílohu" id="add_attachment">
|
||||||
|
|
||||||
|
<div id="empty_form" style="display:none">
|
||||||
|
<div class="attachment">
|
||||||
|
|
||||||
|
<table class='form no_error' id="reseni">
|
||||||
|
<tr>
|
||||||
|
{% for field in prilohy.empty_form.visible_fields %}
|
||||||
|
|
||||||
|
<td>
|
||||||
|
<label class="field-label{% if field.field.required %} field-required{% endif %}" for="{{ field.id_for_label }}">
|
||||||
|
{{ field.label }}:
|
||||||
|
</label>
|
||||||
|
|
||||||
|
</td>
|
||||||
|
<td {% if field.help_text %} class="field-with-comment"{% endif %}>
|
||||||
|
{{ field }}
|
||||||
|
<span class="field-comment">{{ field.help_text|safe }}</span>
|
||||||
|
</td>
|
||||||
|
|
||||||
|
<td><span class="field-error">{{ field.errors }}</span></td>
|
||||||
|
|
||||||
|
{% endfor %}
|
||||||
|
|
||||||
|
<td>
|
||||||
|
|
||||||
|
|
||||||
|
<input type="button" value="Odebrat přílohu" class="remove_attachment" id="id_prilohy-__prefix__-jsremove">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</div>
|
|
@ -357,10 +357,24 @@ class PosliReseniView(LoginRequiredMixin, FormView):
|
||||||
nove_reseni.resitele.add(data['resitel'])
|
nove_reseni.resitele.add(data['resitel'])
|
||||||
nove_reseni.problem.add(data['problem'])
|
nove_reseni.problem.add(data['problem'])
|
||||||
nove_reseni.save()
|
nove_reseni.save()
|
||||||
|
|
||||||
|
context = self.get_context_data()
|
||||||
|
prilohy = context['prilohy']
|
||||||
|
prilohy.instance = nove_reseni
|
||||||
|
prilohy.save()
|
||||||
# Chtěl jsem, aby bylo vidět, že se to uložilo, tak přesměrovávám na profil.
|
# Chtěl jsem, aby bylo vidět, že se to uložilo, tak přesměrovávám na profil.
|
||||||
return redirect(reverse('profil'))
|
return redirect(reverse('profil'))
|
||||||
|
|
||||||
|
|
||||||
|
def get_context_data(self,**kwargs):
|
||||||
|
data = super().get_context_data(**kwargs)
|
||||||
|
if self.request.POST:
|
||||||
|
data['prilohy'] = f.ReseniSPrilohamiFormSet(self.request.POST,self.request.FILES)
|
||||||
|
else:
|
||||||
|
data['prilohy'] = f.ReseniSPrilohamiFormSet()
|
||||||
|
return data
|
||||||
|
|
||||||
|
|
||||||
class NahrajReseniView(LoginRequiredMixin, CreateView):
|
class NahrajReseniView(LoginRequiredMixin, CreateView):
|
||||||
model = m.Reseni
|
model = m.Reseni
|
||||||
template_name = 'odevzdavatko/nahraj_reseni.html'
|
template_name = 'odevzdavatko/nahraj_reseni.html'
|
||||||
|
|
Loading…
Reference in a new issue