diff --git a/biscuit/apps/chronos/forms.py b/biscuit/apps/chronos/forms.py new file mode 100644 index 0000000000000000000000000000000000000000..fba3f647dbc467c366c2dcfcd0d2bad54f0fcead --- /dev/null +++ b/biscuit/apps/chronos/forms.py @@ -0,0 +1,20 @@ +from django.forms import ModelForm +from material import Layout, Fieldset, Row + +from timetable.models import Hint + + +class HintForm(ModelForm): + layout = Layout(Fieldset('Zeitraum', + Row('from_date', 'to_date'), + ), + Fieldset('Hinweistext', + "text", + ), + Fieldset('Klassen', + 'classes'), + ) + + class Meta: + model = Hint + fields = ("from_date", "to_date", "text", "classes") diff --git a/biscuit/apps/chronos/templates/timetable/addhint.html b/biscuit/apps/chronos/templates/timetable/addhint.html new file mode 100755 index 0000000000000000000000000000000000000000..a750f38677475dfe28dcb84a5072d66e2e26726f --- /dev/null +++ b/biscuit/apps/chronos/templates/timetable/addhint.html @@ -0,0 +1,31 @@ +{% include 'partials/header.html' %} +{% load material_form %} +{% load martortags %} +{% load static %} + +<main> + <h4>Neuen Hinweis erstellen</h4> + + <form method="post"> + {% csrf_token %} + {{ form }} + <button type="submit" class="waves-effect waves-light btn green"> + <i class="material-icons left">add</i> Hinweis erstellen und veröffentlichen + </button> + </form> + + <script type="text/javascript" src="{% static 'plugins/js/ace.js' %}"></script> + {# <script type="text/javascript" src="{% static 'plugins/js/semantic.min.js' %}"></script>#} + {# <script type="text/javascript" src="{% static 'semantic/dropdown.min.js' %}"></script>#} + {# <script type="text/javascript" src="{% static 'semantic/tab.min.js' %}"></script>#} + + <script type="text/javascript" src="{% static 'plugins/js/mode-markdown.js' %}"></script> + <script type="text/javascript" src="{% static 'plugins/js/ext-language_tools.js' %}"></script> + <script type="text/javascript" src="{% static 'plugins/js/theme-github.js' %}"></script> + <script type="text/javascript" src="{% static 'plugins/js/highlight.min.js' %}"></script> + <script type="text/javascript" src="{% static 'plugins/js/resizable.min.js' %}"></script> + <script type="text/javascript" src="{% static 'plugins/js/emojis.min.js' %}"></script> + <script type="text/javascript" src="{% static 'martor/js/martor.min.js' %}"></script> +</main> + +{% include 'partials/footer.html' %} diff --git a/biscuit/apps/chronos/templates/timetable/hints.html b/biscuit/apps/chronos/templates/timetable/hints.html new file mode 100755 index 0000000000000000000000000000000000000000..1d289c607354df051cdbfe8eefadcf481b1e6fe4 --- /dev/null +++ b/biscuit/apps/chronos/templates/timetable/hints.html @@ -0,0 +1,64 @@ +{% include 'partials/header.html' %} + +<main> + <h4>Hinweise</h4> + + <a href="{% url 'timetable_add_hint' %}" class="waves-effect waves-light btn green"> + <i class="material-icons left">add</i> + Neuen Hinweis erstellen + </a> + + + {# <form method="GET">#} + {# {{ filter.form.as_p }}#} + {# <button type="submit" class="waves-effect waves-light btn">#} + {# <i class="material-icons left">refresh</i> Filter aktualisieren#} + {# </button>#} + {# </form>#} + + <ul class="collection"> + {% for aub in filter.qs %} + <li class="collection-item"> + <div class="row"> + <div class="col s12 m4"> + <p class="title"> + <span class="item-text"> + <i class="material-icons">access_time</i> + {{ aub.from_date }}, {{ aub.from_time }} Uhr — {{ aub.to_date }}, {{ aub.to_time }} Uhr + </span> + </p> + <p><a href="{% url 'aub_details' aub.id %}">{{ aub.description }}</a></p> + </div> + <div class="col s12 m6"> + <p> + <span class="item-text"> + <i class="material-icons">person</i> + {{ aub.created_by }} + </span> + </p> + </div> + <div class="col s12 m4"> + <p> + {% csrf_token %} + <button type="submit" name="allow" + class="waves-effect waves-light btn-flat btn-flat-large" title="Annehmen"> + <i class="material-icons center green-text">check_circle</i> + </button> + <button type="submit" name="deny" + class="waves-effect waves-light btn-flat btn-flat-large" title="Ablehnen"> + <i class="material-icons center red-text">not_interested</i> + </button> + </p> + </div + <div class="col s12 m2"> + <p> + <span class="badge new {{ aub.status.style_classes }}">{{ aub.status.name }}</span> + </p> + </div> + </div> + </li> + {% endfor %} + </ul> +</main> + +{% include 'partials/footer.html' %} diff --git a/biscuit/apps/chronos/urls.py b/biscuit/apps/chronos/urls.py index 61eb454ca4df89d46680baf71cc59a56e20607d2..2c40960df7979e09c099061f9bd27bc776cee3ea 100755 --- a/biscuit/apps/chronos/urls.py +++ b/biscuit/apps/chronos/urls.py @@ -13,5 +13,7 @@ urlpatterns = [ name='timetable_smart_plan_week'), path('substitutions/', views.substitutions, name='timetable_substitutions'), path('substitutions/<int:year>/<int:month>/<int:day>/', views.substitutions, name='timetable_substitutions_date'), - path('class.pdf', views.sub_pdf, name="timetable_substitutions_pdf") + path('class.pdf', views.sub_pdf, name="timetable_substitutions_pdf"), + path('hints', views.hints, name="timetable_hints"), + path('hints/add', views.add_hint, name="timetable_add_hint"), ] diff --git a/biscuit/apps/chronos/views.py b/biscuit/apps/chronos/views.py index 8f5176607aa97fe5ce435a532f9873ca1c67c36c..bb917647d3e765f4504dfdf2785b24abb2cbd197 100755 --- a/biscuit/apps/chronos/views.py +++ b/biscuit/apps/chronos/views.py @@ -8,6 +8,7 @@ from django.shortcuts import render, redirect from django.utils import timezone from schoolapps.settings import WEEK_DAYS +from timetable.forms import HintForm from timetable.pdf import generate_class_tex, generate_pdf from untisconnect.plan import get_plan, TYPE_TEACHER, TYPE_CLASS, TYPE_ROOM, parse_lesson_times @@ -18,6 +19,8 @@ from userinformation import UserInformation from schoolapps.settings import BASE_DIR from .models import Hint + + def get_all_context(): teachers = get_all_teachers() classes = get_all_classes() @@ -205,7 +208,7 @@ def sub_pdf(request): subs = get_substitutions_by_date(date) sub_table = generate_sub_table(subs) header_info = get_header_information(subs, date) - + # Generate LaTeX tex = generate_class_tex(sub_table, date, header_info) @@ -250,3 +253,23 @@ def substitutions(request, year=None, day=None, month=None): } return render(request, 'timetable/substitution.html', context) + + +@login_required +@permission_required("timetable.can_view_hint") +def hints(request): + return render(request, "timetable/hints.html") + + +@login_required +@permission_required('timetable.can_add_hint') +def add_hint(request): + if request.method == 'POST': + form = HintForm(request.POST) + + if form.is_valid(): + return redirect('aub_applied_for') + else: + form = HintForm() + + return render(request, 'timetable/addhint.html', {'form': form, "martor": True})