Beispiel #1
0
def team(request, editId="-1"):
	if (rpgEngineHelper.getPlayer(request.user) == None) and (rpgEngineHelper.getMaster(request.user) == None):
		return HttpResponseForbidden()
	menu = rpgEngineHelper.getMenuList(request.user)
	game_id = rpgEngineHelper.getGameId(request.user)
	iscapForm = None
	isErrorIscap = None
	if rpgEngineHelper.getMaster(request.user) != None:
		#ISCAP
		isErrorIscap = False
		g = Game.objects.get(id__exact=game_id)
		data = {'iscap':g.iscap, }
		iscapForm = IscapForm(data)
	#chest
	isError = False
	form = inventoryForm(auto_id=True)
	if (request.method == 'POST'):
		if u"addItem" in request.POST:
			f = inventoryForm(request.POST, auto_id=True)
			if f.is_valid():
				#an inventory item has been submited, extract data and post it
				#in case 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'])
						master = Master.objects.get(gameId__exact=game_id)
						if not(master.id == i.userId):
							return HttpResponseForbidden()
						#to avoid errors/injection in javascript escape delete name
						i.name = escape(f.cleaned_data['name'])
						i.description = f.cleaned_data['description']
						i.quantity = f.cleaned_data['quantity']
						i.save()
						#redirect to inventory at freshly modified item
						return HttpResponseRedirect("/team/#"+str(f.cleaned_data['isEdit']))
					else:
						#item is to be inserted
						i = InventoryItem()
						master = Master.objects.get(gameId__exact=game_id)
						i.userId = master.id
						#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:
					isError = True;
					form = f
			else :
				isError = True;
				form = f
		if u"iscapSave" in request.POST:
			if (rpgEngineHelper.getMaster(request.user) == None):
				return HttpResponseForbidden()
			f = IscapForm(request.POST)
			if f.is_valid():
				#update ISCAP
				g = Game.objects.get(id__exact=game_id)
				g.iscap = f.cleaned_data['iscap']
				g.save()
				iscapForm = f
			else :
				isErrorIscap = True;
				iscapForm = 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)
		data = {'name':item.name, 'description':item.description, 'quantity':item.quantity, 'isEdit':editId}
		form = inventoryForm(data, auto_id=True)

	#load the item list
	items = rpgEngineHelper.getInventoryItems_team(game_id)
	pageSelect = rpgEngineHelper.getSelectPageTeam(request.user, game_id, -1)
	stickyBox = rpgEngineHelper.getStickyBox(game_id)
	return render_to_response('rpgEngine/team_chest.html', {
		'menu':menu,
		'iscapForm':iscapForm,
		'form':form,
		'items':items,
		'pageSelect':pageSelect,
		'isError':isError,
		'isErrorIscap':isErrorIscap,
		'stickyBox':stickyBox,
	}, context_instance=RequestContext(request))
Beispiel #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))
Beispiel #3
0
def inventory(request, beginAt="0", editId="-1"):
	if (rpgEngineHelper.getPlayer(request.user) == None):
		return HttpResponseForbidden()
	isError = False
	form = inventoryForm(auto_id=True)
	cursor = connection.cursor()
	if (request.method == 'POST'):
		#an inventory item has been submited, extract data and post it
		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(request.user.id == 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()
					#redirect to inventory at freshly modified item
					return HttpResponseRedirect("/inventory/#"+str(f.cleaned_data['isEdit']))
				else:
					#item is to be inserted
					i = InventoryItem()
					i.userId = request.user.id
					#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:
				isError = True;
				form = f
		else :
			isError = True;
			form = 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(request.user.id == item.userId):
			return HttpResponseForbidden()
		data = {'name':item.name, 'description':item.description, 'quantity':item.quantity, 'isEdit':editId}
		form = inventoryForm(data, auto_id=True)
	#get the total number of items
	query = "SELECT count(*) FROM rpgEngine_inventoryitem"+\
				" WHERE userId = "+str(request.user.id)
	cursor.execute(query)
	numOfItems = cursor.fetchone()
	numOfPages = numOfItems[0] / ITEM_PER_PAGE
	if ((numOfPages * ITEM_PER_PAGE) < numOfItems[0]):
		numOfPages += 1
	pageSelector = ["<select onchange=\"window.location.href = this.value\">",]
	selectedPage = int(beginAt) / ITEM_PER_PAGE
	for j in range(0, numOfPages):
		if j == selectedPage:
			pageSelector.append("<option selected='selected' value='/inventory/"+str(j*ITEM_PER_PAGE)+"/'>Page "+str(j+1)+"&nbsp;</option>")
		else:
			pageSelector.append("<option value='/inventory/"+str(j*ITEM_PER_PAGE)+"/'>Page "+str(j+1)+"&nbsp;</option>")
	pageSelector.append("</select>")
	#load the item list
	items = rpgEngineHelper.getInventoryItems(request.user, beginAt)
	#load the menu
	menu = rpgEngineHelper.getMenuList(request.user)
	rpgEngineHelper.updatePresence(request.user)
	gameId = rpgEngineHelper.getGameId(request.user)
	stickyBox = rpgEngineHelper.getStickyBox(gameId)
	return render_to_response('rpgEngine/inventory.html', {
		'menu':menu,
		'items':items,
		'form':form,
		'isError':isError,
		'pageSelect':"".join(pageSelector),
		'beginAt':beginAt,
		'stickyBox':stickyBox,
	}, context_instance=RequestContext(request))