예제 #1
0
def built_form_sent(request, slug, 
	template="forms_builder/built_form_sent.html"):
	"""
	show the response message
	"""

	return render_to_response(template, {"built_form": 
		get_built_form(request, slug)}, RequestContext(request))
예제 #2
0
def built_form_detail(request, slug, 
	template="forms_builder/built_form_detail.html"):
	"""
	display a built form and handle submission
	"""
	
	built_form = get_built_form(request, slug)

	if request.method == "POST":
		
		built_form_form = get_built_form_form(built_form)(
			request.POST, request.FILES)
		if built_form_form.is_valid():
			
			# add the form and date to the submmission data
			built_form_form.cleaned_data.update({"submission_date": 
				datetime.now(), "built_form_id": built_form.id})
					
			# create the submission and save any files
			attachments = []
			submission = BuiltFormSubmission(**built_form_form.cleaned_data)
			for name, file in built_form_form.files.items():
				filename = default_storage.save("%s/%s" % (UPLOAD_TO, 
					file.name), file)
				setattr(submission, name, filename)
				attachments.append(filename)
			submission.save()

			# send email if specified
			fields = []
			if built_form.send_email and EMAIL_TO:
				for field in submission._meta.fields:
					value = getattr(submission, field.name)
					if value:
						fields.append("%s: %s" % (field.verbose_name, value))
				msg = EmailMessage(submission, "\n".join(fields), 
					submission.email, [EMAIL_TO])
				for attachment in attachments:
					msg.attach_file(join(default_storage.location, attachment))
				msg.send(fail_silently=False)

			return HttpResponseRedirect(reverse("built_form_sent", 
				kwargs={"slug": built_form.slug}))
					
	else:
		
		# pre-populate relevant fields if user is logged in
		initial = {}
		if request.user.is_authenticated():
			initial = {"first_name": request.user.first_name, "last_name": 
				request.user.last_name, "email": request.user.email}
		built_form_form = get_built_form_form(built_form)(initial=initial)
		
	return render_to_response(template, {"built_form": built_form, 
		"built_form_form": built_form_form}, RequestContext(request))