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')