digitaleagentur/orga/views.py

172 lines
4.9 KiB
Python

from django.shortcuts import render
from django.contrib.auth.decorators import login_required
from django.contrib.auth.models import User
from areas.models import Areas
from users.priomodel import Prio
from tasks.models import Tasks
from users.models import AgencyJob
import webcolors
from standards.models import Standards
@login_required
def mainorga(request):
agencyuser = list(User.objects.filter(profile__agency__pk=request.user.profile.agency.pk).filter(profile__visible=True).order_by('-id'))
nonvisibleuser = list(User.objects.filter(profile__agency__pk=request.user.profile.agency.pk).filter(profile__visible=False).order_by('-id'))
invisible_users = 0;
# Check, if parented users are invisible. Remove them and give user an info!
for ele in nonvisibleuser:
for vis in agencyuser:
try:
if vis.profile.parent.profile.pk == ele.pk:
agencyuser.remove(vis)
invisible_users += 1
except:
pass
agjobs = AgencyJob.objects.filter(agency=request.user.profile.agency)
context = {
'active_link' : 'orga',
'agencyuser' : agencyuser,
'invisible_users' : invisible_users
}
return render(request, 'orga/orga_main.html', context)
@login_required
def singleorga(request, pk):
user = User.objects.get(pk=pk, profile__agency=request.user.profile.agency)
'''
VON GROß NACH KLEIN - SINNLOS
prios = Prio.objects.filter(user__pk=pk).order_by('-prio')[::-1]
'''
'''
Wenn eingelogger Nutzer nicht die gleiche Agency-ID hat,
gehts zum Dashboard
'''
if(user.profile.agency.pk==request.user.profile.agency.pk):
prios = Prio.objects.filter(user__pk=pk).order_by('prio')
areas = list(Areas.objects.filter(agency__pk=request.user.profile.agency.pk).order_by('areaorder'))
alltasks = Tasks.objects.filter(agency__pk=request.user.profile.agency.pk).order_by('name')
'''
Hier werden die Tasks entsprechend ihrer Prio gespeichert, anschließend werden noch die übrigen Tasks übertragen, die noch keinen Prio-Eintrag haben. Diese haben 0 und landen dementsprechend hinten.
'''
tasks = []
for p in prios:
tasks.append(p.task)
for at in alltasks:
if at not in tasks:
tasks.append(at)
i = 0
for area in areas:
areas[i].hex = areas[i].color
areas[i].color = list(webcolors.hex_to_rgb(areas[i].color))
i += 1
user_first_name = user.first_name
user_last_name = user.last_name
user_id = user.pk
try:
userfuncname = AgencyJob.objects.get(pk=user.profile.func.pk).name
except:
userfuncname = "Nicht vergeben"
context = {
'active_link' : 'orga',
'areas' : areas,
'user_first_name' : user_first_name,
'user_last_name' : user_last_name,
'user_id' : user_id,
'prios' : prios,
'phone_public' : user.profile.phone_public,
'mail' : user.email,
'userfunc' : userfuncname,
'imageurl' : user.profile.get_photo_url,
'compfunc' : user.profile.compfunc,
'phoneland' : user.profile.phoneland,
'tasks' : tasks,
'phonemobile' : user.profile.phonemobile
}
return render(request, 'orga/orga_single.html', context)
else:
return redirect('users-dashboard')
@login_required
def OrgaSingleAjax(request):
data = {}
if request.method == "GET":
if request.GET["action"] == "getrenderedview":
#try:
viewmode = int(request.GET["viewmode"])
viewuser = User.objects.get(pk=request.GET["viewuser"])
prios = Prio.objects.filter(user__pk=viewuser.pk).order_by('prio')
areas = list(Areas.objects.filter(agency__pk=request.user.profile.agency.pk).order_by('areaorder'))
alltasks = Tasks.objects.filter(agency__pk=request.user.profile.agency.pk).order_by('name')
tasks = []
for p in prios:
tasks.append(p.task)
for at in alltasks:
if at not in tasks:
tasks.append(at)
i = 0
for area in areas:
areas[i].hex = areas[i].color
areas[i].color = list(webcolors.hex_to_rgb(areas[i].color))
i += 1
user_first_name = viewuser.first_name
user_last_name = viewuser.last_name
user_id = viewuser.pk
try:
userfuncname = AgencyJob.objects.get(pk=viewuser.profile.func.pk).name
except:
userfuncname = "Nicht vergeben"
if(viewuser.profile.agency == request.user.profile.agency):
context = {
"user_first_name" : viewuser.first_name,
"user_last_name" : viewuser.last_name,
'areas' : areas,
'user_first_name' : user_first_name,
'user_last_name' : user_last_name,
'user_id' : user_id,
'prios' : prios,
'tasks' : tasks
}
# EX
if(viewmode == 0):
return render(request, "orga/orga_single_ex.html", context)
# AUT
elif(viewmode == 1):
return render(request, "orga/orga_single_aut.html", context)
# REP
elif(viewmode == 2):
return render(request, "orga/orga_single_rep.html", context)
#except:
# return render(request, "orga/orga_single_er.html")
else:
return render(request, "orga/orga_single_er.html")
else:
data = {
"success" : False
}
return JsonResponse(data)