151 lines
5.5 KiB
Python
151 lines
5.5 KiB
Python
from django.utils.translation import ugettext_lazy as _
|
|
|
|
from django.contrib import messages
|
|
from django.contrib.auth.decorators import login_required
|
|
from django.shortcuts import render, redirect, get_object_or_404
|
|
|
|
from events.models.profiles import Team, UserProfile
|
|
from events.models.events import Event, EventSeries, Attendee
|
|
from events.forms import NewEventForm, NewPlaceForm, NewEventDetailsForm
|
|
from events import location
|
|
|
|
import simple_ga as ga
|
|
|
|
@login_required
|
|
def new_event_start(request):
|
|
team = request.user.profile.personal_team
|
|
|
|
new_event = Event(team=team, created_by=request.user.profile)
|
|
|
|
if request.method == 'GET':
|
|
form = NewEventForm(instance=new_event)
|
|
|
|
context = {
|
|
'event': new_event,
|
|
'team': team,
|
|
'event_form': form,
|
|
}
|
|
return render(request, 'get_together/new_event/create_event.html', context)
|
|
elif request.method == 'POST':
|
|
form = NewEventForm(request.POST, instance=new_event)
|
|
if form.is_valid:
|
|
new_event = form.save()
|
|
Attendee.objects.create(event=new_event, user=request.user.profile, role=Attendee.HOST, status=Attendee.YES)
|
|
|
|
messages.add_message(request, messages.SUCCESS, message=_('Your event has been scheduled! Next, find a place for your event.'))
|
|
ga.add_event(request, action='new_event', category='activity', label=new_event.get_full_url())
|
|
|
|
return redirect('new-event-add-place', new_event.id)
|
|
else:
|
|
context = {
|
|
'event': new_event,
|
|
'team': team,
|
|
'event_form': form,
|
|
}
|
|
return render(request, 'get_together/new_event/create_event.html', context)
|
|
else:
|
|
return redirect('home')
|
|
|
|
@login_required
|
|
def new_event_add_place(request, event_id):
|
|
event = get_object_or_404(Event, id=event_id)
|
|
if not request.user.profile.can_edit_event(event):
|
|
messages.add_message(request, messages.WARNING, message=_('You can not make changes to this event.'))
|
|
return redirect(event.get_absolute_url())
|
|
|
|
if request.method == 'GET':
|
|
form = NewPlaceForm()
|
|
|
|
context = {
|
|
'event': event,
|
|
'place_form': form,
|
|
}
|
|
return render(request, 'get_together/new_event/add_place.html', context)
|
|
elif request.method == 'POST':
|
|
form = NewPlaceForm(request.POST)
|
|
if form.is_valid:
|
|
if request.POST.get('id', None):
|
|
form.instance.id = request.POST.get('id')
|
|
new_place = form.save()
|
|
event.place = new_place
|
|
event.save()
|
|
if event.series is not None and event.series.place is None:
|
|
event.series.place = new_place;
|
|
event.series.save()
|
|
return redirect('new-event-add-details', event.id)
|
|
else:
|
|
context = {
|
|
'event': event,
|
|
'place_form': form,
|
|
}
|
|
return render(request, 'get_together/new_event/add_place.html', context)
|
|
else:
|
|
return redirect('home')
|
|
|
|
|
|
@login_required
|
|
def new_event_add_details(request, event_id):
|
|
event = get_object_or_404(Event, id=event_id)
|
|
if not request.user.profile.can_edit_event(event):
|
|
messages.add_message(request, messages.WARNING, message=_('You can not make changes to this event.'))
|
|
return redirect(event.get_absolute_url())
|
|
|
|
if request.method == 'GET':
|
|
form = NewEventDetailsForm(instance=event)
|
|
|
|
context = {
|
|
'event': event,
|
|
'team': event.team,
|
|
'event_form': form,
|
|
}
|
|
return render(request, 'get_together/new_event/detail_event.html', context)
|
|
elif request.method == 'POST':
|
|
form = NewEventDetailsForm(request.POST, instance=event)
|
|
if form.is_valid:
|
|
new_event = form.save()
|
|
|
|
if form.cleaned_data.get('recurrences', None):
|
|
new_series = EventSeries.from_event(new_event, recurrences=form.cleaned_data['recurrences'])
|
|
new_series.save()
|
|
new_event.series = new_series
|
|
new_event.save()
|
|
|
|
return redirect('new-event-add-team', new_event.id)
|
|
else:
|
|
context = {
|
|
'event': event,
|
|
'team': event.team,
|
|
'event_form': form,
|
|
}
|
|
return render(request, 'get_together/new_event/detail_event.html', context)
|
|
else:
|
|
return redirect('home')
|
|
|
|
|
|
@login_required
|
|
def new_event_add_team(request, event_id):
|
|
teams = request.user.profile.moderating
|
|
event = get_object_or_404(Event, id=event_id)
|
|
if not request.user.profile.can_edit_event(event):
|
|
messages.add_message(request, messages.WARNING, message=_('You can not make changes to this event.'))
|
|
return redirect(event.get_absolute_url())
|
|
|
|
context = {
|
|
'event': event,
|
|
'teams': teams,
|
|
}
|
|
if request.method == 'GET':
|
|
return render(request, 'get_together/new_event/pick_team.html', context)
|
|
elif request.method == 'POST':
|
|
if 'team_id' in request.POST:
|
|
team = Team.objects.get(id=request.POST.get('team_id'))
|
|
event.team = team
|
|
event.save()
|
|
messages.add_message(request, messages.SUCCESS, message=_('Your event is ready! Now you can start inviting people to join you'))
|
|
return redirect(event.get_absolute_url())
|
|
else:
|
|
return render(request, 'get_together/new_event/pick_team.html', context)
|
|
else:
|
|
return redirect('home')
|
|
|
|
|