mirror of
https://github.com/ajurna/cbwebreader.git
synced 2025-12-06 14:17:19 +00:00
141 lines
5.1 KiB
Python
141 lines
5.1 KiB
Python
from os import path
|
|
|
|
from django import forms
|
|
from django.contrib.auth.models import User
|
|
|
|
from comic.models import Setting
|
|
|
|
|
|
class InitialSetupForm(forms.Form):
|
|
username = forms.CharField(widget=forms.TextInput(attrs={"class": "form-control"}))
|
|
email = forms.CharField(widget=forms.TextInput(attrs={"class": "form-control"}))
|
|
password = forms.CharField(widget=forms.PasswordInput(attrs={"class": "form-control"}))
|
|
password_confirm = forms.CharField(
|
|
widget=forms.PasswordInput(attrs={"class": "form-control"})
|
|
)
|
|
base_dir = forms.CharField(widget=forms.TextInput(attrs={"class": "form-control"}))
|
|
|
|
def clean_base_dir(self):
|
|
data = self.cleaned_data["base_dir"]
|
|
if not path.isdir(data):
|
|
raise forms.ValidationError("This is not a valid Directory")
|
|
return data
|
|
|
|
def clean(self):
|
|
form_data = self.cleaned_data
|
|
if form_data["password"] != form_data["password_confirm"]:
|
|
raise forms.ValidationError("Passwords do not match.")
|
|
if len(form_data["password"]) < 8:
|
|
raise forms.ValidationError("Password is too short")
|
|
return form_data
|
|
|
|
|
|
class AccountForm(forms.Form):
|
|
username = forms.CharField(
|
|
required=False,
|
|
widget=forms.TextInput(attrs={"class": "form-control disabled", "readonly": True}),
|
|
)
|
|
email = forms.CharField(widget=forms.TextInput(attrs={"class": "form-control"}))
|
|
password = forms.CharField(
|
|
required=False, widget=forms.PasswordInput(attrs={"class": "form-control"})
|
|
)
|
|
password_confirm = forms.CharField(
|
|
required=False,
|
|
widget=forms.PasswordInput(attrs={"class": "form-control"}),
|
|
)
|
|
|
|
def clean_email(self):
|
|
data = self.cleaned_data["email"]
|
|
user = User.objects.get(username=self.cleaned_data["username"])
|
|
if data == user.email:
|
|
return data
|
|
if User.objects.filter(email=data).exists():
|
|
raise forms.ValidationError("Email Address is in use")
|
|
return data
|
|
|
|
def clean(self):
|
|
form_data = self.cleaned_data
|
|
if form_data["password"] != form_data["password_confirm"]:
|
|
raise forms.ValidationError("Passwords do not match.")
|
|
if len(form_data["password"]) < 8 & len(form_data["password"]) != 0:
|
|
raise forms.ValidationError("Password is too short")
|
|
return form_data
|
|
|
|
|
|
class AddUserForm(forms.Form):
|
|
username = forms.CharField(widget=forms.TextInput(attrs={"class": "form-control"}))
|
|
email = forms.CharField(widget=forms.TextInput(attrs={"class": "form-control"}))
|
|
password = forms.CharField(widget=forms.PasswordInput(attrs={"class": "form-control"}))
|
|
password_confirm = forms.CharField(
|
|
widget=forms.PasswordInput(attrs={"class": "form-control"})
|
|
)
|
|
|
|
def clean_username(self):
|
|
data = self.cleaned_data["username"]
|
|
if User.objects.filter(username=data).exists():
|
|
raise forms.ValidationError("This username Exists.")
|
|
return data
|
|
|
|
def clean_email(self):
|
|
data = self.cleaned_data["email"]
|
|
if User.objects.filter(email=data).exists():
|
|
raise forms.ValidationError("Email Address is in use")
|
|
return data
|
|
|
|
def clean(self):
|
|
form_data = self.cleaned_data
|
|
if form_data["password"] != form_data["password_confirm"]:
|
|
raise forms.ValidationError("Passwords do not match.")
|
|
if len(form_data["password"]) < 8:
|
|
raise forms.ValidationError("Password is too short")
|
|
return form_data
|
|
|
|
|
|
class EditUserForm(forms.Form):
|
|
username = forms.CharField(
|
|
required=False,
|
|
widget=forms.TextInput(attrs={"class": "form-control disabled", "readonly": True}),
|
|
)
|
|
email = forms.CharField(widget=forms.TextInput(attrs={"class": "form-control"}))
|
|
password = forms.CharField(
|
|
required=False, widget=forms.PasswordInput(attrs={"class": "form-control"})
|
|
)
|
|
# TODO: allow setting superuser on users
|
|
|
|
@staticmethod
|
|
def get_initial_values(user):
|
|
out = {"username": user.username, "email": user.email}
|
|
return out
|
|
|
|
def clean_email(self):
|
|
data = self.cleaned_data["email"]
|
|
user = User.objects.get(username=self.cleaned_data["username"])
|
|
if data == user.email:
|
|
return data
|
|
if User.objects.filter(email=data).exists():
|
|
raise forms.ValidationError("Email Address is in use")
|
|
return data
|
|
|
|
def clean_password(self):
|
|
data = self.cleaned_data["password"]
|
|
if len(data) < 8 & len(data) != 0:
|
|
raise forms.ValidationError("Password is too short")
|
|
return data
|
|
|
|
|
|
class SettingsForm(forms.Form):
|
|
base_dir = forms.CharField(widget=forms.TextInput(attrs={"class": "form-control"}))
|
|
|
|
def clean_base_dir(self):
|
|
data = self.cleaned_data["base_dir"]
|
|
if not path.isdir(data):
|
|
raise forms.ValidationError("This is not a valid Directory")
|
|
return data
|
|
|
|
@staticmethod
|
|
def get_initial_values():
|
|
base_dir, _ = Setting.objects.get_or_create(name="BASE_DIR")
|
|
|
|
initial = {"base_dir": base_dir.value}
|
|
return initial
|