121 lines
4.6 KiB
Python
121 lines
4.6 KiB
Python
|
from django.utils.translation import ugettext_lazy as _
|
||
|
|
||
|
from django.contrib import messages
|
||
|
from django.contrib.auth import logout as logout_user
|
||
|
from django.contrib.auth.decorators import login_required
|
||
|
from django.contrib.sites.models import Site
|
||
|
from django.shortcuts import render, redirect, get_object_or_404
|
||
|
from django.http import HttpResponse, JsonResponse
|
||
|
from django.core.mail import send_mail
|
||
|
from django.template.loader import get_template, render_to_string
|
||
|
from django.conf import settings
|
||
|
|
||
|
|
||
|
from events.models.profiles import Organization, Team, UserProfile, Member
|
||
|
from events.models.events import Event, CommonEvent, Place, Attendee
|
||
|
from events.forms import OrganizationForm, NewCommonEventForm
|
||
|
from events import location
|
||
|
from events.utils import slugify
|
||
|
|
||
|
from accounts.models import EmailRecord
|
||
|
|
||
|
import datetime
|
||
|
import simplejson
|
||
|
|
||
|
# Create your views here.
|
||
|
def show_org(request, org_slug):
|
||
|
org = get_object_or_404(Organization, slug=org_slug)
|
||
|
upcoming_events = CommonEvent.objects.filter(organization=org, end_time__gt=datetime.datetime.now()).order_by('start_time')
|
||
|
recent_events = CommonEvent.objects.filter(organization=org, end_time__lte=datetime.datetime.now()).order_by('-start_time')[:5]
|
||
|
context = {
|
||
|
'org': org,
|
||
|
'upcoming_events': upcoming_events,
|
||
|
'recent_events': recent_events,
|
||
|
'member_list': Team.objects.filter(organization=org).order_by('name'),
|
||
|
'can_create_event': request.user.profile.can_create_common_event(org),
|
||
|
'can_edit_org': request.user.profile.can_edit_org(org),
|
||
|
}
|
||
|
return render(request, 'get_together/orgs/show_org.html', context)
|
||
|
|
||
|
|
||
|
@login_required
|
||
|
def edit_org(request, org_slug):
|
||
|
org = get_object_or_404(Organization, slug=org_slug)
|
||
|
if not request.user.profile.can_edit_org(org):
|
||
|
messages.add_message(request, messages.WARNING, message=_('You can not make changes to this organization.'))
|
||
|
return redirect('show-org', org_slug=org.slug)
|
||
|
|
||
|
if request.method == 'GET':
|
||
|
form = OrganizationForm(instance=org)
|
||
|
|
||
|
context = {
|
||
|
'org': org,
|
||
|
'org_form': form,
|
||
|
}
|
||
|
return render(request, 'get_together/orgs/edit_org.html', context)
|
||
|
elif request.method == 'POST':
|
||
|
form = OrganizationForm(request.POST, request.FILES, instance=org)
|
||
|
if form.is_valid():
|
||
|
form.save()
|
||
|
return redirect('show-org', org_slug=org.slug)
|
||
|
else:
|
||
|
context = {
|
||
|
'org': org,
|
||
|
'org_form': form,
|
||
|
}
|
||
|
return render(request, 'get_together/orgs/edit_org.html', context)
|
||
|
else:
|
||
|
return redirect('home')
|
||
|
|
||
|
def show_common_event(request, event_id, event_slug):
|
||
|
event = get_object_or_404(CommonEvent, id=event_id)
|
||
|
context = {
|
||
|
'org': event.organization,
|
||
|
'common_event': event,
|
||
|
'participating_events': event.participating_events.all().order_by('start_time'),
|
||
|
'can_edit_event': False,
|
||
|
}
|
||
|
return render(request, 'get_together/orgs/show_common_event.html', context)
|
||
|
|
||
|
@login_required
|
||
|
def create_common_event(request, org_slug):
|
||
|
org = get_object_or_404(Organization, slug=org_slug)
|
||
|
if not request.user.profile.can_create_common_event(org):
|
||
|
messages.add_message(request, messages.WARNING, message=_('You can not create events for this org.'))
|
||
|
return redirect('show-org', org_id=org.pk)
|
||
|
|
||
|
new_event = CommonEvent(organization=org, created_by=request.user.profile)
|
||
|
if request.method == 'GET':
|
||
|
form = NewCommonEventForm(instance=new_event)
|
||
|
|
||
|
context = {
|
||
|
'org': org,
|
||
|
'event_form': form,
|
||
|
}
|
||
|
return render(request, 'get_together/orgs/create_common_event.html', context)
|
||
|
elif request.method == 'POST':
|
||
|
form = NewCommonEventForm(request.POST, instance=new_event)
|
||
|
if form.is_valid:
|
||
|
new_event = form.save()
|
||
|
return redirect('show-common-event', new_event.id, new_event.slug)
|
||
|
else:
|
||
|
context = {
|
||
|
'org': org,
|
||
|
'event_form': form,
|
||
|
}
|
||
|
return render(request, 'get_together/orgs/create_common_event.html', context)
|
||
|
else:
|
||
|
return redirect('home')
|
||
|
|
||
|
@login_required
|
||
|
def create_common_event_team_select(request, event_id):
|
||
|
teams = request.user.profile.moderating
|
||
|
if len(teams) == 1:
|
||
|
return redirect(reverse('create-event', kwargs={'team_id':teams[0].id}) + '?common=%s'%event_id)
|
||
|
context = {
|
||
|
'common_event_id': event_id,
|
||
|
'teams': teams
|
||
|
}
|
||
|
return render(request, 'get_together/orgs/create_common_event_team_select.html', context)
|
||
|
|