12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- from django import forms
- class ProfileField(object):
- """
- Basic profile field
- """
- fieldname = None
- label = None
- readonly = False
- def get_label(self, user):
- if not self.label:
- raise NotImplementedError(
- "profile field class has to define label "
- "attribute or get_label(user) method"
- )
- return self.label
- def get_admin_field(self, user):
- return None
- def clean_admin_form(self, form, data):
- return data
- def admin_update_extra(self, user, cleaned_data):
- if self.readonly:
- return
- user.extra[self.fieldname] = cleaned_data.get(self.fieldname)
- class TextProfileField(ProfileField):
- def get_admin_field(self, user):
- return forms.CharField(
- label=self.get_label(user),
- initial=user.extra.get(self.fieldname),
- max_length=250,
- required=False,
- )
- class TextareaProfileField(TextProfileField):
- def get_admin_field(self, user):
- return forms.CharField(
- label=self.get_label(user),
- initial=user.extra.get(self.fieldname),
- max_length=250,
- widget=forms.Textarea(
- attrs={'rows': 4},
- ),
- required=False,
- )
|