Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # Python code
- class AccountProfilesView(LoginRequiredMixin, UpdateView):
- # All users can access this view
- model = get_user_model()
- #success_url = reverse_lazy('dashboard')
- template_name = 'accounts/profile_form.html'
- fields = '__all__'
- def get_context_data(self, **kwargs):
- context = super(AccountProfilesView, self).get_context_data(**kwargs)
- user = self.request.user
- # Can define before the forms? Is possible?
- profesor_form = forms.ProfessorProfileForm()
- student_form = forms.StudentProfileForm()
- executive_form = forms.ExecutiveProfileForm()
- if not self.request.POST:
- if user.is_student:
- profile = user.get_student_profile()
- context['userprofile'] = profile
- context['form_student'] = forms.StudentProfileForm()
- elif user.is_professor:
- profile = user.get_professor_profile()
- context['userprofile'] = profile
- context['form_professor'] = forms.ProfessorProfileForm()
- elif user.is_executive:
- profile = user.get_executive_profile()
- context['userprofile'] = profile
- context['form_executive'] = forms.ExecutiveProfileForm()
- elif user.is_student and user.is_professor and user.is_executive:
- student_profile = user.get_student_profile()
- professor_profile = user.get_professor_profile()
- executive_profile = user.get_executive_profile()
- context['student_profile'] = student_profile
- context['professor_profile'] = professor_profile
- context['executive_profile'] = executive_profile
- context['form_student'] = forms.StudentProfileForm()
- context['form_professor'] = forms.ProfessorProfileForm()
- context['form_executive'] = forms.ExecutiveProfileForm()
- return context
- # Post method
- def post(self, request, *args, **kwargs):
- self.object = self.get_object()
- user = self.request.user
- if user.is_student:
- context['form_student'] = forms.StudentProfileForm(self.request.POST)
- elif user.is_professor:
- context['form_professor'] = forms.ProfessorProfileForm(self.request.POST)
- elif user.is_executive:
- context['form_executive'] = forms.ExecutiveProfileForm(self.request.POST)
- '''
- elif user.is_student and user.is_professor and user.is_executive:
- context['form_student'] = forms.StudentProfileForm(self.request.POST)
- context['form_professor'] = forms.ProfessorProfileForm(self.request.POST)
- context['form_executive'] = forms.ExecutiveProfileForm(self.request.POST)
- '''
- return super(AccountProfilesView, self).post(request, *args, **kwargs)
- # Validating form
- def form_valid(self, form):
- context = self.get_context_data(form=form)
- user = self.request.user
- user = form.save()
- if user.is_student:
- student = context['form_student'].save(commit=False)
- student.user = user
- student.save()
- elif user.is_professor:
- professor = context['form_professor'].save(commit=False)
- professor.user = user
- professor.save()
- elif user.is_executive:
- executive = context['form_executive'].save(commit=False)
- executive.user = user
- executive.save()
- return super(AccountProfilesView, self).form_valid(form)
- def get_success_url(self):
- return reverse('dashboard')
- # My template
- {% extends 'layout.html' %}
- {% load bootstrap3 %}
- {% block title_tag %}Accounts | Profile | iHost {{ block.super }}{% endblock %}
- {% block body_content %}
- <div class="container">
- <h1>My Profile</h1>
- <form method="POST">
- {% csrf_token %}
- {% if userprofile.user.is_student %}
- {% bootstrap_form form_student %}
- {% endif %}
- {% if userprofile.user.is_professor %}
- {% bootstrap_form form_professor %}
- {% endif %}
- {% if userprofile.user.is_executive %}
- {% bootstrap_form form_executive %}
- {% endif %}
- {% if userprofile.user.is_student %}
- {% if userprofile.user.is_professor %}
- {% if userprofile.user.is_executive%}
- {% bootstrap_form form_student %}
- {% bootstrap_form form_professor %}
- {% bootstrap_form form_executive %}
- {% endif %}
- {% endif %}
- {% endif %}
- <input type="submit" value="Save Changes" class="btn btn-default">
- </form>
- </div>
- {% endblock %}
Advertisement
Add Comment
Please, Sign In to add comment