|
@@ -14,6 +14,14 @@ from .helpers import slots2string, string2slots, get_slot_count, slots2grid
|
|
|
def index(request):
|
|
|
return render(request, 'zitap/index.html')
|
|
|
|
|
|
+def my_events(request):
|
|
|
+ if not request.user.is_authenticated:
|
|
|
+ return HttpResponseRedirect('/my-events/login')
|
|
|
+ events = Event.objects.filter(participant__user=request.user).prefetch_related('date_set', 'participant_set', 'participant_set__user')
|
|
|
+ return render(request, 'zitap/my-events.html', {
|
|
|
+ 'events': events,
|
|
|
+ })
|
|
|
+
|
|
|
def about(request):
|
|
|
return render(request, 'zitap/about.html')
|
|
|
|
|
@@ -64,15 +72,19 @@ def event(request, url):
|
|
|
)
|
|
|
|
|
|
def login(request, url):
|
|
|
- try:
|
|
|
- event = Event.objects.get(url=url)
|
|
|
- except Event.DoesNotExist:
|
|
|
+ if url == 'my-events':
|
|
|
+ text = _('Login to My Events')
|
|
|
+ elif Event.objects.filter(url=url).exists():
|
|
|
+ text = _('Login to Update Slots')
|
|
|
+ else:
|
|
|
return render(request, 'zitap/event-not-found.html')
|
|
|
|
|
|
- if request.method != 'POST':
|
|
|
- return HttpResponseNotAllowed(['POST'])
|
|
|
-
|
|
|
- form = LoginForm(request.POST)
|
|
|
+ if request.method == 'POST':
|
|
|
+ form = LoginForm(request.POST)
|
|
|
+ elif request.user.is_authenticated:
|
|
|
+ return HttpResponseRedirect(f'/{url}')
|
|
|
+ else:
|
|
|
+ form = LoginForm()
|
|
|
if form.is_valid():
|
|
|
data = form.cleaned_data
|
|
|
user = authenticate(request, username=data['username'], password=data.get('password'))
|
|
@@ -81,33 +93,22 @@ def login(request, url):
|
|
|
user = User.objects.create_user(data['username'], password=data.get('password'))
|
|
|
except IntegrityError:
|
|
|
form.add_error('username', _('Username already exists'))
|
|
|
- return render(
|
|
|
- request,
|
|
|
- 'zitap/event.html',
|
|
|
- {'event': event, 'grid': slots2grid(event, event.participant_set.all()), 'login_form': form, 'update_form': None}
|
|
|
- )
|
|
|
+ return render(request, 'zitap/login.html', {'form': form, 'url': url, 'text': text})
|
|
|
|
|
|
auth_login(request, user)
|
|
|
- participant, created = Participant.objects.get_or_create(event=event, user=user)
|
|
|
- participant.save()
|
|
|
request.session['user_id'] = user.id
|
|
|
- return HttpResponseRedirect(f'/{event.url}')
|
|
|
- form.add_error(None, _('Login failed'))
|
|
|
- return render(
|
|
|
- request,
|
|
|
- 'zitap/event.html',
|
|
|
- {'event': event, 'grid': slots2grid(event, event.participant_set.all()), 'login_form': form, 'update_form': None}
|
|
|
- )
|
|
|
+ return HttpResponseRedirect(f'/{url}')
|
|
|
+ return render(request, 'zitap/login.html', {'form': form, 'url': url, 'text': text})
|
|
|
|
|
|
def logout(request, url):
|
|
|
- try:
|
|
|
- event = Event.objects.get(url=url)
|
|
|
- except Event.DoesNotExist:
|
|
|
+ auth_logout(request)
|
|
|
+ if url == 'my-events':
|
|
|
+ return HttpResponseRedirect(f'/{url}')
|
|
|
+ elif Event.objects.filter(url=url).exists():
|
|
|
+ return HttpResponseRedirect(f'/{url}')
|
|
|
+ else:
|
|
|
return render(request, 'zitap/event-not-found.html')
|
|
|
|
|
|
- if 'user_id' in request.session:
|
|
|
- del request.session['user_id']
|
|
|
- return HttpResponseRedirect(f'/{event.url}')
|
|
|
|
|
|
def update_slots(request, url):
|
|
|
try:
|