From 388ef32475fb915fa55be1e0de1202059e04d54c Mon Sep 17 00:00:00 2001 From: vabene1111 Date: Fri, 4 Jun 2021 17:05:03 +0200 Subject: [PATCH] actually apply limits everywhere --- cookbook/views/data.py | 19 ++++++++++++++++++- cookbook/views/edit.py | 2 +- cookbook/views/import_export.py | 10 +++++++++- cookbook/views/new.py | 2 +- 4 files changed, 29 insertions(+), 4 deletions(-) diff --git a/cookbook/views/data.py b/cookbook/views/data.py index edf041dfc..c5dd61416 100644 --- a/cookbook/views/data.py +++ b/cookbook/views/data.py @@ -20,12 +20,20 @@ from cookbook.forms import BatchEditForm, SyncForm from cookbook.helper.permission_helper import group_required, has_group_permission from cookbook.helper.recipe_url_import import parse_cooktime from cookbook.models import (Comment, Food, Ingredient, Keyword, Recipe, - RecipeImport, Step, Sync, Unit) + RecipeImport, Step, Sync, Unit, UserPreference) from cookbook.tables import SyncTable @group_required('user') def sync(request): + if request.space.max_recipes != 0 and Recipe.objects.filter(space=request.space).count() >= request.space.max_recipes: # TODO move to central helper function + messages.add_message(request, messages.WARNING, _('You have reached the maximum number of recipes for your space.')) + return HttpResponseRedirect(reverse('index')) + + if request.space.max_users != 0 and UserPreference.objects.filter(space=request.space).count() > request.space.max_users: + messages.add_message(request, messages.WARNING, _('You have more users than allowed in your space.')) + return HttpResponseRedirect(reverse('index')) + if request.method == "POST": if not has_group_permission(request.user, ['admin']): messages.add_message(request, messages.ERROR, _('You do not have the required permissions to view this page!')) @@ -109,6 +117,14 @@ def batch_edit(request): @group_required('user') @atomic def import_url(request): + if request.space.max_recipes != 0 and Recipe.objects.filter(space=request.space).count() >= request.space.max_recipes: # TODO move to central helper function + messages.add_message(request, messages.WARNING, _('You have reached the maximum number of recipes for your space.')) + return HttpResponseRedirect(reverse('index')) + + if request.space.max_users != 0 and UserPreference.objects.filter(space=request.space).count() > request.space.max_users: + messages.add_message(request, messages.WARNING, _('You have more users than allowed in your space.')) + return HttpResponseRedirect(reverse('index')) + if request.method == 'POST': data = json.loads(request.body) data['cookTime'] = parse_cooktime(data.get('cookTime', '')) @@ -200,6 +216,7 @@ def import_url(request): return render(request, 'url_import.html', context) + class Object(object): pass diff --git a/cookbook/views/edit.py b/cookbook/views/edit.py index 4ce7358a1..29419a61d 100644 --- a/cookbook/views/edit.py +++ b/cookbook/views/edit.py @@ -45,7 +45,7 @@ def convert_recipe(request, pk): @group_required('user') def internal_recipe_update(request, pk): - if request.space.max_recipes != 0 and Recipe.objects.filter(space=request.space).count() > request.space.max_recipes: + if request.space.max_recipes != 0 and Recipe.objects.filter(space=request.space).count() > request.space.max_recipes: # TODO move to central helper function messages.add_message(request, messages.WARNING, _('You have reached the maximum number of recipes for your space.')) return HttpResponseRedirect(reverse('view_recipe', args=[pk])) diff --git a/cookbook/views/import_export.py b/cookbook/views/import_export.py index 7de550c84..92a821942 100644 --- a/cookbook/views/import_export.py +++ b/cookbook/views/import_export.py @@ -23,7 +23,7 @@ from cookbook.integration.recettetek import RecetteTek from cookbook.integration.recipesage import RecipeSage from cookbook.integration.rezkonv import RezKonv from cookbook.integration.safron import Safron -from cookbook.models import Recipe, ImportLog +from cookbook.models import Recipe, ImportLog, UserPreference def get_integration(request, export_type): @@ -57,6 +57,14 @@ def get_integration(request, export_type): @group_required('user') def import_recipe(request): + if request.space.max_recipes != 0 and Recipe.objects.filter(space=request.space).count() >= request.space.max_recipes: # TODO move to central helper function + messages.add_message(request, messages.WARNING, _('You have reached the maximum number of recipes for your space.')) + return HttpResponseRedirect(reverse('index')) + + if request.space.max_users != 0 and UserPreference.objects.filter(space=request.space).count() > request.space.max_users: + messages.add_message(request, messages.WARNING, _('You have more users than allowed in your space.')) + return HttpResponseRedirect(reverse('index')) + if request.method == "POST": form = ImportForm(request.POST, request.FILES) if form.is_valid(): diff --git a/cookbook/views/new.py b/cookbook/views/new.py index 019cf89c3..d037044d6 100644 --- a/cookbook/views/new.py +++ b/cookbook/views/new.py @@ -28,7 +28,7 @@ class RecipeCreate(GroupRequiredMixin, CreateView): fields = ('name',) def form_valid(self, form): - if self.request.space.max_recipes != 0 and Recipe.objects.filter(space=self.request.space).count() >= self.request.space.max_recipes: + if self.request.space.max_recipes != 0 and Recipe.objects.filter(space=self.request.space).count() >= self.request.space.max_recipes: # TODO move to central helper function messages.add_message(self.request, messages.WARNING, _('You have reached the maximum number of recipes for your space.')) return HttpResponseRedirect(reverse('index'))