diff options
Diffstat (limited to 'restaurant_orders/settings/views.py')
-rw-r--r-- | restaurant_orders/settings/views.py | 44 |
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 @@ | |||
1 | from django.urls import reverse | ||
2 | from django.shortcuts import render, redirect, Http404 | ||
3 | from django.views.generic.edit import UpdateView, CreateView, View | ||
4 | from django.contrib.messages.views import SuccessMessageMixin | ||
5 | from django.contrib.auth.mixins import LoginRequiredMixin, PermissionRequiredMixin | ||
6 | |||
7 | from core.models import Restaurant | ||
8 | from settings.forms import RestaurantForm | ||
9 | |||
10 | |||
11 | class 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 | |||
30 | class 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'], )) | ||