diff --git a/AUTHORS.rst b/AUTHORS.rst index a7fc3f50e..1146adc9e 100644 --- a/AUTHORS.rst +++ b/AUTHORS.rst @@ -29,6 +29,7 @@ Developers * Kevin Antonio Rateni Iatauro: https://github.com/WalkingPizza * Sven - https://github.com/Svn-Sp * Christopher OConnell - https://github.com/oconnelc +* Biplov - https://github.com/beingbiplov Translators ----------- diff --git a/wger/weight/templates/overview.html b/wger/weight/templates/overview.html index 6af4479d5..56202f8c9 100644 --- a/wger/weight/templates/overview.html +++ b/wger/weight/templates/overview.html @@ -72,6 +72,27 @@ -/- {% endif %} + +
+
+ + +
+
+ {% endfor %} diff --git a/wger/weight/tests/test_entry.py b/wger/weight/tests/test_entry.py index c622147d1..ec087f8a5 100644 --- a/wger/weight/tests/test_entry.py +++ b/wger/weight/tests/test_entry.py @@ -24,7 +24,8 @@ from wger.core.tests import api_base_test from wger.core.tests.base_testcase import ( WgerAddTestCase, WgerEditTestCase, - WgerTestCase + WgerTestCase, + WgerDeleteTestCase ) from wger.utils.constants import TWOPLACES from wger.weight.models import WeightEntry @@ -112,6 +113,18 @@ class EditWeightEntryTestCase(WgerEditTestCase): user_fail = 'admin' +class DeleteWeightEntryTestCase(WgerDeleteTestCase): + """ + Tests deleting a weight entry + """ + + object_class = WeightEntry + url = 'weight:delete' + pk = 1 + user_success = 'test' + user_fail = 'admin' + + class WeightEntryTestCase(api_base_test.ApiBaseResourceTestCase): """ Tests the weight entry overview resource diff --git a/wger/weight/urls.py b/wger/weight/urls.py index a6a288b92..2e9b99075 100644 --- a/wger/weight/urls.py +++ b/wger/weight/urls.py @@ -33,6 +33,10 @@ urlpatterns = [ login_required(views.WeightUpdateView.as_view()), name='edit'), + url(r'^(?P\d+)/delete/$', + views.WeightDeleteView.as_view(), + name='delete'), + url(r'^export-csv/$', views.export_csv, name='export-csv'), diff --git a/wger/weight/views.py b/wger/weight/views.py index dd2d30a96..94d095ef6 100644 --- a/wger/weight/views.py +++ b/wger/weight/views.py @@ -21,6 +21,7 @@ import logging # Django from django.contrib.auth.decorators import login_required +from django.contrib.auth.mixins import LoginRequiredMixin from django.db.models import ( Max, Min @@ -37,7 +38,8 @@ from django.utils.translation import ( ) from django.views.generic import ( CreateView, - UpdateView + UpdateView, + DeleteView ) # Third Party @@ -46,7 +48,10 @@ from rest_framework.decorators import api_view from rest_framework.response import Response # wger -from wger.utils.generic_views import WgerFormMixin +from wger.utils.generic_views import ( + WgerFormMixin, + WgerDeleteMixin +) from wger.utils.helpers import check_access from wger.weight import helpers from wger.weight.forms import WeightForm @@ -88,7 +93,7 @@ class WeightAddView(WgerFormMixin, CreateView): return reverse('weight:overview', kwargs={'username': self.object.user.username}) -class WeightUpdateView(WgerFormMixin, UpdateView): +class WeightUpdateView(WgerFormMixin, LoginRequiredMixin, UpdateView): """ Generic view to edit an existing weight entry """ @@ -108,6 +113,28 @@ class WeightUpdateView(WgerFormMixin, UpdateView): return reverse('weight:overview', kwargs={'username': self.object.user.username}) +class WeightDeleteView(WgerDeleteMixin, LoginRequiredMixin, DeleteView): + """ + Generic view to delete a weight entry + """ + + model = WeightEntry + fields = ('weight',) + + messages = ugettext_lazy('Successfully deleted.') + + def get_context_data(self, **kwargs): + context = super(WeightDeleteView, self).get_context_data(**kwargs) + context['title'] = _('Delete weight entry for the %s') % self.object.date + return context + + def get_success_url(self): + """ + Return to overview with username + """ + return reverse('weight:overview', kwargs={'username': self.object.user.username}) + + @login_required def export_csv(request): """