diff --git a/aleksis/apps/alsijil/forms.py b/aleksis/apps/alsijil/forms.py index 1a4dc2a72d9014ef79bbebf320b7b4bf89d3bfc6..cc4921487453c302a00cd8f7e30f2af5a883a179 100644 --- a/aleksis/apps/alsijil/forms.py +++ b/aleksis/apps/alsijil/forms.py @@ -38,9 +38,11 @@ from .models import ( class LessonDocumentationForm(forms.ModelForm): + layout = Layout("topic", "homework", "group_note") + class Meta: model = LessonDocumentation - fields = ["topic", "homework", "group_note"] + fields = ["topic", "homework", "group_note", "done_instructions"] def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) diff --git a/aleksis/apps/alsijil/migrations/0018_done_instructions.py b/aleksis/apps/alsijil/migrations/0018_done_instructions.py new file mode 100644 index 0000000000000000000000000000000000000000..968d8491a8aff2e522972dd3de78086eee43715e --- /dev/null +++ b/aleksis/apps/alsijil/migrations/0018_done_instructions.py @@ -0,0 +1,19 @@ +# Generated by Django 3.2.13 on 2022-06-14 13:51 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('core', '0019_fix_uniqueness_per_site'), + ('alsijil', '0017_instruction'), + ] + + operations = [ + migrations.AddField( + model_name='lessondocumentation', + name='done_instructions', + field=models.ManyToManyField(blank=True, null=True, related_name='documentations', to='alsijil.Instruction', verbose_name='Done instructions'), + ), + ] diff --git a/aleksis/apps/alsijil/models.py b/aleksis/apps/alsijil/models.py index f5ac8659030daaa78a29e7bb678aa99ffea31c5d..2adfc96680b627e2296665568d14c356f0255cb6 100644 --- a/aleksis/apps/alsijil/models.py +++ b/aleksis/apps/alsijil/models.py @@ -350,6 +350,14 @@ class LessonDocumentation(RegisterObjectRelatedMixin, ExtensibleModel): homework = models.CharField(verbose_name=_("Homework"), max_length=200, blank=True) group_note = models.CharField(verbose_name=_("Group note"), max_length=200, blank=True) + done_instructions = models.ManyToManyField( + "Instruction", + blank=True, + null=True, + related_name="documentations", + verbose_name=_("Done instructions"), + ) + def carry_over_data(self, all_periods_of_lesson: LessonPeriod): """Carry over data to given periods in this lesson if data is not already set. diff --git a/aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html b/aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html index ef0f42048bf1df524924ec1f380f8d88dd7fab3e..a5e68e5ad00b66d438b6ed4dc65d0263cf48dde7 100644 --- a/aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html +++ b/aleksis/apps/alsijil/templates/alsijil/partials/lesson/tabs/documentation.html @@ -1,4 +1,4 @@ -{% load i18n material_form_internal material_form %} +{% load i18n material_form_internal material_form data_helpers %} {% include "alsijil/partials/lesson/heading.html" %} {% include "alsijil/partials/lesson/prev_next.html" with with_save=0 %} @@ -19,6 +19,29 @@ {% if can_edit_lesson_documentation %} {% form form=lesson_documentation_form %}{% endform %} + + {% if instructions %} + <h6>{% trans "Instructions" %}</h6> + <div class="collection"> + {% for instruction in instructions %} + <div class="collection-item"> + <i class="material-icons primary-color-text left">{{ instruction.icon|default:"rule" }}</i> + {{ instruction.name }} + <div class="right grey-text darken-4"> + {% trans "Instruction done" %} + <label class="secondary-content right"> + <input type="checkbox" + class="filled-in" + name="lesson_documentation-done_instructions" + value="{{ instruction.pk }}" + {% if instruction.pk|slugify in lesson_documentation_form.done_instructions.value %}checked{% endif %}> + <span></span> + </label> + </div> + </div> + {% endfor %} + </div> + {% endif %} {% elif can_view_lesson_documentation %} <table> <tr> diff --git a/aleksis/apps/alsijil/views.py b/aleksis/apps/alsijil/views.py index 50c5f9267f2c9fc1f7ceb7d674b51476c885636f..a3751bcc25c02ad01e942468d94a4052ee966205 100644 --- a/aleksis/apps/alsijil/views.py +++ b/aleksis/apps/alsijil/views.py @@ -220,11 +220,17 @@ def register_object( lesson_documentation = register_object.get_or_create_lesson_documentation(wanted_week) context["has_documentation"] = bool(lesson_documentation.topic) + instructions = Instruction.objects.on_day(date_of_lesson).filter( + Q(groups__in=groups) | Q(groups__isnull=True) + ) + context["instructions"] = instructions + lesson_documentation_form = LessonDocumentationForm( request.POST or None, instance=lesson_documentation, prefix="lesson_documentation", ) + lesson_documentation_form.fields["done_instructions"].queryset = instructions # Prefetch object permissions for all related groups of the register object # because the object permissions are checked for all groups of the register object