Skip to content
Snippets Groups Projects
Verified Commit a0554aef authored by Jonathan Weth's avatar Jonathan Weth :keyboard:
Browse files

Add delete view and button for personal notes

parent 1fac32b3
No related branches found
No related tags found
1 merge request!86Resolve "Add option to reset personal note ("delete") at students view for class teachers"
Pipeline #3550 passed
from django.db import models
from django.utils.formats import date_format
from django.utils.translation import gettext_lazy as _
import reversion
from calendarweek import CalendarWeek
from aleksis.apps.chronos.mixins import WeekRelatedMixin
......@@ -82,6 +84,25 @@ class PersonalNote(ExtensibleModel, WeekRelatedMixin):
self.excuse_type = None
super().save(*args, **kwargs)
def reset(self):
"""Reset all saved data to default values.
This will create revisions internally.
"""
with reversion.create_revision():
self.save()
with reversion.create_revision():
self.absent = False
self.late = 0
self.excused = False
self.excuse_type = None
self.remarks = ""
self.extra_marks.clear()
self.save()
def __str__(self):
return f"{date_format(self.date)}, {self.lesson_period}, {self.person}"
class Meta:
verbose_name = _("Personal note")
verbose_name_plural = _("Personal notes")
......
......@@ -27,6 +27,10 @@
{% trans "Mark as" %}
<input type="hidden" value="{{ note.pk }}" name="personal_note">
{% include "alsijil/partials/mark_as_buttons.html" %}
<a class="btn-flat red-text" title="{% trans "Delete note" %}"
href="{% url "delete_personal_note" note.pk %}">
<i class="material-icons center">cancel</i>
</a>
</form>
<i class="material-icons left red-text">warning</i>
<p class="no-margin">
......@@ -40,6 +44,10 @@
{% trans "Mark as" %}
<input type="hidden" value="{{ note.pk }}" name="personal_note">
{% include "alsijil/partials/mark_as_buttons.html" %}
<a class="btn-flat red-text" title="{% trans "Delete note" %}"
href="{% url "delete_personal_note" note.pk %}">
<i class="material-icons center">cancel</i>
</a>
</form>
</li>
{% empty %}
......@@ -152,6 +160,10 @@
{% trans "Mark as" %}
<input type="hidden" value="{{ note.pk }}" name="personal_note">
{% include "alsijil/partials/mark_as_buttons.html" %}
<a class="btn-flat red-text" title="{% trans "Delete note" %}"
href="{% url "delete_personal_note" note.pk %}">
<i class="material-icons center">cancel</i>
</a>
</form>
{% endif %}
......@@ -190,6 +202,10 @@
{% trans "Mark as" %}
<input type="hidden" value="{{ note.pk }}" name="personal_note">
{% include "alsijil/partials/mark_as_buttons.html" %}
<a class="btn-flat red-text" title="{% trans "Delete note" %}"
href="{% url "delete_personal_note" note.pk %}">
<i class="material-icons center">cancel</i>
</a>
</form>
{% endif %}
</div>
......
......@@ -29,6 +29,11 @@ urlpatterns = [
path("persons/", views.my_students, name="my_students"),
path("persons/<int:id_>/", views.overview_person, name="overview_person"),
path("me/", views.overview_person, name="overview_me"),
path(
"notes/<int:id_>/delete/",
views.delete_personal_note,
name="delete_personal_note",
),
path("absence/new", views.register_absence, name="register_absence"),
path("extra_marks/", views.ExtraMarkListView.as_view(), name="extra_marks"),
path(
......
......@@ -638,6 +638,20 @@ def register_absence(request: HttpRequest) -> HttpResponse:
return render(request, "alsijil/absences/register.html", context)
def delete_personal_note(request: HttpRequest, id_: int) -> HttpResponse:
context = {}
personal_note = get_object_or_404(PersonalNote, pk=id_)
context["object"] = personal_note
if request.method == "POST":
personal_note.reset()
return redirect("overview_person", personal_note.person.pk)
else:
return render(request, "core/pages/delete.html", context)
class ExtraMarkListView(SingleTableView, PermissionRequiredMixin):
"""Table of all extra marks."""
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment