Ejemplo n.º 1
0
def character(request):
	if rpgEngineHelper.getPlayer(request.user) == None:
		return HttpResponseForbidden()
	menu = rpgEngineHelper.getMenuList(request.user)
	rpgEngineHelper.updatePresence(request.user)
	try:
		ch = CharacterSheet.objects.get(player_id__exact=request.user.id)
	except ObjectDoesNotExist :
		#create the character sheet of the user in db
		ch = CharacterSheet()
		ch.player_id = request.user.id
		ch.save()
	if (request.method == 'POST'):
		#character sheet has been modified, extract data and save it
		f = characterForm(request.POST, auto_id=True)
		if f.is_valid():
			ch.busy_with = f.cleaned_data['busy_with']
			ch.location_time = f.cleaned_data['location_time']
			ch.general_carac = f.cleaned_data['general_carac']
			ch.carac_reaction = f.cleaned_data['carac_reaction']
			ch.advantage_disadvantage = f.cleaned_data['advantage_disadvantage']
			ch.skills = f.cleaned_data['skills']
			ch.defense = f.cleaned_data['defense']
			ch.movement = f.cleaned_data['movement']
			ch.dark_corner = f.cleaned_data['dark_corner']
			ch.save()
			#positive ack
			return HttpResponse("ok")
		else:
			#negative ack
			return HttpResponse("nok")
	data = {'busy_with':ch.busy_with,
		'location_time':ch.location_time,
		'general_carac':ch.general_carac,
		'carac_reaction':ch.carac_reaction,
		'advantage_disadvantage':ch.advantage_disadvantage,
		'skills':ch.skills,
		'defense':ch.defense,
		'movement':ch.movement,
		'dark_corner':ch.dark_corner}
	form = characterForm(data, auto_id=True)
	#get last post date
	cursor = connection.cursor()
	query =  "SELECT MAX(date) FROM rpgEngine_message WHERE origId = "+str(request.user.id)
	cursor.execute(query)
	last_post = cursor.fetchone()[0]
	game_id = rpgEngineHelper.getGameId(request.user)
	stickyBox = rpgEngineHelper.getStickyBox(game_id)
	return render_to_response('rpgEngine/characterBase.html', {
		'menu':menu,
		'stickyBox':stickyBox,
		'form':form,
		'first_n':request.user.first_name,
		'last_n':request.user.last_name,
		'char_sheet':ch,
		'last_login':request.user.last_login,
		'last_post':last_post
	}, context_instance=RequestContext(request))
Ejemplo n.º 2
0
def teamPlayerForMaster(request, playerId, editId="-1", formName = "", delId="-1"):
	if (rpgEngineHelper.getMaster(request.user) == None):
		return HttpResponseForbidden()
	u = User.objects.get(id__exact=playerId)
	game_id = rpgEngineHelper.getGameId(request.user)
	#ensure that master is from same game as viewed/edited user
	if game_id != rpgEngineHelper.getGameId(u) :
		return HttpResponseForbidden()
	onLoadAnchor = "";
	if (delId != "-1"):
		#an item is to be deleted
		item = InventoryItem.objects.get(id__exact=delId)
		if not(playerId == str(item.userId)):
			return HttpResponseForbidden()
		#remove item from data base
		item.delete()
		#return HttpResponseRedirect("/team/playerForMaster/"+playerId+"/#inventoryAnch")
		onLoadAnchor = "#inventoryAnch"
	menu = rpgEngineHelper.getMenuList(request.user)
	rpgEngineHelper.updatePresence(request.user)
	cursor = connection.cursor()
	try:
		ch = CharacterSheet.objects.get(player_id__exact=playerId)
	except ObjectDoesNotExist :
		#create the character sheet of the user in db
		ch = CharacterSheet()
		ch.player_id = playerId
		ch.save()
	isErrorCharacter = False
	if (request.method == 'POST'):
		if formName == "character" :
			#character sheet has been modified, extract data and save it
			f = characterForm(request.POST, auto_id=True)
			if f.is_valid():
				ch.busy_with = f.cleaned_data['busy_with']
				ch.location_time = f.cleaned_data['location_time']
				ch.general_carac = f.cleaned_data['general_carac']
				ch.carac_reaction = f.cleaned_data['carac_reaction']
				ch.advantage_disadvantage = f.cleaned_data['advantage_disadvantage']
				ch.skills = f.cleaned_data['skills']
				ch.defense = f.cleaned_data['defense']
				ch.movement = f.cleaned_data['movement']
				ch.dark_corner = f.cleaned_data['dark_corner']
				ch.save()
			else:
				isErrorCharacter = True
	data = {'busy_with':ch.busy_with,
		'location_time':ch.location_time,
		'general_carac':ch.general_carac,
		'carac_reaction':ch.carac_reaction,
		'advantage_disadvantage':ch.advantage_disadvantage,
		'skills':ch.skills,
		'defense':ch.defense,
		'movement':ch.movement,
		'dark_corner':ch.dark_corner}
	form = characterForm(data, auto_id=True)
	#get last post date
	cursor = connection.cursor()
	query =  "SELECT MAX(date) FROM rpgEngine_message WHERE origId = "+str(playerId)
	cursor.execute(query)
	last_post = cursor.fetchone()[0]
	#inventory
	isErrorInventory = False
	formInventory = inventoryForm(auto_id=True)
	if (request.method == 'POST'):
		if formName == "item" :
			#an inventory item has been submited, extract data and post it
			onLoadAnchor = "#inventoryAnch"
			f = inventoryForm(request.POST, auto_id=True)
			if f.is_valid():
				#in cas quantity is not a number, and ??
				try:
					if (f.cleaned_data['isEdit'] != None):
						#an id is passed in hidden field, item is to be updated
						i = InventoryItem.objects.get(id__exact=f.cleaned_data['isEdit'])
						if not(playerId == str(i.userId)):
							return HttpResponseForbidden()
						#to avoid errors in javascript confirm delete name
						i.name = escape(f.cleaned_data['name'])
						i.description = f.cleaned_data['description']
						i.quantity = f.cleaned_data['quantity']
						i.save()
					else:
						#item is to be inserted
						i = InventoryItem()
						i.userId = playerId
						#to avoid errors in javascript confirm delete name
						i.name = escape(f.cleaned_data['name'])
						i.description = f.cleaned_data['description']
						i.quantity = f.cleaned_data['quantity']
						i.save()
				except:
					isErrorInventory = True;
					formInventory = f
			else :
				isErrorInventory = True;
				formInventory = f
	if (editId != "-1"):
		#an item is to be edited, form is filled up with its data, including id in hidden field
		item = InventoryItem.objects.get(id__exact=editId)
		if not(playerId == str(item.userId)):
			return HttpResponseForbidden()
		data = {'name':item.name, 'description':item.description, 'quantity':item.quantity, 'isEdit':editId}
		formInventory = inventoryForm(data, auto_id=True)
		onLoadAnchor = "#inventoryAnch"
	#load the item list
	items = rpgEngineHelper.getInventoryItems(u, "-1")
	pageSelect = rpgEngineHelper.getSelectPageTeam(request.user, game_id, playerId)
	stickyBox = rpgEngineHelper.getStickyBox(game_id)
	return render_to_response('rpgEngine/team_player_for_master.html', {
		'menu':menu,
		'stickyBox':stickyBox,
		'pageSelect':pageSelect,
		'form':form,
		'first_n':u.first_name,
		'last_n':u.last_name,
		'char_sheet':ch,
		'last_login':u.last_login,
		'last_post':last_post,
		'isErrorCharacter':isErrorCharacter,
		#inventory
		'items':items,
		'formInventory':formInventory,
		'isErrorInventory':isErrorInventory,
		'onLoadAnchor':onLoadAnchor,
	}, context_instance=RequestContext(request))