Inital commit
This commit is contained in:
64
splitchat/core/forms.py
Normal file
64
splitchat/core/forms.py
Normal file
@@ -0,0 +1,64 @@
|
||||
from django import forms
|
||||
from django.contrib.auth.forms import UserCreationForm
|
||||
from django.contrib.auth.models import User
|
||||
from decimal import Decimal
|
||||
from .models import ChatRoom, Event, Expense, ExpenseSplit, Membership, UserProfile
|
||||
|
||||
|
||||
class SignUpForm(UserCreationForm):
|
||||
email = forms.EmailField(required=True)
|
||||
first_name = forms.CharField(max_length=50, required=False)
|
||||
last_name = forms.CharField(max_length=50, required=False)
|
||||
|
||||
class Meta:
|
||||
model = User
|
||||
fields = ('username', 'first_name', 'last_name', 'email', 'password1', 'password2')
|
||||
|
||||
|
||||
class ChatRoomForm(forms.ModelForm):
|
||||
class Meta:
|
||||
model = ChatRoom
|
||||
fields = ('name', 'description')
|
||||
widgets = {
|
||||
'name': forms.TextInput(attrs={'placeholder': 'Room name...', 'autocomplete': 'off'}),
|
||||
'description': forms.Textarea(attrs={'placeholder': 'What is this room for?', 'rows': 3}),
|
||||
}
|
||||
|
||||
|
||||
class EventForm(forms.ModelForm):
|
||||
event_date = forms.DateTimeField(
|
||||
required=False,
|
||||
widget=forms.DateTimeInput(attrs={'type': 'datetime-local'}),
|
||||
input_formats=['%Y-%m-%dT%H:%M'],
|
||||
)
|
||||
|
||||
class Meta:
|
||||
model = Event
|
||||
fields = ('title', 'description', 'location', 'event_date')
|
||||
widgets = {
|
||||
'title': forms.TextInput(attrs={'placeholder': 'Event title...'}),
|
||||
'description': forms.Textarea(attrs={'rows': 3, 'placeholder': 'Details...'}),
|
||||
'location': forms.TextInput(attrs={'placeholder': 'Location (optional)'}),
|
||||
}
|
||||
|
||||
|
||||
class ExpenseForm(forms.Form):
|
||||
description = forms.CharField(max_length=200, widget=forms.TextInput(attrs={'placeholder': 'What was this for?'}))
|
||||
amount = forms.DecimalField(max_digits=10, decimal_places=2, min_value=Decimal('0.01'),
|
||||
widget=forms.NumberInput(attrs={'placeholder': '0.00', 'step': '0.01'}))
|
||||
paid_by = forms.ModelChoiceField(queryset=User.objects.none(), empty_label="Who paid?")
|
||||
split_type = forms.ChoiceField(choices=Expense.SPLIT_CHOICES, initial='equal',
|
||||
widget=forms.RadioSelect)
|
||||
participants = forms.ModelMultipleChoiceField(
|
||||
queryset=User.objects.none(),
|
||||
widget=forms.CheckboxSelectMultiple,
|
||||
required=True,
|
||||
)
|
||||
|
||||
def __init__(self, *args, room=None, **kwargs):
|
||||
super().__init__(*args, **kwargs)
|
||||
if room:
|
||||
members = User.objects.filter(memberships__room=room, memberships__is_active=True)
|
||||
self.fields['paid_by'].queryset = members
|
||||
self.fields['participants'].queryset = members
|
||||
self.fields['participants'].initial = members
|
||||
Reference in New Issue
Block a user