Files
bugsink/teams/forms.py
某亚瑟 2b5fb1bf67 Basically completed i18n support, and Chinese translation
Implement most Chinese text translations, adding default recognition browser language and user settings language
2025-08-02 10:25:19 +08:00

82 lines
2.7 KiB
Python

from django import forms
from django.contrib.auth import get_user_model
from django.template.defaultfilters import yesno
from django.utils.translation import gettext_lazy as _
from django.utils.translation import pgettext_lazy
from bugsink.utils import assert_
from .models import TeamRole, TeamMembership, Team
User = get_user_model()
class TeamMemberInviteForm(forms.Form):
email = forms.EmailField(label=_('Email'), required=True)
role = forms.ChoiceField(
label=_('Role'), choices=TeamRole.choices, required=True, initial=TeamRole.MEMBER, widget=forms.RadioSelect)
def __init__(self, user_must_exist, *args, **kwargs):
super().__init__(*args, **kwargs)
self.user_must_exist = user_must_exist
if user_must_exist:
self.fields['email'].help_text = "The user must already exist in the system"
def clean_email(self):
email = self.cleaned_data['email']
if self.user_must_exist and not User.objects.filter(email=email).exists():
raise forms.ValidationError('No user with this email address in the system.')
return email
class MyTeamMembershipForm(forms.ModelForm):
"""Edit _your_ TeamMembership, i.e. email-settings, and role only for admins"""
class Meta:
model = TeamMembership
fields = ["send_email_alerts", "role"]
def __init__(self, *args, **kwargs):
edit_role = kwargs.pop("edit_role")
super().__init__(*args, **kwargs)
assert_(self.instance is not None, "This form is only implemented for editing")
self.fields['role'].label = _("Role")
if not edit_role:
del self.fields['role']
global_send_email_alerts = self.instance.user.send_email_alerts
global_send_email_alerts = self.instance.user.send_email_alerts
if global_send_email_alerts:
global_send_email_alerts_text = _("Yes")
else:
global_send_email_alerts_text = _("No")
empty_label = _("User-default (%s)") % global_send_email_alerts
self.fields['send_email_alerts'].label = _("Send email alerts")
self.fields['send_email_alerts'].empty_label = empty_label
self.fields['send_email_alerts'].widget.choices[0] = ("unknown", empty_label)
class TeamMembershipForm(forms.ModelForm):
"""Edit TeamMembership for not-you, i.e. set a role but not email-settings"""
class Meta:
model = TeamMembership
fields = ["role"]
class TeamForm(forms.ModelForm):
class Meta:
model = Team
fields = ["name", "visibility"]
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.fields['name'].label = pgettext_lazy("Team", "Name")
self.fields['visibility'].label = _("Visibility")