def done(self, fl, form_dict, **kwargs): self.request.breadcrumbs( ( ('registration','/reg/'), ) ) done_title = settings.TEMPLATE_CONTENT['reg']['register']['done']['title'] done_template = settings.TEMPLATE_CONTENT['reg']['register']['done']['template'] error_template = settings.TEMPLATE_CONTENT['reg']['register']['done']['error_template'] email_template = settings.TEMPLATE_CONTENT['reg']['register']['done']['email_template'] m_id = gen_member_id() M = lvl = O = A = U = D = Gs = None Us = [] ty = None if self.kwargs: for item in Member.MEMBER_TYPES: if unicode(item[1]) == unicode(self.kwargs['type']): ty = int(item[0]) else: t_f = form_dict['type'] ty = int(t_f.cleaned_data['member_type']) a_f = form_dict['address'] h_f = form_dict['head'] if a_f.is_valid() and h_f.is_valid(): A = a_f.save() U = h_f.save() #role for hol Ro = Role(title="Head of List",user=U) Ro.save() #organisation if ty == Member.ORG: var = a_f.cleaned_data o = a_f.cleaned_data['organisation'] O = Organisation(name=o,address=A) O.save() #get nb of users lvl = int(h_f.cleaned_data['more'])+1 #add one for head-of-list # delegate delegate = h_f.cleaned_data['delegate'] if delegate: d_f = form_dict['delegate'] if d_f.is_valid(): D = d_f.save() D.save() #role for delegate Ro = Role(title="Delegate",user=D) Ro.save() #all users for ORG type mu_fs = form_dict['more'] if mu_fs.is_valid(): for u in mu_fs: if u.is_valid() and u.has_changed(): if u.cleaned_data['email']: user = u.save(commit=False) user.username = gen_username(user.first_name,user.last_name) user.is_active = False user.password = make_password(gen_random_password()) user.save() Us.append(user) #student if ty == Member.STD: sp_f = form_dict['student_proof'] if sp_f.is_valid(): M = sp_f.save(commit=False) M.pk=m_id M.type=ty if M == None: M = Member(pk=m_id,type=ty) # if of type org, add organisation to Member model if ty == Member.ORG: M.organisation = O # add address and head_of_list to Member model M.address=A M.head_of_list=U #set the level (number of users) for ORG type if lvl: M.lvl=lvl # add delegate if exists if D != None: M.delegate=D # add member_type if in alt mode M.type = ty # save Member model M.save() # add all Users for ORG type if Us != []: M.users=Us reg_hash_code = gen_hash(settings.REG_SALT,M.head_of_list.email,15,M.address) # create registration entry for out-of-bound validation R = Registration(member=M,hash_code=reg_hash_code,date_of_registration=timezone.now()) R.save() # build confirmation mail message_content = { 'FULLNAME' : gen_member_fullname(M), 'MEMBER_TYPE' : Member.MEMBER_TYPES[int(M.type)][1], 'LINK' : gen_confirmation_link(reg_hash_code), } # send confirmation ok=notify_by_email(M.head_of_list.email,done_title,message_content,email_template,None,settings.EMAILS['email']['secgen']) if not ok: return render(self.request, error_template, { 'mode': 'Error in email confirmation', 'message': settings.TEMPLATE_CONTENT['error']['email'], }) head = False if int(M.type) == int(Member.ORG): head = True # done, redirect to thank you page return render(self.request, done_template, { 'title' : done_title, 'name' : gen_member_fullname(M), 'type' : Member.MEMBER_TYPES[int(M.type)][1], 'head' : head, })