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))
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))