def create_account(request, info_token): if request.user.is_authenticated(): return redirect('dashboard_index') try: info = signing.loads(info_token, max_age=TOKEN_MAX_AGE) except signing.SignatureExpired: return TemplateResponse(request, 'registration/token_expired.html') except signing.BadSignature: return TemplateResponse(request, 'registration/token_invalid.html') yeargroup = Yeargroup.objects.get(pk=info['yeargroup_pk']) if info['account'][0].isdigit(): username = yeargroup.slug[2] + info['account'] else: username = info['account'] if Mafiasi.objects.filter(username=username).count(): return redirect('login') if request.method == 'POST': form = PasswordForm(request.POST) if form.is_valid(): mafiasi = Mafiasi(username=username) mafiasi.set_password(form.cleaned_data['password1']) first_name = info.get('first_name') last_name = info.get('last_name') yeargroup = Yeargroup.objects.get(pk=info['yeargroup_pk']) if first_name and last_name: mafiasi.first_name = first_name mafiasi.last_name = last_name else: try: passwd = PasswdEntry.objects.get(username=info['account']) name_parsed = HumanName(passwd.full_name) mafiasi.first_name = name_parsed.first mafiasi.last_name = name_parsed.last except PasswdEntry.DoesNotExist: # This happens only when someone removed an entry # from our passwd database manually pass mafiasi.account = info['account'] mafiasi.email = u'{0}@{1}'.format(info['account'], settings.EMAIL_DOMAIN) mafiasi.yeargroup = yeargroup mafiasi.save() mafiasi.backend='django.contrib.auth.backends.ModelBackend' login(request, mafiasi) return redirect('dashboard_index') else: form = PasswordForm() return TemplateResponse(request, 'registration/create_account.html', { 'form': form, 'username': username })
def create_mafiasi_account(username, email, first_name, last_name, account=None, yeargroup=None, is_student=False, is_guest=False): mafiasi = Mafiasi(username=username) if first_name and last_name: mafiasi.first_name = first_name mafiasi.last_name = last_name mafiasi.email = '{}@{}'.format(username, settings.MAILCLOAK_DOMAIN) mafiasi.real_email = email mafiasi.yeargroup = yeargroup mafiasi.is_guest = is_guest if account: mafiasi.account = account return mafiasi
def create_mafiasi_account(username, email, first_name, last_name, account=None, yeargroup=None, is_student=False, is_guest=False): mafiasi = Mafiasi(username=username) if first_name and last_name: mafiasi.first_name = first_name mafiasi.last_name = last_name if settings.MAILCLOAK_DOMAIN: mafiasi.email = '{}@{}'.format(username, settings.MAILCLOAK_DOMAIN) else: mafiasi.email = email mafiasi.real_email = email mafiasi.yeargroup = yeargroup mafiasi.is_guest = is_guest if account: mafiasi.account = account return mafiasi