Inital commit

This commit is contained in:
MonkeyStrongTogether
2026-05-22 17:48:03 +02:00
parent b691418e68
commit 87ec426fed
36 changed files with 2286 additions and 0 deletions

64
splitchat/core/forms.py Normal file
View 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