summaryrefslogtreecommitdiffstats
path: root/restaurant_orders/settings/views.py
diff options
context:
space:
mode:
Diffstat (limited to 'restaurant_orders/settings/views.py')
-rw-r--r--restaurant_orders/settings/views.py44
1 files changed, 44 insertions, 0 deletions
diff --git a/restaurant_orders/settings/views.py b/restaurant_orders/settings/views.py
new file mode 100644
index 0000000..0921cd3
--- /dev/null
+++ b/restaurant_orders/settings/views.py
@@ -0,0 +1,44 @@
1from django.urls import reverse
2from django.shortcuts import render, redirect, Http404
3from django.views.generic.edit import UpdateView, CreateView, View
4from django.contrib.messages.views import SuccessMessageMixin
5from django.contrib.auth.mixins import LoginRequiredMixin, PermissionRequiredMixin
6
7from core.models import Restaurant
8from settings.forms import RestaurantForm
9
10
11class Home(LoginRequiredMixin, PermissionRequiredMixin, View):
12 permission_required = 'core.change_restaurant'
13
14 def get(self, request):
15 if not self.request.user.has_perm('settings.change_restaurant'):
16 raise Http404
17
18 redirect_url = 'settings:restaurant_settings'
19 restaurants = Restaurant.get_user_restaurants(request.user)
20
21 if len(restaurants) == 1:
22 return redirect(redirect_url, pk=restaurants[0].pk)
23
24 return render(request, template_name='restaurants_choice.html', context={
25 'title': 'Ustawienia',
26 'restaurants': restaurants,
27 'redirect_url': redirect_url
28 })
29
30class RestaurantSettings(LoginRequiredMixin, SuccessMessageMixin, PermissionRequiredMixin, UpdateView):
31 template_name = 'settings/restaurant_settings.html'
32 form_class = RestaurantForm
33 model = Restaurant
34 success_message = 'Zapisano!'
35 permission_required = 'core.change_restaurant'
36
37 def get_queryset(self, *args, **kwargs):
38 return super().get_queryset(*args, **kwargs).filter(
39 pk=self.kwargs['pk'],
40 users=self.request.user.pk
41 )
42
43 def get_success_url(self):
44 return reverse('settings:restaurant_settings', args=(self.kwargs['pk'], ))