diff options
Diffstat (limited to 'restaurant_orders/settings')
| -rw-r--r-- | restaurant_orders/settings/__init__.py | 0 | ||||
| -rw-r--r-- | restaurant_orders/settings/admin.py | 1 | ||||
| -rw-r--r-- | restaurant_orders/settings/apps.py | 6 | ||||
| -rw-r--r-- | restaurant_orders/settings/forms.py | 18 | ||||
| -rw-r--r-- | restaurant_orders/settings/templates/settings/restaurant_settings.html | 22 | ||||
| -rw-r--r-- | restaurant_orders/settings/urls.py | 9 | ||||
| -rw-r--r-- | restaurant_orders/settings/views.py | 44 |
7 files changed, 100 insertions, 0 deletions
diff --git a/restaurant_orders/settings/__init__.py b/restaurant_orders/settings/__init__.py new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/restaurant_orders/settings/__init__.py | |||
diff --git a/restaurant_orders/settings/admin.py b/restaurant_orders/settings/admin.py new file mode 100644 index 0000000..694323f --- /dev/null +++ b/restaurant_orders/settings/admin.py | |||
| @@ -0,0 +1 @@ | |||
| from django.contrib import admin | |||
diff --git a/restaurant_orders/settings/apps.py b/restaurant_orders/settings/apps.py new file mode 100644 index 0000000..71a36cb --- /dev/null +++ b/restaurant_orders/settings/apps.py | |||
| @@ -0,0 +1,6 @@ | |||
| 1 | from django.apps import AppConfig | ||
| 2 | |||
| 3 | |||
| 4 | class SettingsConfig(AppConfig): | ||
| 5 | default_auto_field = 'django.db.models.BigAutoField' | ||
| 6 | name = 'settings' | ||
diff --git a/restaurant_orders/settings/forms.py b/restaurant_orders/settings/forms.py new file mode 100644 index 0000000..1ea90e9 --- /dev/null +++ b/restaurant_orders/settings/forms.py | |||
| @@ -0,0 +1,18 @@ | |||
| 1 | from django import forms | ||
| 2 | from core.models import Restaurant | ||
| 3 | |||
| 4 | FORM_TAILWIND_CLASSES = 'form-control block w-full px-3 py-1.5 text-base font-normal text-gray-700 bg-white bg-clip-padding border border-solid border-gray-300 rounded transition ease-in-out m-0 focus:text-gray-700 focus:bg-white focus:border-blue-600 focus:outline-none' | ||
| 5 | |||
| 6 | class RestaurantForm(forms.ModelForm): | ||
| 7 | woocommerce_consumer_key = forms.CharField(required=False) | ||
| 8 | woocommerce_consumer_secret = forms.CharField(required=False) | ||
| 9 | woocommerce_webhook_secret = forms.CharField(required=False) | ||
| 10 | |||
| 11 | class Meta: | ||
| 12 | model = Restaurant | ||
| 13 | exclude = ('users', ) | ||
| 14 | |||
| 15 | def __init__(self, *args, **kwargs): | ||
| 16 | super(RestaurantForm, self).__init__(*args, **kwargs) | ||
| 17 | for key in self.fields.keys(): | ||
| 18 | self.fields[key].widget.attrs.update({'class': FORM_TAILWIND_CLASSES}) | ||
diff --git a/restaurant_orders/settings/templates/settings/restaurant_settings.html b/restaurant_orders/settings/templates/settings/restaurant_settings.html new file mode 100644 index 0000000..eebe63a --- /dev/null +++ b/restaurant_orders/settings/templates/settings/restaurant_settings.html | |||
| @@ -0,0 +1,22 @@ | |||
| 1 | {% extends "base.html" %} | ||
| 2 | |||
| 3 | {% block title %}Settings{% endblock %} | ||
| 4 | |||
| 5 | {% block content %} | ||
| 6 | <div class="py-20"> | ||
| 7 | <h3 class="text-3xl font-bold mb-2">Settings</h3> | ||
| 8 | |||
| 9 | <div id='webhook_url' class='w-full mb-8'> | ||
| 10 | <span>Wpisz ten wehbhook do ustawien w twoim sklepie!</span> | ||
| 11 | <strong> {{request.scheme}}://{{request.get_host}}{% url 'wordpress_integration:webhook' restaurant_pk=view.kwargs.pk %}</strong> | ||
| 12 | </div> | ||
| 13 | |||
| 14 | <div class="grid place-items-center"> | ||
| 15 | <form method="post" class="p-6 rounded-lg shadow-lg bg-gray-50 justify-center max-w-sm" enctype="multipart/form-data"> | ||
| 16 | {% csrf_token %} | ||
| 17 | {{form.as_p}} | ||
| 18 | <input type="submit" value="Zatwierdz!" /> | ||
| 19 | </form> | ||
| 20 | </div> | ||
| 21 | </div> | ||
| 22 | {% endblock %} | ||
diff --git a/restaurant_orders/settings/urls.py b/restaurant_orders/settings/urls.py new file mode 100644 index 0000000..294ea14 --- /dev/null +++ b/restaurant_orders/settings/urls.py | |||
| @@ -0,0 +1,9 @@ | |||
| 1 | from django.urls import path | ||
| 2 | from settings.views import Home, RestaurantSettings | ||
| 3 | |||
| 4 | app_name = 'settings' | ||
| 5 | |||
| 6 | urlpatterns = [ | ||
| 7 | path('', Home.as_view(), name='home'), | ||
| 8 | path('restaurant/<int:pk>', RestaurantSettings.as_view(), name='restaurant_settings') | ||
| 9 | ] | ||
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'], )) | ||
