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'], )) | ||
