2023-10-17 20:00:25 +00:00
|
|
|
from django import forms
|
|
|
|
from django.contrib.auth.forms import UserCreationForm
|
|
|
|
from django.forms import ModelForm
|
|
|
|
from mixins.restrictions import RestrictedFormMixin
|
|
|
|
|
2024-01-01 18:21:27 +00:00
|
|
|
from mxs.restrictions import RestrictedFormMixinStaff
|
|
|
|
|
2024-05-17 21:47:16 +00:00
|
|
|
from .models import Drug, Favourite, NotificationSettings, User
|
2023-10-17 20:00:25 +00:00
|
|
|
|
|
|
|
# Create your forms here.
|
|
|
|
|
|
|
|
|
|
|
|
class NewUserForm(UserCreationForm):
|
|
|
|
email = forms.EmailField(required=True)
|
|
|
|
|
|
|
|
class Meta:
|
|
|
|
model = User
|
|
|
|
fields = (
|
|
|
|
"username",
|
|
|
|
"email",
|
|
|
|
"first_name",
|
|
|
|
"last_name",
|
|
|
|
"password1",
|
|
|
|
"password2",
|
|
|
|
)
|
|
|
|
|
|
|
|
def save(self, commit=True):
|
|
|
|
user = super(NewUserForm, self).save(commit=False)
|
|
|
|
user.email = self.cleaned_data["email"]
|
|
|
|
if commit:
|
|
|
|
user.save()
|
|
|
|
return user
|
|
|
|
|
|
|
|
|
|
|
|
class NotificationSettingsForm(RestrictedFormMixin, ModelForm):
|
|
|
|
class Meta:
|
|
|
|
model = NotificationSettings
|
|
|
|
fields = (
|
|
|
|
"ntfy_topic",
|
|
|
|
"ntfy_url",
|
|
|
|
)
|
|
|
|
help_texts = {
|
|
|
|
"ntfy_topic": "The topic to send notifications to.",
|
|
|
|
"ntfy_url": "Custom NTFY server. Leave blank to use the default server.",
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
class CustomUserCreationForm(UserCreationForm):
|
|
|
|
class Meta:
|
|
|
|
model = User
|
|
|
|
fields = "__all__"
|
2024-01-01 18:21:27 +00:00
|
|
|
|
|
|
|
|
|
|
|
class DrugForm(RestrictedFormMixinStaff, ModelForm):
|
|
|
|
class Meta:
|
|
|
|
model = Drug
|
|
|
|
fields = (
|
|
|
|
"name",
|
|
|
|
"drug_class",
|
|
|
|
"common_name",
|
|
|
|
"links",
|
|
|
|
"dosages",
|
|
|
|
"timings",
|
|
|
|
"effects",
|
|
|
|
"actions",
|
|
|
|
"experiences",
|
|
|
|
)
|
|
|
|
help_texts = {
|
|
|
|
"name": "Lysergic acid diethylamide, Phenibut",
|
|
|
|
"drug_class": "Psychedelic, Sedative, Stimulant",
|
|
|
|
"common_name": "LSD",
|
|
|
|
"links": "Factsheets, posts",
|
|
|
|
"dosages": "Dosages, how much to take to get a certain effect",
|
|
|
|
"timings": (
|
|
|
|
"Timings, how long to wait to reach maximum intensity (and " "others)"
|
|
|
|
),
|
|
|
|
"effects": "Effects, what does it do on a subjective level?",
|
|
|
|
"actions": "Actions, what does it do on an objective level?",
|
|
|
|
"experiences": "Experiences, what do people experience?",
|
|
|
|
}
|
2024-05-17 21:47:16 +00:00
|
|
|
|
|
|
|
|
|
|
|
class FavouriteForm(RestrictedFormMixin, ModelForm):
|
|
|
|
class Meta:
|
|
|
|
model = Favourite
|
|
|
|
fields = (
|
|
|
|
"nickname",
|
|
|
|
"name",
|
|
|
|
"drug_class",
|
|
|
|
"common_name",
|
|
|
|
)
|
|
|
|
help_texts = {
|
|
|
|
"nickname": "Call it whatever you like.",
|
|
|
|
"name": "Lysergic acid diethylamide, Phenibut",
|
|
|
|
"drug_class": "Psychedelic, Sedative, Stimulant",
|
|
|
|
"common_name": "LSD",
|
|
|
|
}
|