Advertisement
tdowgiel

Untitled

Oct 13th, 2016
174
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 6.08 KB | None | 0 0
  1. from django.shortcuts import render, render_to_response, RequestContext
  2. from django.http import HttpResponse,  HttpResponseRedirect
  3. from django.template import loader, Context
  4. from django.contrib import auth
  5. from django.template.context_processors import csrf
  6. from django.contrib.auth.decorators import login_required
  7. from xp_profile.models import User, Task, Skill, Profession, Quest
  8.  
  9. from django.core import serializers
  10. import sys
  11. import datetime
  12.  
  13. from django.forms.models import model_to_dict
  14. import json
  15.  
  16.  
  17. import time
  18.  
  19. def timeit(method):
  20.     def timed(*args, **kw):
  21.         ts = time.time()
  22.         result = method(*args, **kw)
  23.         te = time.time()
  24.  
  25.         print('%r (%r, %r) %2.2f sec' % \
  26.               (method.__name__, args, kw, te-ts))
  27.         return result
  28.     return timed
  29.  
  30.  
  31. def home_view(request):
  32.     print("home view")
  33.     return render(request,'home.html')
  34.  
  35.  
  36. def start_view(request):
  37.     print("start")
  38.     return render(request, 'start.html')
  39.  
  40. @timeit
  41. @login_required
  42. def profile(request):
  43.  
  44.     professions = Profession.objects.filter(user=request.user.id)
  45.     user_xp, skills_xp = calculate_user_xp(request)
  46.  
  47.     out = []
  48.     for pro in professions:
  49.         profession_xp = 0
  50.         skills_out = []
  51.         skills = Skill.objects.filter(profession=pro.id)
  52.         for skill in skills:
  53.             if skill.name in skills_xp:
  54.                 skills_out.append([skill.name, skills_xp[skill.name]])
  55.                 profession_xp += skills_xp[skill.name]
  56.         out.append([pro, skills_out, profession_xp])
  57.  
  58.     template_name = 'portfolio.html'
  59.     contex = { 'user_xp' :user_xp, 'out': out }
  60.  
  61.  
  62.     return render(request,template_name, contex)
  63.  
  64.  
  65.  
  66. def login_view(request):
  67.     c = {}
  68.     c.update(csrf(request))
  69.     template_name = 'registration/login.html'
  70.     t = loader.get_template(template_name)
  71.     if request.method == 'POST':
  72.         print('POST')
  73.         username = request.POST.get('username', '')
  74.         password = request.POST.get('password', '')
  75.         user = auth.authenticate(username=username, password=password)
  76.         if user is not None and user.is_active:
  77.             # Correct password, and the user is marked "active"
  78.             auth.login(request, user)
  79.             # Redirect to a success page.
  80.             return HttpResponseRedirect("/profil")
  81.         else:
  82.             # Show an error page
  83.             return HttpResponseRedirect("/account/invalid/")
  84.     else:
  85.         return render_to_response(template_name, c)
  86.  
  87.  
  88. def calculate_user_xp(request):
  89.     print('calculate', request.user.is_authenticated())
  90.     if request.user.is_authenticated():
  91.         tasks = Task.objects.filter(user=request.user.id)
  92.  
  93.         sum = 0
  94.         skills = {}
  95.         for this_task in tasks:
  96.             #print(this_task.name, 'task')
  97.             if this_task.is_endpoint_task:
  98.                 xp = this_task.calculate_xp()
  99.                 sum += xp['total_xp']
  100.  
  101.                 if xp['skill1_name'] in skills:
  102.                     skills[xp['skill1_name']] += xp['skill1_xp']
  103.                 else:
  104.                     skills[xp['skill1_name']] = 0
  105.                 if xp['skill2_name'] in skills:
  106.                     skills[xp['skill2_name']] += xp['skill2_xp']
  107.                 else:
  108.                     skills[xp['skill1_name']] = 0
  109.                 if xp['skill3_name'] in skills:
  110.                     skills[xp['skill3_name']] += xp['skill3_xp']
  111.                 else:
  112.                     skills[xp['skill3_name']] = 0
  113.  
  114.         return sum, skills
  115.  
  116.     else:
  117.         return False
  118.  
  119.  
  120.  
  121. def login(request):
  122.     username = request.POST.get('username', '')
  123.     password = request.POST.get('password', '')
  124.     user = auth.authenticate(username=username, password=password)
  125.     if user is not None and user.is_active:
  126.         # Correct password, and the user is marked "active"
  127.         auth.login(request, user)
  128.         # Redirect to a success page.
  129.         return HttpResponseRedirect("profil")
  130.     else:
  131.         # Show an error page
  132.         return HttpResponseRedirect("/account/invalid/")
  133.  
  134.  
  135. def logout_view(request):
  136.     auth.logout(request)
  137.     # Redirect to a success page.
  138.     return render(request,'logedout.html')
  139.  
  140.  
  141.  
  142. def get_questsJSON(request):
  143.     if not request.user.is_authenticated():
  144.         return HttpResponse(json.dumps({'status': 'Not authenticated'}))
  145.  
  146.     quests = Quest.objects.filter(user=request.user).order_by('-last_modified')
  147.     out = []
  148.     for q in quests:
  149.         # print(q.name)
  150.         out.append(model_to_dict(q))
  151.  
  152.     return HttpResponse(
  153.             json.dumps(out),
  154.             content_type="application/json" )
  155.  
  156.  
  157. def get_tasksJSON(request):
  158.     if not request.user.is_authenticated():
  159.         return HttpResponse(json.dumps({'status': 'Not authenticated'}))
  160.     out = []
  161.  
  162.     quest = Quest.objects.get(id=request.POST['questid'])
  163.     quest.update_mod()
  164.     quest.save()
  165.  
  166.  
  167.     tasks = Task.objects.filter(quest=request.POST['questid'], user=request.user.id, level=0)
  168.  
  169.     for task in tasks:
  170.         print(task.name, 'parent')
  171.         sub1 = Task.objects.filter(quest=request.POST['questid'], level=1, parent_task=task.id)
  172.         for s1 in sub1:
  173.             print(s1.name,'child1')
  174.             sub2 = Task.objects.filter(quest=request.POST['questid'], level=2, parent_task=s1.id)
  175.             for s2 in sub2:
  176.                 print(s2.name, 'child2')
  177.                 sub3 = Task.objects.filter(quest=request.POST['questid'], level=3, parent_task=s2.id)
  178.                 for s3 in sub3:
  179.                     print(s3.name, 'child3')
  180.  
  181.  
  182.     for task in tasks:
  183.         print(task.name, 'parent2')
  184.         childs = task.get_child_tasks()
  185.         print(childs)
  186.  
  187.  
  188.  
  189.  
  190.  
  191.     return HttpResponse(
  192.             json.dumps(out),
  193.             content_type="application/json" )
  194.  
  195.  
  196. def create_quest(request):
  197.     print('create quest')
  198.     if not request.user.is_authenticated():
  199.         return HttpResponse(json.dumps({'status': 'Not authenticated'}))
  200.  
  201.     q = Quest(name=request.POST['qname'], description=request.POST['qdesc'],user=request.user)
  202.     q.save()
  203.  
  204.     return HttpResponse(status=304)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement