Port to new django version - not yet fully working

- location field makes problems
This commit is contained in:
Martin Bauer
2019-01-05 11:27:15 +01:00
parent 72a9642a8e
commit 663185fd40
168 changed files with 797 additions and 5967 deletions

View File

@@ -1,12 +1,11 @@
from django.shortcuts import render, redirect
from django.http import HttpResponse
from django.forms.models import ModelForm
from django.forms import TextInput
from models import Event, EventParticipation
from .models import Event, EventParticipation
from serializers import ParticipationSerializer
from .serializers import ParticipationSerializer
import datetime
@@ -14,7 +13,6 @@ from rest_framework.decorators import api_view
from rest_framework.response import Response
from rest_framework import status
from crispy_forms.helper import FormHelper
from crispy_forms.layout import Submit
@@ -22,78 +20,75 @@ from crispy_forms.layout import Submit
# ---------------------------------------- API ---------------------------------------------------------
@api_view( ['GET', 'PUT'] )
def event_api( request, username = None, eventId = None ):
@api_view(['GET', 'PUT'])
def event_api(request, username=None, eventId=None):
try:
participationQs = EventParticipation.objects.filter( event__date__gte = datetime.date.today() )
participationQs = EventParticipation.objects.filter(event__date__gte=datetime.date.today())
if username:
participationQs = EventParticipation.objects.filter( user__username = username )
participationQs = EventParticipation.objects.filter(user__username=username)
if eventId:
participationQs = participationQs.filter( event__pk = eventId )
participationQs = participationQs.filter(event__pk=eventId)
except EventParticipation.DoesNotExist:
return HttpResponse( status=404 )
return HttpResponse(status=404)
if request.method == 'GET':
serializer = ParticipationSerializer( participationQs )
return Response( serializer.data )
elif request.method == 'PUT':
serializer = ParticipationSerializer ( participationQs, data = request.DATA, many=True )
if serializer.is_valid():
for serializedObject in serializer.object:
if not ( EventParticipation.isMember( request.user ) or EventParticipation.isAdmin( request.user ) ):
return Response( status = status.HTTP_403_FORBIDDEN )
if serializedObject.user != request.user:
if not EventParticipation.isAdmin( request.user ):
return Response( status = status.HTTP_403_FORBIDDEN )
serializer.save()
return Response( serializer.data )
else:
return Response( status = status.HTTP_400_BAD_REQUEST )
serializer = ParticipationSerializer(participationQs)
return Response(serializer.data)
elif request.method == 'PUT':
serializer = ParticipationSerializer(participationQs, data=request.DATA, many=True)
if serializer.is_valid():
for serializedObject in serializer.object:
if not (EventParticipation.isMember(request.user) or EventParticipation.isAdmin(request.user)):
return Response(status=status.HTTP_403_FORBIDDEN)
if serializedObject.user != request.user:
if not EventParticipation.isAdmin(request.user):
return Response(status=status.HTTP_403_FORBIDDEN)
serializer.save()
return Response(serializer.data)
else:
return Response(status=status.HTTP_400_BAD_REQUEST)
# ------------------------------------ Normal Views ----------------------------------------------------
def eventplanning( request ):
def eventplanning(request):
"""
View for a specific user, to edit his events
"""
# non-members see the grid - but cannot edit anything
if not EventParticipation.isMember( request.user ):
if not EventParticipation.isMember(request.user):
return events_grid(request)
# All events in the future sorted by date
all_future_events = list ( Event.objects.filter( date__gte = datetime.date.today() ).order_by( 'date') )
for e in all_future_events:
e.participation = EventParticipation.get_or_create( event = e, user = request.user )
context = { 'events' : all_future_events }
return render ( request, 'eventplanner/eventplanning_view.html', context )
def events_grid( request ):
usernames = [ u.username for u in EventParticipation.members() ]
all_future_events = list ( Event.objects.filter( date__gte = datetime.date.today() ).order_by( 'date') )
all_future_events = list(Event.objects.filter(date__gte=datetime.date.today()).order_by('date'))
for e in all_future_events:
e.participation = [ EventParticipation.get_or_create( event = e, user = u ) for u in EventParticipation.members() ]
context = { 'events': all_future_events,
'usernames' : usernames }
return render ( request, 'eventplanner/events_grid.html', context )
e.participation = EventParticipation.get_or_create(event=e, user=request.user)
context = {'events': all_future_events}
return render(request, 'eventplanner/eventplanning_view.html', context)
def events_grid(request):
usernames = [u.username for u in EventParticipation.members()]
all_future_events = list(Event.objects.filter(date__gte=datetime.date.today()).order_by('date'))
for e in all_future_events:
e.participation = [EventParticipation.get_or_create(event=e, user=u) for u in EventParticipation.members()]
context = {'events': all_future_events,
'usernames': usernames}
return render(request, 'eventplanner/events_grid.html', context)
def deleteEvent(request, pk):
Event.objects.get(pk=pk).delete()
return redirect(events_grid)
def deleteEvent( request, pk ):
Event.objects.get( pk = pk ).delete()
return redirect( events_grid )
# ------------------------------------ Detail Views ----------------------------------------------------
@@ -102,7 +97,8 @@ from django.views.generic.edit import UpdateView, CreateView
from location_field.widgets import LocationWidget
class EventForm( ModelForm ):
class EventForm(ModelForm):
def __init__(self, *args, **kwargs):
self.helper = FormHelper()
self.helper.form_class = 'form-horizontal'
@@ -111,38 +107,34 @@ class EventForm( ModelForm ):
class Meta:
model = Event
fields= [ 'type', 'short_desc', 'date', 'end_date', 'time', 'meeting_time', 'location', 'map_location', 'desc', ]
widgets = {
'location' : TextInput(),
'map_location' : LocationWidget(),
}
fields = ['type', 'short_desc', 'date', 'end_date', 'time', 'meeting_time', 'location', 'map_location',
'desc', ]
class EventUpdate( UpdateView ):
widgets = {
'location': TextInput(),
'map_location': LocationWidget(),
}
class EventUpdate(UpdateView):
form_class = EventForm
model = Event
model = Event
template_name_suffix = "_update_form"
success_url = '.'
def get_context_data(self, **kwargs):
context = super(UpdateView, self).get_context_data(**kwargs)
context['viewtype'] = "update"
return context
class EventCreate( CreateView ):
class EventCreate(CreateView):
form_class = EventForm
model = Event
model = Event
template_name_suffix = "_update_form"
success_url = '.'
def get_context_data(self, **kwargs):
context = super(CreateView, self).get_context_data(**kwargs)
context['viewtype'] = "create"
return context