Free and open source ticket system written in python
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

at 5edd527aaba4e33b526f04f58d0db2b8a4ef278e 62 lines 2.6 kB view raw
1from django.shortcuts import render, redirect 2from django.contrib.auth import login 3from datetime import datetime 4from .forms import FblAuthForm, FblAuthCodeForm, RegistrationCompletionForm 5from .utils import fbl_auth_request_code, fbl_auth_validate_code, fbl_auth_get_account, get_or_create_account 6 7def fbl_authentication_start(request): 8 print('fbl auth started') 9 auth_form = FblAuthForm(request.POST or None) 10 if request.method == "POST": 11 if auth_form.is_valid(): 12 13 valid_info = fbl_auth_request_code( 14 badge_number=auth_form.cleaned_data["badge_number"], 15 dob=auth_form.cleaned_data["dob"] 16 ) 17 if valid_info: 18 code_form = FblAuthCodeForm(initial={ 19 **auth_form.cleaned_data, 20 "dob": datetime.strptime(auth_form.cleaned_data["dob"], "%Y-%m-%d").strftime("%d/%m/%Y"), 21 }) 22 23 return render(request, "fbl_auth_get_code.html", {"get_code_form": code_form}) 24 25 auth_form.add_error(None, "Invalid badge number or date of birth") 26 27 return render(request, "fbl_auth_start.html", {"form": auth_form}) 28 29 30def fbl_authentication_get_code(request): 31 code_form = FblAuthCodeForm(request.POST or None) 32 if request.method == "POST": 33 if code_form.is_valid(): 34 access_token = fbl_auth_validate_code( 35 badge_number=code_form.cleaned_data["badge_number"], 36 dob=code_form.cleaned_data["dob"], 37 validation_code=code_form.cleaned_data["validation_code"] 38 ) 39 if access_token: 40 account_info = fbl_auth_get_account(access_token) 41 fbl_account = get_or_create_account(account_info) 42 43 login(request=request, user=fbl_account.user) 44 45 if not fbl_account.user.email: 46 return redirect("fbl_complete_registration") 47 else: 48 return redirect("all_tickets") 49 50 code_form.add_error(None, "Invalid validation code") 51 52 53 return render(request, "fbl_auth_get_code.html", {"get_code_form": code_form}) 54 55def complete_registration(request): 56 form = RegistrationCompletionForm(request.POST or None) 57 if request.method == "POST": 58 if form.is_valid(): 59 request.user.email = form.cleaned_data["email"] 60 request.user.save() 61 return redirect("all_tickets") 62 return render(request, "complete_registration.html", {"form": form})