Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Django formset set current user
- class NewStudentForm (forms.Form):
- username = forms.RegexField(label=_("Username"), max_length=30, regex=r'^w+$',
- help_text = _("Required. 30 characters or fewer. Alphanumeric characters only (letters, digits and underscores)."),
- error_message = _("This value must contain only letters, numbers and underscores."))
- first_name = forms.CharField(label=_('first name'), max_length=30 )
- last_name = forms.CharField(label=_('last name'), max_length=30, )
- email = forms.EmailField(label=_('e-mail address') )
- password = forms.CharField(label=_('password'), max_length=64, )
- class Meta:
- model = User
- fields = ("username","first_name", "last_name", "email", "password")
- def __init__(self, *args, **kwargs):
- self._user = kwargs.pop('user')
- super(NewStudentForm, self).__init__(*args, **kwargs)
- def save(self, commit=True):
- user = super(NewStudentForm, self).save(commit=False)
- user.set_password(self.cleaned_data["password"])
- if commit:
- user.save()
- profile = Profile.objects.create_profile(user)
- profile.activiation_key = profile.ACTIVATED_KEY
- profile.authorized = True
- profile.save()
- user.is_active=True
- user.save()
- student = models.Student()
- student.user = user
- student.teacher = self._user
- student.plaintext_pwd = self.cleaned_data["password"]
- student.save()
- return UserWarning
- @login_required
- def new_student(request):
- from django.forms.formsets import formset_factory
- try:
- if request.method == 'GET':
- newStudentFormset = formset_factory(forms.NewStudentForm, extra=2)
- formset = newStudentFormset()
- return shortcuts.render_to_response('NewStudent.html', { 'newStudentFormSet':formset, 'active_username': request.user.username })
- elif request.method == 'POST':
- if LOGIN_FORM_KEY in request.POST:
- return _handle_login(request)
- data = request.POST.copy()
- newStudentFormset = formset_factory(forms.NewStudentForm)
- formset = newStudentFormset(data) ### Pass current user to formset? ###
- if formset.is_valid():
- formset.save()
- request.user.message_set.create(message="Save successful.")
- return shortcuts.redirect(student)
- else:
- return shortcuts.render_to_response('NewStudent.html', { 'newStudentFormSet':formset, 'active_username': request.user.username, 'error_message':formset.errors})
- return http.HttpResponseNotAllowed(['GET', 'POST'])
- except models.Student.DoesNotExist:
- return http.HttpResponseNotFound('<h1>Requested Student not found</h1>')
- class NewStudentFormSet(BaseFormSet):
- def __init__(self, *args, **kwargs):
- self. user = kwargs.pop('user', None)
- super(NewStudentFormSet, self).__init__(*args, **kwargs)
- def _construct_forms(self):
- self.forms = []
- for i in xrange(self.total_form_count()):
- self.forms.append(self._construct_form(i, user=self.user))
- ...
- data = request.POST.copy()
- newStudentFormset = formset_factory(forms.NewStudentForm, formset=forms.NewStudentFormSet)
- formset = newStudentFormset(data, user=request.user)
- ...
Add Comment
Please, Sign In to add comment