from django.shortcuts import render from django.http import HttpResponse from django.conf import settings from django.forms import TextInput, RadioSelect from pprint import pprint from ..models import * from ..forms import * def index(request): return render(request, 'index.html') def reset_session(request): request.session.clear() return render(request, 'index.html') def new_stay(request): try: print('Current step : ' + str(request.session.get('new_stay_step'))) except IndexError: print('New stay is empty') if not request.session.get('new_stay_step', False) \ or request.session.get('new_stay_done', False) : # This is a new stay, we initialize the session request.session['new_stay_step'] = 0 request.session['new_stay_done'] = False # Boat form return new_stay_0(request) elif request.session['new_stay_step'] == 1: # Insurance form return new_stay_1(request) elif request.session['new_stay_step'] ==2: # Person form return new_stay_2(request) elif request.session['new_stay_step'] ==3: # Stay form return new_stay_3(request) elif request.session['new_stay_step'] == 4: # Save form request.session['new_stay_done'] = True return new_stay_4(request) def new_stay_0(request): try: boat_id = int(request.POST.get('search_results')) boat = Boat.objects.get(pk=boat_id) if boat is not None: request.session['new_stay_step'] = 1 request.session['new_stay_boat'] = boat_id insurance = boat.getInsurance() request.session['new_stay_insurance'] = \ insurance.id \ if insurance is not None \ else None return new_stay(request) except TypeError: pass except Exception as e: pprint(e) name = request.POST.get('search_name', '') boat_existing = [ (b.id, b.name) for b in \ Boat.objects.filter(name__icontains=name) ] \ if len(name) > 2 else [] boat_search_form = BoatSearchForm( name=name, choices=boat_existing) boat_form = BoatForm() return render(request, 'new_stay/new_stay-0.html', { 'boat_search_form': boat_search_form, 'boat_form': boat_form }) def new_stay_1(request): # Insurance try: if request.POST.get('search_results'): print('Search results') print(request.POST.get('search_results')) else: # User has not select a search result # So this must be the good insurance print('No search') request.session['new_stay_step'] = 2 return new_stay(request) except IndexError: print('Missing search_results data') print('No ') data = dict(request.session) data['insurance_form'] = InsuranceForm() data['insurance_search_form'] = InsuranceSearchForm() data['insurance'] = None try: id_ins = int(request.session['new_stay_insurance']) data['insurance'] = Insurance.objects.get( \ pk=id_ins) except KeyError: data['insurance'] = None return render(request, 'new_stay/new_stay-1.html', data) def new_stay_2(request): # Person boat = Boat.objects.get( pk=request.session.get('new_stay_boat')) data = dict(request.session) sailors = [] persons = {} for s in boat.sailors.filter(present=True): s_ = {} s_['person'] = s.person s_['is_captain'] = s.is_captain s_['is_crew'] = s.is_crew s_['is_owner'] = s.is_owner s_['is_guest'] = s.is_guest s_['is_pet'] = s.is_pet s_['present'] = s.present persons[s.person.id] = str(s.person) sailors.append(s_) data['persons'] = persons data['sailors_forms'] = SailorsFormSet( prefix='sai', initial=sailors) return render(request, 'new_stay/new_stay-2.html', data) def new_stay_3(request): pass def new_stay_4(request): pass