Merge branch 'develop' into feature/meal-planning

This commit is contained in:
vabene1111
2020-06-10 16:01:21 +02:00
222 changed files with 100019 additions and 7802 deletions

View File

@@ -1,9 +1,10 @@
import os
import re
from annoying.decorators import ajax_request
from annoying.functions import get_object_or_None
from django.contrib import messages
from django.http import HttpResponse
from django.http import HttpResponse, FileResponse
from django.shortcuts import redirect
from django.utils.translation import gettext as _
from rest_framework import viewsets, permissions
@@ -94,7 +95,7 @@ def get_recipe_file(request, recipe_id):
if not recipe.cors_link:
update_recipe_links(recipe)
return HttpResponse(get_recipe_provider(recipe).get_base64_file(recipe))
return FileResponse(get_recipe_provider(recipe).get_file(recipe))
@group_required('user')

View File

@@ -1,12 +1,13 @@
from django.contrib import messages
from django.contrib.auth.mixins import LoginRequiredMixin
from django.db.models import ProtectedError
from django.http import HttpResponseRedirect
from django.shortcuts import get_object_or_404
from django.urls import reverse_lazy, reverse
from django.utils.translation import gettext as _
from django.views.generic import DeleteView
from cookbook.helper.permission_helper import GroupRequiredMixin, OwnerRequiredMixin
from cookbook.helper.permission_helper import group_required, GroupRequiredMixin, OwnerRequiredMixin
from cookbook.models import Recipe, Sync, Keyword, RecipeImport, Storage, Comment, RecipeBook, \
RecipeBookEntry, MealPlan, Ingredient
from cookbook.provider.dropbox import Dropbox
@@ -25,8 +26,8 @@ class RecipeDelete(GroupRequiredMixin, DeleteView):
return context
@group_required('user')
def delete_recipe_source(request, pk):
group_required = ['user']
recipe = get_object_or_404(Recipe, pk=pk)
if recipe.storage.method == Storage.DROPBOX:
@@ -78,18 +79,6 @@ class KeywordDelete(GroupRequiredMixin, DeleteView):
return context
class IngredientDelete(GroupRequiredMixin, DeleteView):
groups_required = ['user']
template_name = "generic/delete_template.html"
model = Ingredient
success_url = reverse_lazy('list_ingredient')
def get_context_data(self, **kwargs):
context = super(IngredientDelete, self).get_context_data(**kwargs)
context['title'] = _("Ingredient")
return context
class StorageDelete(GroupRequiredMixin, DeleteView):
groups_required = ['admin']
template_name = "generic/delete_template.html"
@@ -101,6 +90,13 @@ class StorageDelete(GroupRequiredMixin, DeleteView):
context['title'] = _("Storage Backend")
return context
def post(self, request, *args, **kwargs):
try:
return self.delete(request, *args, **kwargs)
except ProtectedError:
messages.add_message(request, messages.WARNING, _('Could not delete this storage backend as it is used in at least one monitor.'))
return HttpResponseRedirect(reverse('list_storage'))
class CommentDelete(OwnerRequiredMixin, DeleteView):
template_name = "generic/delete_template.html"

View File

@@ -10,6 +10,7 @@ from django.db.models import Q
from django.http import HttpResponseRedirect
from django.shortcuts import render, get_object_or_404
from django.utils import timezone
from django.views.decorators.clickjacking import xframe_options_exempt
from django_tables2 import RequestConfig
from django.utils.translation import gettext as _
@@ -20,6 +21,8 @@ from cookbook.forms import *
from cookbook.helper.permission_helper import group_required
from cookbook.tables import RecipeTable, RecipeTableSmall, CookLogTable, ViewLogTable
from recipes.version import *
def index(request):
if not request.user.is_authenticated:
@@ -267,7 +270,8 @@ def history(request):
@group_required('admin')
def system(request):
postgres = False if settings.DATABASES['default']['ENGINE'] == 'django.db.backends.postgresql_psycopg2' else True
return render(request, 'system.html', {'gunicorn_media': settings.GUNICORN_MEDIA, 'debug': settings.DEBUG, 'postgres': postgres})
return render(request, 'system.html', {'gunicorn_media': settings.GUNICORN_MEDIA, 'debug': settings.DEBUG, 'postgres': postgres, 'version': VERSION_NUMBER, 'ref': BUILD_REF})
def setup(request):
@@ -283,7 +287,8 @@ def setup(request):
else:
user = User(
username=form.cleaned_data['name'],
is_superuser=True
is_superuser=True,
is_staff=True
)
try:
validate_password(form.cleaned_data['password'], user=user)