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.db import models
from django.utils.formats import date_format
from django.utils.translation import gettext_lazy as _ from django.utils.translation import gettext_lazy as _
import reversion
from calendarweek import CalendarWeek from calendarweek import CalendarWeek
from aleksis.apps.chronos.mixins import WeekRelatedMixin from aleksis.apps.chronos.mixins import WeekRelatedMixin
...@@ -82,6 +84,25 @@ class PersonalNote(ExtensibleModel, WeekRelatedMixin): ...@@ -82,6 +84,25 @@ class PersonalNote(ExtensibleModel, WeekRelatedMixin):
self.excuse_type = None self.excuse_type = None
super().save(*args, **kwargs) 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: class Meta:
verbose_name = _("Personal note") verbose_name = _("Personal note")
verbose_name_plural = _("Personal notes") verbose_name_plural = _("Personal notes")
......
...@@ -27,6 +27,10 @@ ...@@ -27,6 +27,10 @@
{% trans "Mark as" %} {% trans "Mark as" %}
<input type="hidden" value="{{ note.pk }}" name="personal_note"> <input type="hidden" value="{{ note.pk }}" name="personal_note">
{% include "alsijil/partials/mark_as_buttons.html" %} {% 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> </form>
<i class="material-icons left red-text">warning</i> <i class="material-icons left red-text">warning</i>
<p class="no-margin"> <p class="no-margin">
...@@ -40,6 +44,10 @@ ...@@ -40,6 +44,10 @@
{% trans "Mark as" %} {% trans "Mark as" %}
<input type="hidden" value="{{ note.pk }}" name="personal_note"> <input type="hidden" value="{{ note.pk }}" name="personal_note">
{% include "alsijil/partials/mark_as_buttons.html" %} {% 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> </form>
</li> </li>
{% empty %} {% empty %}
...@@ -152,6 +160,10 @@ ...@@ -152,6 +160,10 @@
{% trans "Mark as" %} {% trans "Mark as" %}
<input type="hidden" value="{{ note.pk }}" name="personal_note"> <input type="hidden" value="{{ note.pk }}" name="personal_note">
{% include "alsijil/partials/mark_as_buttons.html" %} {% 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> </form>
{% endif %} {% endif %}
...@@ -190,6 +202,10 @@ ...@@ -190,6 +202,10 @@
{% trans "Mark as" %} {% trans "Mark as" %}
<input type="hidden" value="{{ note.pk }}" name="personal_note"> <input type="hidden" value="{{ note.pk }}" name="personal_note">
{% include "alsijil/partials/mark_as_buttons.html" %} {% 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> </form>
{% endif %} {% endif %}
</div> </div>
......
...@@ -29,6 +29,11 @@ urlpatterns = [ ...@@ -29,6 +29,11 @@ urlpatterns = [
path("persons/", views.my_students, name="my_students"), path("persons/", views.my_students, name="my_students"),
path("persons/<int:id_>/", views.overview_person, name="overview_person"), path("persons/<int:id_>/", views.overview_person, name="overview_person"),
path("me/", views.overview_person, name="overview_me"), 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("absence/new", views.register_absence, name="register_absence"),
path("extra_marks/", views.ExtraMarkListView.as_view(), name="extra_marks"), path("extra_marks/", views.ExtraMarkListView.as_view(), name="extra_marks"),
path( path(
......
...@@ -638,6 +638,20 @@ def register_absence(request: HttpRequest) -> HttpResponse: ...@@ -638,6 +638,20 @@ def register_absence(request: HttpRequest) -> HttpResponse:
return render(request, "alsijil/absences/register.html", context) 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): class ExtraMarkListView(SingleTableView, PermissionRequiredMixin):
"""Table of all extra marks.""" """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