bgarcial

Account Profile View to many type of users CBV

Apr 12th, 2017
348
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.26 KB | None | 0 0
  1. class AccountProfilesView(LoginRequiredMixin, UpdateView):
  2.     # All users can access this view
  3.     model = get_user_model()
  4.     success_url = reverse_lazy('dashboard')
  5.     template_name = 'accounts/profile_form.html'
  6.     fields = '__all__'
  7.  
  8.     def get_context_data(self, **kwargs):
  9.         context = super(AccountProfilesView, self).get_context_data(**kwargs)
  10.         user = self.request.user
  11.  
  12.         if not self.request.POST:
  13.             if user.is_student:
  14.                 profile = user.get_student_profile()
  15.                 context['userprofile'] = profile
  16.                 context['form_student'] = forms.StudentProfileForm()
  17.             if user.is_professor:
  18.                 profile = user.get_professor_profile()
  19.                 context['userprofile'] = profile
  20.                 context['form_professor'] = forms.ProfessorProfileForm()
  21.                 # print ("profesor form is", context['form_professor'])
  22.             if user.is_executive:
  23.                 profile = user.get_executive_profile()
  24.                 context['userprofile'] = profile
  25.                 context['form_executive'] = forms.ExecutiveProfileForm()
  26.         else:
  27.             if user.is_student:
  28.                 context['form_student'] = forms.StudentProfileForm(
  29.                 self.request.POST)
  30.             if user.is_professor:
  31.                 context['form_professor'] = forms.ProfessorProfileForm(
  32.                 self.request.POST)
  33.             if user.is_executive:
  34.                 context['form_executive'] = forms.ExecutiveProfileForm(
  35.                 self.request.POST)
  36.         return context
  37.  
  38.     def form_valid(self, form):
  39.         context = self.get_context_data(form=form)
  40.         user = self.request.user
  41.         user = form.save()
  42.         if user.is_student:
  43.             student = context['form_student'].save(commit=False)
  44.             student.user = user
  45.             student.save()
  46.         if user.is_professor:
  47.             professor = context['form_professor'].save(commit=False)
  48.             professor.user = user
  49.             professor.save()
  50.         if user.is_executive:
  51.             executive = context['form_executive'].save(commit=False)
  52.             executive.user = user
  53.             executive.save()
  54.         return super(AccountProfilesView, self).form_valid(form)
Advertisement
Add Comment
Please, Sign In to add comment