def application_details_corp_pre(request, slug, cmb_id=None, template_name="memberships/applications/details_corp_pre.html"): try: app = App.objects.get(slug=slug) except App.DoesNotExist: raise Http404 if not hasattr(app, 'corp_app'): raise Http404 if not app.corp_app: raise Http404 form = AppCorpPreForm(request.POST or None) if is_admin(request.user) or app.corp_app.authentication_method == 'admin': del form.fields['secret_code'] del form.fields['email'] from utils import get_corporate_membership_choices form.fields['corporate_membership_id'].choices = get_corporate_membership_choices() if cmb_id: form.fields['corporate_membership_id'].initial = cmb_id form.auth_method = 'corporate_membership_id' elif app.corp_app.authentication_method == 'email': del form.fields['corporate_membership_id'] del form.fields['secret_code'] form.auth_method = 'email' else: # secret_code del form.fields['corporate_membership_id'] del form.fields['email'] form.auth_method = 'secret_code' if request.method == "POST": if form.is_valid(): # find the corporate_membership_id and redirect to membership.application_details if form.auth_method == 'corporate_membership_id': corporate_membership_id = form.cleaned_data['corporate_membership_id'] else: corporate_membership_id = form.corporate_membership_id if form.auth_method == 'email': corp_memb = CorporateMembership.objects.get(pk=corporate_membership_id) try: indiv_veri = IndivMembEmailVeri8n.objects.get(corporate_membership=corp_memb, verified_email=form.cleaned_data['email']) if indiv_veri.verified: is_verified = True else: is_verified = False except IndivMembEmailVeri8n.DoesNotExist: is_verified = False indiv_veri = IndivMembEmailVeri8n() indiv_veri.corporate_membership = corp_memb indiv_veri.verified_email = form.cleaned_data['email'] if request.user and not request.user.is_anonymous(): indiv_veri.creator = request.user indiv_veri.save() # send an email to the user to verify the email address # then redirect them to the verification conf page # they'll need to follow the instruction in the email # to continue to sign up. if not is_verified: recipients = [indiv_veri.verified_email] extra_context = { 'object': indiv_veri, 'app': app, 'corp_memb': corp_memb, 'request': request, } send_email_notification('membership_corp_indiv_verify_email', recipients, extra_context) return redirect(reverse('membership.email__to_verify_conf')) else: # the email address is verified return redirect(reverse('membership.application_details_via_corp_domain', args=[app.slug, indiv_veri.corporate_membership.id, indiv_veri.pk, indiv_veri.guid])) if form.auth_method == 'secret_code': # secret code hash random_string = User.objects.make_random_password(length=4, allowed_chars='abcdefghjkmnpqrstuvwxyz') request.session['corp_hash_random_string'] = random_string secret_code = form.cleaned_data['secret_code'] secret_hash = md5('%s%s' % (secret_code, random_string)).hexdigest() return redirect(reverse('membership.application_details_via_corp_secret_code', args=[app.slug, corporate_membership_id, secret_hash])) return redirect(reverse('membership.application_details', args=[app.slug, corporate_membership_id])) c = {'app': app, "form": form} return render_to_response(template_name, c, context_instance=RequestContext(request))