Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from django.shortcuts import render, render_to_response, RequestContext
- from django.http import HttpResponse, HttpResponseRedirect
- from django.template import loader, Context
- from django.contrib import auth
- from django.template.context_processors import csrf
- from django.contrib.auth.decorators import login_required
- from xp_profile.models import User, Task, Skill, Profession, Quest
- from django.core import serializers
- import sys
- import datetime
- from django.forms.models import model_to_dict
- import json
- import time
- def timeit(method):
- def timed(*args, **kw):
- ts = time.time()
- result = method(*args, **kw)
- te = time.time()
- print('%r (%r, %r) %2.2f sec' % \
- (method.__name__, args, kw, te-ts))
- return result
- return timed
- def home_view(request):
- print("home view")
- return render(request,'home.html')
- def start_view(request):
- print("start")
- return render(request, 'start.html')
- @timeit
- @login_required
- def profile(request):
- professions = Profession.objects.filter(user=request.user.id)
- user_xp, skills_xp = calculate_user_xp(request)
- out = []
- for pro in professions:
- profession_xp = 0
- skills_out = []
- skills = Skill.objects.filter(profession=pro.id)
- for skill in skills:
- if skill.name in skills_xp:
- skills_out.append([skill.name, skills_xp[skill.name]])
- profession_xp += skills_xp[skill.name]
- out.append([pro, skills_out, profession_xp])
- template_name = 'portfolio.html'
- contex = { 'user_xp' :user_xp, 'out': out }
- return render(request,template_name, contex)
- def login_view(request):
- c = {}
- c.update(csrf(request))
- template_name = 'registration/login.html'
- t = loader.get_template(template_name)
- if request.method == 'POST':
- print('POST')
- username = request.POST.get('username', '')
- password = request.POST.get('password', '')
- user = auth.authenticate(username=username, password=password)
- if user is not None and user.is_active:
- # Correct password, and the user is marked "active"
- auth.login(request, user)
- # Redirect to a success page.
- return HttpResponseRedirect("/profil")
- else:
- # Show an error page
- return HttpResponseRedirect("/account/invalid/")
- else:
- return render_to_response(template_name, c)
- def calculate_user_xp(request):
- print('calculate', request.user.is_authenticated())
- if request.user.is_authenticated():
- tasks = Task.objects.filter(user=request.user.id)
- sum = 0
- skills = {}
- for this_task in tasks:
- #print(this_task.name, 'task')
- if this_task.is_endpoint_task:
- xp = this_task.calculate_xp()
- sum += xp['total_xp']
- if xp['skill1_name'] in skills:
- skills[xp['skill1_name']] += xp['skill1_xp']
- else:
- skills[xp['skill1_name']] = 0
- if xp['skill2_name'] in skills:
- skills[xp['skill2_name']] += xp['skill2_xp']
- else:
- skills[xp['skill1_name']] = 0
- if xp['skill3_name'] in skills:
- skills[xp['skill3_name']] += xp['skill3_xp']
- else:
- skills[xp['skill3_name']] = 0
- return sum, skills
- else:
- return False
- def login(request):
- username = request.POST.get('username', '')
- password = request.POST.get('password', '')
- user = auth.authenticate(username=username, password=password)
- if user is not None and user.is_active:
- # Correct password, and the user is marked "active"
- auth.login(request, user)
- # Redirect to a success page.
- return HttpResponseRedirect("profil")
- else:
- # Show an error page
- return HttpResponseRedirect("/account/invalid/")
- def logout_view(request):
- auth.logout(request)
- # Redirect to a success page.
- return render(request,'logedout.html')
- def get_questsJSON(request):
- if not request.user.is_authenticated():
- return HttpResponse(json.dumps({'status': 'Not authenticated'}))
- quests = Quest.objects.filter(user=request.user).order_by('-last_modified')
- out = []
- for q in quests:
- # print(q.name)
- out.append(model_to_dict(q))
- return HttpResponse(
- json.dumps(out),
- content_type="application/json" )
- def get_tasksJSON(request):
- if not request.user.is_authenticated():
- return HttpResponse(json.dumps({'status': 'Not authenticated'}))
- out = []
- quest = Quest.objects.get(id=request.POST['questid'])
- quest.update_mod()
- quest.save()
- tasks = Task.objects.filter(quest=request.POST['questid'], user=request.user.id, level=0)
- for task in tasks:
- print(task.name, 'parent')
- sub1 = Task.objects.filter(quest=request.POST['questid'], level=1, parent_task=task.id)
- for s1 in sub1:
- print(s1.name,'child1')
- sub2 = Task.objects.filter(quest=request.POST['questid'], level=2, parent_task=s1.id)
- for s2 in sub2:
- print(s2.name, 'child2')
- sub3 = Task.objects.filter(quest=request.POST['questid'], level=3, parent_task=s2.id)
- for s3 in sub3:
- print(s3.name, 'child3')
- for task in tasks:
- print(task.name, 'parent2')
- childs = task.get_child_tasks()
- print(childs)
- return HttpResponse(
- json.dumps(out),
- content_type="application/json" )
- def create_quest(request):
- print('create quest')
- if not request.user.is_authenticated():
- return HttpResponse(json.dumps({'status': 'Not authenticated'}))
- q = Quest(name=request.POST['qname'], description=request.POST['qdesc'],user=request.user)
- q.save()
- return HttpResponse(status=304)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement