Commit 795f84f4 authored by lizonr1's avatar lizonr1

Add panel view and promotions sets

parent 1b09c20d
......@@ -6,6 +6,7 @@ Witaj {{ user }} w panelu Kawowego Dzienniczka.
<HR>
<a href="/place">Twoje kawiarnie</a><BR>
<a href="/beacon">Twoje beacony</a><BR>
<a href="/user/{{ user.user_profile.get.id }}">Twój profil</a><BR>
<BR><hr>
<a href="/logout">Logout</a>
......
......@@ -7,14 +7,17 @@ Witaj {{ user }} w panelu Kawowego Dzienniczka.
{{ place.name }} <BR>
{{ place.type }} <BR>
<img src="{{ place.screen_img }}"> <BR>
<img src="{{ place.logo_img }}"> <BR>
{{ place.description }} <BR>
{{ place.offer }} <BR>
{{ place.promotion }} <BR>
{% for promotion in place.promotion.all %}
<a href="/promotion_set/{{ promotion.id }}">{{ promotion.name }}</a><BR>
{% endfor %}
<a href="./promotion_set/add">Dodaj liste promocji</a><BR>
{{ place.localization }} <BR>
{{ place.beacon }} <BR>
<img src="{{ place.screen_img }}"> <BR>
<img src="{{ place.logo_img }}"> <BR>
<BR><hr>
<a href="/place">Wróć</a><BR>
......
......@@ -10,6 +10,7 @@ Witaj {{ user }} w panelu Kawowego Dzienniczka.
{% endfor %}
<BR><hr>
<a href="/place/add">Dodaj kawiarnie</a><BR>
<a href="/panel">Panel</a>
<BR>
......
from django.contrib.auth import login, logout
from django.contrib.auth.decorators import login_required
from django.core.urlresolvers import reverse
from django.contrib.auth.models import User
from django.core.urlresolvers import reverse, reverse_lazy
from django.http import HttpResponseRedirect
from django.shortcuts import render, redirect
from django.utils.decorators import method_decorator
from django.views import generic
from django.views.decorators.csrf import csrf_exempt
from django.views.generic import FormView, View, DetailView, ListView, CreateView, UpdateView
from django.views.generic import FormView, View, DetailView, ListView, CreateView, UpdateView, DeleteView
from django.views.generic.base import TemplateResponseMixin
from App.loyaltyMe.models import UserPlace, Place
from App.page.forms import EmailAuthenticationForm
from App.loyaltyMe.models import Place, Beacon
from App.page.forms import EmailAuthenticationForm, PlaceForm, PromotionForm
from App.promotion.models import PromotionSet, Promotion
from App.user.models import UserProfile
class CommingSoonView(generic.TemplateView):
......@@ -21,55 +24,115 @@ class MainPageView(generic.TemplateView):
template_name = 'main_page/base.html'
class PlacePageListView(ListView):
template_name = 'panel/place_list.html'
model = Place
def get_queryset(self):
qs = super(PlacePageListView, self).get_queryset()
return qs.filter(owners=self.request.user)
def get_context_data(self, **kwargs):
context = super(PlacePageListView, self).get_context_data(**kwargs)
return context
class PlacePageDetailView(DetailView):
template_name = 'panel/place_detail.html'
model = Place
def get_queryset(self):
qs = super(PlacePageDetailView, self).get_queryset()
return qs.filter(owners=self.request.user)
def get_context_data(self, **kwargs):
context = super(PlacePageDetailView, self).get_context_data(**kwargs)
return context
class PlaceCreateView(CreateView):
template_name = 'panel/place_form.html'
model = Place
fields = ['name', 'type', 'description']
form_class = PlaceForm
def get_success_url(self):
return reverse('place_detail', args=(self.object.id,))
def get_success_url(self, id):
return reverse('place_detail', args=(id,))
def get_form_kwargs(self):
kwargs = super(PlaceCreateView, self).get_form_kwargs()
kwargs['user'] = self.request.user
return kwargs
def form_valid(self, form):
self.object = form.save()
UserPlace.objects.create(user=self.request.user, place=self.object)
return super(PlaceCreateView, self).form_valid(form)
new_place = form.save()
new_place.owners.add(self.request.user)
new_place.save()
return HttpResponseRedirect(self.get_success_url(new_place.id))
class PlaceUpdateView(UpdateView):
template_name = 'panel/place_form.html'
model = Place
fields = ['name', 'type', 'description']
form_class = PlaceForm
def get_success_url(self):
return reverse('place_detail', args=(self.object.id,))
def get_form_kwargs(self):
kwargs = super(PlaceCreateView, self).get_form_kwargs()
kwargs['user'] = self.request.user
return kwargs
class PlacePageListView(ListView):
template_name = 'panel/place_list.html'
model = Place
class BeaconPageListView(ListView):
template_name = 'panel/beacon_list.html'
model = Beacon
def get_queryset(self):
qs = super(PlacePageListView, self).get_queryset()
return qs.filter(userplace_place__user=self.request.user)
qs = super(BeaconPageListView, self).get_queryset()
return qs.filter(user=self.request.user)
def get_context_data(self, **kwargs):
context = super(PlacePageListView, self).get_context_data(**kwargs)
context = super(BeaconPageListView, self).get_context_data(**kwargs)
return context
class PlacePageDetailView(DetailView):
template_name = 'panel/place_detail.html'
model = Place
class BeaconPageDetailView(DetailView):
template_name = 'panel/beacon_detail.html'
model = Beacon
def get_queryset(self):
qs = super(PlacePageDetailView, self).get_queryset()
return qs.filter(userplace_place__user=self.request.user)
qs = super(BeaconPageDetailView, self).get_queryset()
return qs.filter(user=self.request.user)
def get_context_data(self, **kwargs):
context = super(PlacePageDetailView, self).get_context_data(**kwargs)
context = super(BeaconPageDetailView, self).get_context_data(**kwargs)
return context
class BeaconCreateView(CreateView):
template_name = 'panel/beacon_form.html'
model = Beacon
fields = ['name', 'description', 'uuid', 'major', 'minor']
def get_success_url(self, id):
return reverse('place_detail', args=(id,))
def form_valid(self, form):
new_beacon = form.save(commit=False)
new_beacon.user = self.request.user
new_beacon.save()
return HttpResponseRedirect(self.get_success_url(new_beacon.id))
class BeaconUpdateView(UpdateView):
template_name = 'panel/beacon_form.html'
model = Beacon
fields = ['name', 'description', 'uuid', 'major', 'minor']
def get_success_url(self):
return reverse('beacon_detail', args=(self.object.id,))
@method_decorator(login_required, name='dispatch')
class PanelPageView(generic.TemplateView):
template_name = 'panel/panel.html'
......@@ -104,3 +167,78 @@ class LogoutView(TemplateResponseMixin, View):
logout(self.request)
return render(request, self.template_name)
return render(request, self.template_name)
class UserPageDetailView(DetailView):
template_name = 'panel/user_detail.html'
model = UserProfile
def get_context_data(self, **kwargs):
context = super(UserPageDetailView, self).get_context_data(**kwargs)
return context
class PromotionSetPageDetailView(DetailView):
template_name = 'panel/promotion_set_detail.html'
model = PromotionSet
def get_context_data(self, **kwargs):
context = super(PromotionSetPageDetailView, self).get_context_data(**kwargs)
return context
class PromotionSetCreateView(CreateView):
template_name = 'panel/promotion_set_form.html'
model = PromotionSet
fields = ['name', ]
def get_context_data(self, **kwargs):
context = super(PromotionSetCreateView, self).get_context_data(**kwargs)
return context
def get_success_url(self, id):
return reverse('promotion_set_detail', args=(id,))
def form_valid(self, form, **kwargs):
new_promotion_set = form.save()
place = Place.objects.get(pk=self.kwargs.get('pk'))
new_promotion_set.place_promotion.add(place)
new_promotion_set.save()
return HttpResponseRedirect(self.get_success_url(new_promotion_set.id))
class PromotionPageDetailView(DetailView):
template_name = 'panel/promotion_detail.html'
model = Promotion
def get_context_data(self, **kwargs):
context = super(PromotionPageDetailView, self).get_context_data(**kwargs)
return context
class PromotionCreateView(CreateView):
template_name = 'panel/promotion_form.html'
model = Promotion
form_class = PromotionForm
def get_context_data(self, **kwargs):
context = super(PromotionCreateView, self).get_context_data(**kwargs)
return context
def get_success_url(self, id):
return reverse('promotion_detail', args=(id,))
def form_valid(self, form, **kwargs):
new_promotion = form.save()
promotion_set = PromotionSet.objects.get(pk=self.kwargs.get('pk'))
promotion_set.promotions.add(new_promotion)
new_promotion.save()
return HttpResponseRedirect(self.get_success_url(new_promotion.id))
class PromotionDeleteView(DeleteView):
template_name = 'panel/promotion_confirm_delete.html'
model = Promotion
success_url = reverse_lazy('place_list')
\ No newline at end of file
......@@ -9,7 +9,7 @@ class Command(BaseCommand):
def handle(self, *args, **options):
promotion_sets = [
# 'name',products
['Promocja1', ['10%', '20%']],
['Wakacyjna Promocja', ['10%', '20%']],
['Promocja2', ['20%', '50%']],
]
print("Creating PromotionSets")
......
......@@ -41,8 +41,8 @@ class Promotion(models.Model):
name = models.CharField(max_length=20)
description = models.CharField(max_length=50)
code = models.CharField(max_length=10)
img = models.ImageField()
code = models.CharField(max_length=10, blank=True)
img = models.ImageField(blank=True)
status = models.CharField(max_length=2, choices=STATUS_CHOICES, default=AVAILABLE)
task = models.ForeignKey(Task)
left_number = models.IntegerField(null=True)
......@@ -55,7 +55,7 @@ class Promotion(models.Model):
class PromotionSet(models.Model):
name = models.CharField(max_length=20)
promotions = models.ManyToManyField('promotion.Promotion', default='')
promotions = models.ManyToManyField('promotion.Promotion', default='', related_name='promotion_set')
def __str__(self):
return self.name
......
......@@ -26,7 +26,7 @@ class PromotionSetSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = Offer
fields = ('url', 'id', 'promotions')
fields = ('url', 'id', 'name', 'promotions')
class UserPromotionSerializer(serializers.HyperlinkedModelSerializer):
user = UserSerializer()
......
......@@ -133,7 +133,14 @@ STATIC_URL = '/static/'
MEDIA_URL = '/media/'
APPEND_SLASH = False
STATIC_ROOT = 'staticfiles'
STATIC_URL = '/static/'
STATICFILES_DIRS = (
os.path.join(BASE_DIR, 'static'),
)
PROJECT_DIR = os.path.abspath(os.path.dirname(__file__))
PROJECT_ROOT = os.path.dirname(os.path.abspath(__file__))
STATIC_ROOT = os.path.join(PROJECT_DIR, 'static')
......
......@@ -18,7 +18,10 @@ from django.contrib import admin
from rest_framework import routers
from App.loyaltyMe import views as loyalty_views
from App.page.views import coming_soon_page, main_page, login
from App.page.views import CommingSoonView, MainPageView, LoginView, LogoutView, PanelPageView, PlacePageListView, \
PlacePageDetailView, PlaceCreateView, PlaceUpdateView, BeaconPageListView, BeaconCreateView, BeaconUpdateView, \
BeaconPageDetailView, UserPageDetailView, PromotionSetPageDetailView, PromotionPageDetailView, \
PromotionSetCreateView, PromotionCreateView, PromotionDeleteView
from App.user import views as user_views
from App.promotion import views as promotion_views
from App.user.views import schema_view
......@@ -40,9 +43,25 @@ router.register(r'tasks', promotion_views.TaskViewSet)
urlpatterns = [
url(r'^api/', include(router.urls)),
url(r'^admin/', include(admin.site.urls)),
url(r'^$', coming_soon_page, name='post_list'),
url(r'^main/$', main_page, name='post_list'),
url(r'^login/$', login, name='post_list'),
url(r'^$', CommingSoonView.as_view(), name='cooming_soon'),
url(r'^main/$', MainPageView.as_view(), name='main_page'),
url(r'^panel/$', PanelPageView.as_view(), name='main_page'),
url(r'^login/$', LoginView.as_view(), name='login'),
url(r'^logout/$', LogoutView.as_view(), name='logout'),
url(r'^user/(?P<pk>\d+)/$', UserPageDetailView.as_view(), name='user_detail'),
url(r'^promotion_set/(?P<pk>\d+)/$', PromotionSetPageDetailView.as_view(), name='promotion_set_detail'),
url(r'^promotion_set/(?P<pk>\d+)/promotion/add$', PromotionCreateView.as_view(), name='promotion_create'),
url(r'^place/(?P<pk>\d+)/promotion_set/add$', PromotionSetCreateView.as_view(), name='promotion_set_create'),
url(r'^promotion/(?P<pk>\d+)/$', PromotionPageDetailView.as_view(), name='promotion_detail'),
url(r'^promotion/(?P<pk>\d+)/delete$', PromotionDeleteView.as_view(), name='promotion_delete'),
url(r'^place/$', PlacePageListView.as_view(), name='place_list'),
url(r'^place/add$', PlaceCreateView.as_view(), name='place_add'),
url(r'^place/(?P<pk>\d+)/update$', PlaceUpdateView.as_view(), name='place_update'),
url(r'^place/(?P<pk>\d+)/$', PlacePageDetailView.as_view(), name='place_detail'),
url(r'^beacon/$', BeaconPageListView.as_view(), name='beacon_list'),
url(r'^beacon/add$', BeaconCreateView.as_view(), name='beacon_add'),
url(r'^beacon/(?P<pk>\d+)/update$', BeaconUpdateView.as_view(), name='beacon_update'),
url(r'^beacon/(?P<pk>\d+)/$', BeaconPageDetailView.as_view(), name='beacon_detail'),
url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework')),
url(r'^api-token-auth/', user_views.obtain_auth_token),
url(r'^docs/', schema_view),
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment