#!/usr/bin/env python # -*- coding: utf-8 -*- ''' Django views. ''' from django.shortcuts import render, redirect, get_object_or_404 from django.urls import reverse_lazy from django.views.generic.edit import CreateView from django.views import View from django.http import Http404 from django.views.generic.edit import UpdateView from .forms import ExplorerCreationForm, PlaceForm, PlaceImageCreateForm from .models import Place, PlaceImage, Voucher # Create your views here. class SignUpView(CreateView): form_class = ExplorerCreationForm success_url = reverse_lazy('login') template_name = 'signup.html' def place_list_view(request,): return render(request, 'placeList.html', {'place_list':Place.objects.all()}) def place_detail_view(request, pk): return render(request, 'placeOverview.html', {'place':Place.objects.get(pk=pk)}) def hello_world(request): return render(request, 'hello_world.html', {'text':'Hello World!'}) class HomeView(View): def get(self, request, *args, **kwargs): place_list = Place.objects.all().order_by('submitted_when')[:10] context = { 'place_list': place_list } return render(request, 'home.html', context) class PlaceUpdateView(UpdateView): template_name = 'update_place.html' model = Place form_class = PlaceForm def get_success_url(self): return reverse_lazy('place_detail', kwargs={'pk':self.get_object().pk}) class PlaceCreateView(View): def get(self, request, *args, **kwargs): place_image_form = PlaceImageCreateForm() place_form = PlaceForm() context = { 'place_form': place_form, 'place_image_form': place_image_form } return render(request, 'create_place.html', context) def post(self, request, *args, **kwargs): place_form = PlaceForm(request.POST) if place_form.is_valid(): submitter = request.user place = place_form.save(commit=False) # Save logged in user as "submitted_by" place.submitted_by = submitter place.save() if request.FILES: self._apply_multipart_image_upload( files=request.FILES.getlist('filename'), place=place, submitter=submitter ) kwargs_to_pass = { 'pk': place.pk } return redirect(reverse_lazy('place_detail', kwargs=kwargs_to_pass)) else: context = { 'form': form_place } return render(request, 'create_place.html', context) def _apply_multipart_image_upload(self, files, place, submitter):: place_image = PlaceImage.objects.create( filename=image, place=place, submitted_by=submitter ) place_image.save()