Beispiel #1
0
def manage_reward(request, key):
	form = None
	riddle_form = None
	condition_form = None
	
	try:
		#loading existing reward
		reward = Reward.objects.get(key=key)
	except Reward.DoesNotExist:
		#creating new reward, initialize variables
		reward = Reward()
		reward.key = key
	
	riddle = reward.riddle_set.all()
	if riddle.count() == 0:
		riddle = Riddle()
	else:
		riddle = riddle[0]
	
	condition = reward.condition_set.all()
	if condition.count() == 0:
		condition = Condition()
	else:
		condition = condition[0]

	if request.method == 'POST':
		form = RewardManageForm(instance=reward, data=request.POST)
		if form.is_valid():
			reward = form.save()
			blob_infos = get_blobinfo_from_post(request)
			for blob_info in blob_infos:
				#print "blobkey: " + str(blob_info.key())
				image = Image()
				image.blob_key = str(blob_info.key())
				image.reward = reward
				image.save()
		riddle.reward = reward
		riddle_form = RiddleManageForm(instance=riddle, data=request.POST) 
		if riddle_form.is_valid():
			riddle_form.save()
		condition.reward = reward
		condition_form = ConditionManageForm(instance=condition, data=request.POST) 
		if condition_form.is_valid():
			condition_form.save()
		
	images = list(reward.image_set.all())
	images.append(Image())
	
	if form is None:
		form = RewardManageForm(instance=reward)
	
	image_forms = []
	for image in images:
		image_forms.append(ImageManageForm(instance=image))
	
	if riddle_form is None:
		riddle_form = RiddleManageForm(instance=riddle)
	
	if condition_form is None:
		condition_form = ConditionManageForm(instance=condition)

	url = reverse('manage_reward', kwargs={'key': key})
	upload_url = blobstore.create_upload_url(url)

	return render_to_response('reward/manage.html', {'upload_url': upload_url, 'form': form, 'reward': reward, 'image_forms':image_forms, 'riddle_form':riddle_form, 'condition_form':condition_form }, context_instance=RequestContext(request))