mirror of
https://github.com/ae-utbm/sith.git
synced 2025-07-12 04:49:25 +00:00
Improve launderette, need to finish the click view
This commit is contained in:
@ -12,11 +12,15 @@ from django.utils import dateparse
|
||||
from django.core.urlresolvers import reverse_lazy
|
||||
from django.conf import settings
|
||||
from django.db import transaction
|
||||
from django import forms
|
||||
|
||||
from core.models import Page
|
||||
from club.models import Club
|
||||
from core.views import CanViewMixin, CanEditMixin, CanEditPropMixin, CanCreateMixin
|
||||
from launderette.models import Launderette, Token, Machine, Slot
|
||||
from subscription.views import get_subscriber
|
||||
from counter.models import Counter, Customer
|
||||
from counter.views import GetUserForm
|
||||
|
||||
# For users
|
||||
|
||||
@ -97,7 +101,6 @@ class LaunderetteBookView(CanViewMixin, DetailView):
|
||||
for h in LaunderetteBookView.date_iterator(date, date+timedelta(days=1), timedelta(hours=1)):
|
||||
free = False
|
||||
if self.slot_type == "BOTH" and self.check_slot("WASHING", h) and self.check_slot("DRYING", h + timedelta(hours=1)):
|
||||
print("GUY")
|
||||
free = True
|
||||
elif self.slot_type == "WASHING" and self.check_slot("WASHING", h):
|
||||
free = True
|
||||
@ -107,28 +110,20 @@ class LaunderetteBookView(CanViewMixin, DetailView):
|
||||
kwargs['planning'][date].append(h)
|
||||
else:
|
||||
kwargs['planning'][date].append(None)
|
||||
print("Taken")
|
||||
return kwargs
|
||||
|
||||
# For admins
|
||||
|
||||
class LaunderetteListView(CanViewMixin, ListView):
|
||||
class LaunderetteListView(CanEditPropMixin, ListView):
|
||||
"""Choose which launderette to administer"""
|
||||
model = Launderette
|
||||
template_name = 'launderette/launderette_list.jinja'
|
||||
|
||||
class LaunderetteDetailView(CanViewMixin, DetailView):
|
||||
"""The admin page of the launderette"""
|
||||
model = Launderette
|
||||
pk_url_kwarg = "launderette_id"
|
||||
template_name = 'launderette/launderette_detail.jinja'
|
||||
|
||||
class LaunderetteEditView(CanViewMixin, UpdateView):
|
||||
class LaunderetteEditView(CanEditPropMixin, UpdateView):
|
||||
"""Edit a launderette"""
|
||||
model = Launderette
|
||||
pk_url_kwarg = "launderette_id"
|
||||
form_class = modelform_factory(Launderette, fields=['name', 'sellers'],
|
||||
widgets={'sellers':CheckboxSelectMultiple})
|
||||
fields = ['name']
|
||||
template_name = 'core/edit.jinja'
|
||||
|
||||
class LaunderetteCreateView(CanCreateMixin, CreateView):
|
||||
@ -137,6 +132,94 @@ class LaunderetteCreateView(CanCreateMixin, CreateView):
|
||||
fields = ['name']
|
||||
template_name = 'core/create.jinja'
|
||||
|
||||
def form_valid(self, form):
|
||||
club = Club.objects.filter(unix_name=settings.SITH_LAUNDERETTE_MANAGER['unix_name']).first()
|
||||
c = Counter(name=form.instance.name, club=club, type='OFFICE')
|
||||
c.save()
|
||||
form.instance.counter = c
|
||||
return super(LaunderetteCreateView, self).form_valid(form)
|
||||
|
||||
class LaunderetteDetailView(CanEditPropMixin, DetailView):
|
||||
"""The admin page of the launderette"""
|
||||
model = Launderette
|
||||
pk_url_kwarg = "launderette_id"
|
||||
template_name = 'launderette/launderette_detail.jinja'
|
||||
|
||||
class LaunderetteMainClickView(DetailView, ProcessFormView, FormMixin):
|
||||
"""The click page of the launderette"""
|
||||
model = Launderette
|
||||
pk_url_kwarg = "launderette_id"
|
||||
template_name = 'counter/counter_main.jinja'
|
||||
form_class = GetUserForm # Form to enter a client code and get the corresponding user id
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
"""
|
||||
We handle here the login form for the barman
|
||||
"""
|
||||
if self.request.method == 'POST':
|
||||
self.object = self.get_object()
|
||||
kwargs = super(LaunderetteMainClickView, self).get_context_data(**kwargs)
|
||||
kwargs['counter'] = self.object.counter
|
||||
kwargs['form'] = self.get_form()
|
||||
kwargs['barmen'] = [self.request.user]
|
||||
if 'last_basket' in self.request.session.keys():
|
||||
kwargs['last_basket'] = self.request.session.pop('last_basket')
|
||||
kwargs['last_customer'] = self.request.session.pop('last_customer')
|
||||
kwargs['last_total'] = self.request.session.pop('last_total')
|
||||
kwargs['new_customer_amount'] = self.request.session.pop('new_customer_amount')
|
||||
return kwargs
|
||||
|
||||
def form_valid(self, form):
|
||||
"""
|
||||
We handle here the redirection, passing the user id of the asked customer
|
||||
"""
|
||||
self.kwargs['user_id'] = form.cleaned_data['user_id']
|
||||
return super(LaunderetteMainClickView, self).form_valid(form)
|
||||
|
||||
def get_success_url(self):
|
||||
return reverse_lazy('launderette:click', args=self.args, kwargs=self.kwargs)
|
||||
|
||||
class LaunderetteClickView(CanEditMixin, DetailView):
|
||||
"""The click page of the launderette"""
|
||||
model = Launderette
|
||||
pk_url_kwarg = "launderette_id"
|
||||
template_name = 'launderette/launderette_click.jinja'
|
||||
|
||||
def generate_form(self):
|
||||
fields = OrderedDict()
|
||||
for s in self.subscriber.slots.all():
|
||||
fields["%s-%s-%s-%s" % (s.user, s.start_date, s.type, s.machine)] = forms.CharField(max_length=5,
|
||||
label="%s - %s" % (s.get_type_display(), s.start_date))
|
||||
return type('ClickForm', (forms.BaseForm,), { 'base_fields': fields })()
|
||||
|
||||
def get(self, request, *args, **kwargs):
|
||||
"""Simple get view"""
|
||||
self.customer = Customer.objects.filter(user__id=self.kwargs['user_id']).first()
|
||||
self.subscriber = get_subscriber(self.customer.user)
|
||||
request.session['not_enough'] = False
|
||||
return super(LaunderetteClickView, self).get(request, *args, **kwargs)
|
||||
|
||||
def post(self, request, *args, **kwargs):
|
||||
""" Handle the many possibilities of the post request """
|
||||
self.object = self.get_object()
|
||||
self.customer = Customer.objects.filter(user__id=self.kwargs['user_id']).first()
|
||||
self.subscriber = get_subscriber(self.customer.user)
|
||||
request.session['not_enough'] = False
|
||||
context = self.get_context_data(object=self.object)
|
||||
return self.render_to_response(context)
|
||||
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
"""
|
||||
We handle here the login form for the barman
|
||||
"""
|
||||
kwargs = super(LaunderetteClickView, self).get_context_data(**kwargs)
|
||||
kwargs['counter'] = self.object.counter
|
||||
kwargs['customer'] = self.customer
|
||||
kwargs['form'] = self.generate_form()
|
||||
return kwargs
|
||||
|
||||
|
||||
|
||||
class MachineEditView(CanEditPropMixin, UpdateView):
|
||||
"""Edit a machine"""
|
||||
|
Reference in New Issue
Block a user