52 lines
1.9 KiB
Python

from django.shortcuts import (render,
redirect)
from django.contrib import messages
from account.forms import RegisterForm
from django.contrib.auth import (login,
authenticate)
from imdb_api_access._requests import get_request
from imdb_api_access.exceptions import *
from django.shortcuts import render
from .send_otp import send_otp_view
def register_view(request): # sourcery skip: extract-method
if request.method == 'POST':
form = RegisterForm(request.POST)
if form.is_valid():
try:
get_request(f"https://imdb-api.com/en/API/Title/{request.POST['imdb_api_key']}/tt0110413")
except StatusCodeError:
messages.info(request, 'Account not created. Please try again later')
return redirect('register')
except MaximumUsageError as e:
messages.info(request, str(e))
return redirect('register')
except (APIError, InvalidAPIKey) as e:
if e.message == 'Invalid API Key':
form.add_error('imdb_api_key', 'Invalid API Key')
return render(request, 'register.html', context={"form": form})
messages.info(request, str(e))
return redirect('register')
to_email = form.cleaned_data.get('email')
form.save()
username = form.cleaned_data.get('username')
password = form.cleaned_data.get('password1')
user = authenticate(username=username, password=password)
login(request, user)
if to_email is not None:
return send_otp_view(request=request)
messages.success(request, 'Registration Successful')
return redirect('homepage')
else:
form = RegisterForm()
return render(request, 'register.html', context={"form": form})