from django import formsfrom django.contrib.auth.forms import ReadOnlyPasswordHashFieldfrom django.contrib.auth.models import Group, Userfrom django.urls import reverse_lazyfrom django.utils.text import format_lazyfrom django.utils.translation import gettext_lazy as _from accounts.models import UserAttributesfrom .models import Permissionclass GroupForm(forms.ModelForm):permissions = forms.ModelMultipleChoiceField(widget=forms.CheckboxSelectMultiple,queryset=Permission.objects.filter(content_type__model="permissionset"),required=False,)users = forms.ModelMultipleChoiceField(widget=forms.CheckboxSelectMultiple,queryset=User.objects.all(),required=False,)def __init__(self, *args, **kwargs):super(GroupForm, self).__init__(*args, **kwargs)instance = getattr(self, "instance", None)if instance and instance.id:self.fields["users"].initial = self.instance.user_set.all()def save_m2m(self):self.instance.user_set.set(self.cleaned_data["users"])def save(self, *args, **kwargs):instance = super(GroupForm, self).save()self.save_m2m()return instanceclass Meta:model = Groupfields = "__all__"class UserForm(forms.ModelForm):user_permissions = forms.ModelMultipleChoiceField(widget=forms.CheckboxSelectMultiple,queryset=Permission.objects.filter(content_type__model="permissionset"),label=_("Permissions"),required=False,)groups = forms.ModelMultipleChoiceField(widget=forms.CheckboxSelectMultiple,queryset=Group.objects.all(),label=_("Groups"),required=False,)class Meta:model = Userfields = ["username","groups","first_name","last_name","email","user_permissions","is_staff","is_active","is_superuser",]def __init__(self, *args, **kwargs):super(UserForm, self).__init__(*args, **kwargs)if self.instance.id:password = ReadOnlyPasswordHashField(label=_("Password"),help_text=format_lazy(_("""Raw passwords are not stored, so there is no way to see this user's password,but you can change the password using <a href='{}'>this form</a>."""),reverse_lazy("admin:user_update_password",args=[self.instance.id,],),),)self.fields["Password"] = passwordclass UserCreateForm(UserForm):password = forms.CharField(widget=forms.PasswordInput)class Meta:model = Userfields = ["username","password","groups","first_name","last_name","email","user_permissions","is_staff","is_active","is_superuser",]class UserAttributesForm(forms.ModelForm):class Meta:model = UserAttributesexclude = ["user", "can_clone_instances"]
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。