Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from django.shortcuts import render
- from django.http import HttpResponseRedirect, HttpResponse, JsonResponse
- from django.core.mail import send_mail
- from django.conf import settings
- from .models import Setting,person_external_ca_status,gate,groupGate,group,workerGroup,employee,testResult
- from .models2 import Log
- from django.shortcuts import render_to_response
- from django.template import RequestContext
- from django.db import connection
- from django.contrib.auth.models import User
- from django.utils import timezone
- from django.utils.timezone import activate
- from django.core import serializers
- from .forms import gateAndGroups,gateForm,testForm,groupForm,groupRemoveForm,editAssignationForm,workerAssignationForm
- import datetime
- import json
- import smtplib
- import string
- import random
- #from __future__ import unicode_literals
- from os import getenv
- import sys
- reload(sys)
- sys.setdefaultencoding('utf-8')
- import pymssql
- import decimal
- def groups(request):
- if request.method == "POST":
- if 'createGroup' in request.POST:
- MyLoginForm = groupForm(request.POST)
- if MyLoginForm.is_valid():
- groupInstance = group()
- groupInstance.groupID = int(MyLoginForm.cleaned_data['groupCreateID'])
- groupInstance.groupName = str(MyLoginForm.cleaned_data['groupCreateName'])
- groupInstance.save()
- elif 'removeGroup' in request.POST:
- MyLoginForm = groupRemoveForm(request.POST)
- if MyLoginForm.is_valid():
- test = group.objects.filter(groupID=MyLoginForm.cleaned_data['groupRemoveID'])
- test.delete()
- elif 'editGroup' in request.POST:
- MyLoginForm = editAssignationForm(request.POST)
- if MyLoginForm.is_valid():
- objectsToDelete = groupGate.objects.filter(group=group.objects.get(id=MyLoginForm.cleaned_data['realID']))
- objectsToDelete.delete()
- groupsList = MyLoginForm.cleaned_data['editGroup'].split(',')
- for groupToCreate in groupsList:
- groupInstance = groupGate()
- groupInstance.group = group.objects.get(id=MyLoginForm.cleaned_data['realID'])
- groupInstance.gate = gate.objects.get(id=groupToCreate)
- groupInstance.save()
- json_serializer = serializers.get_serializer("json")()
- groupsAssignment = json_serializer.serialize(groupGate.objects.all(), ensure_ascii=False)
- gates = json_serializer.serialize(gate.objects.all().order_by('gateID'), ensure_ascii=False)
- groups = json_serializer.serialize(group.objects.all().order_by('groupID'), ensure_ascii=False)
- return render(request, "groups.html", {'groupsAssignment':groupsAssignment,"gates":gates,"groups":groups})
- def gates(request):
- if request.method == "POST":
- if 'gateID_' in request.POST:
- MyLoginForm = gateAndGroups(request.POST)
- if MyLoginForm.is_valid():
- groupGateInstance = groupGate()
- temporaryGate = gate.objects.get(id=MyLoginForm.cleaned_data['gateID'])
- temporaryGroup = group.objects.get(id=MyLoginForm.cleaned_data['groupID'])
- groupGateInstance.gate = temporaryGate
- groupGateInstance.group = temporaryGroup
- groupGateInstance.save()
- elif 'createGate' in request.POST:
- MyLoginForm = gateForm(request.POST)
- if MyLoginForm.is_valid():
- gateInstance = gate()
- gateInstance.gateID = int(MyLoginForm.cleaned_data['gateCreateID'])
- gateInstance.description = str(MyLoginForm.cleaned_data['gateCreateDescription'])
- gateInstance.save()
- elif 'removeGate' in request.POST:
- MyLoginForm = testForm(request.POST)
- if MyLoginForm.is_valid():
- test = gate.objects.filter(gateID=MyLoginForm.cleaned_data['gateRemoveID'])
- test.delete()
- gates = gate.objects.all().order_by('gateID')
- #groups = groupGate.objects.all().order_by('id')
- #groupxd = group.objects.all().order_by('id')
- #return render(request, "gates.html", {"gates":gates,"groups":groups,"groupxd":groupxd})
- return render(request, "gates.html", {"gates":gates})
- def people(request):
- if request.method == "POST":
- if 'assignGroup' in request.POST:
- MyLoginForm = workerAssignationForm(request.POST)
- if MyLoginForm.is_valid():
- objectsToDelete = workerGroup.objects.filter(worker=employee.objects.get(id=MyLoginForm.cleaned_data['realWorkerID']))
- objectsToDelete.delete()
- connectionsList = MyLoginForm.cleaned_data['assignGroup'].split(',')
- for connectionToCreate in connectionsList:
- connectionInstance = workerGroup()
- connectionInstance.worker = employee.objects.get(id=MyLoginForm.cleaned_data['realWorkerID'])
- connectionInstance.group = group.objects.get(id=connectionToCreate)
- connectionInstance.save()
- json_serializer = serializers.get_serializer("json")()
- worker = json_serializer.serialize(workerGroup.objects.all(), ensure_ascii=False)
- groups = json_serializer.serialize(group.objects.all(), ensure_ascii=False)
- peoples = json_serializer.serialize(employee.objects.all(), ensure_ascii=False)
- return render(request, "people.html", {'groups':groups,'worker':worker,'peoples':peoples})
- def show_grid(request):
- return render_to_response('show_grid.html',{},context_instance=RequestContext(request))
- def get_data(request):
- if 'posStart' in request.GET:
- offset = request.GET["posStart"]
- quantity = request.GET["count"]
- else:
- offset = 0
- quantity = 2000
- data = employee.objects.all()[offset:offset+quantity]
- total = employee.objects.all().count()
- worker = workerGroup.objects.all()
- return render_to_response ("get_data.xml", {'data':data,'worker':worker, 'total':total, 'pos':offset}, content_type='type/xml', context_instance=RequestContext(request))
- def getGates(request):
- data = gate.objects.all().order_by('gateID')
- groups = groupGate.objects.all()
- return render_to_response ("getGates.xml", {'data':data,'groups':groups}, content_type='type/xml', context_instance=RequestContext(request))
- def getGroups(request):
- xdata = group.objects.all().order_by('groupID')
- return render_to_response ("getGroups.xml", {'xdata':xdata}, content_type='type/xml', context_instance=RequestContext(request))
- def updateGates(request):
- test = gate.objects.get(id=request.GET['c2'])
- test.gateID = request.GET['c0']
- test.description = request.GET['c1']
- test.save()
- def updateGroups(request):
- try:
- test = group.objects.get(id=request.GET['c2'])
- test.groupID = request.GET['c0']
- test.groupName = request.GET['c1']
- test.save()
- except:
- return render_to_response(
- 'update_data_error.xml',
- {},
- mimetype='text/xml', context_instance=RequestContext(request))
- else:
- return render_to_response(
- 'update_data.xml',
- {'id': rid},
- mimetype='text/xml', context_instance=RequestContext(request))(request.GET['c1'])
- def update_data(request):
- print('hello')
- def admin_change_password(request):
- if request.method == "POST":
- mail = request.POST.get("mail")
- name = str(request.user)
- record = User.objects.get(username=name)
- record.email = mail
- record.save()
- return render(request, "admin_change_password.html", {"mail":mail})
- else:
- name = str(request.user)
- record = User.objects.get(username=name)
- mail = record.email
- return render_to_response ("admin_change_password.html", {"mail":mail}, context_instance=RequestContext(request))
- def get_data_admin(request):
- if 'posStart' in request.GET:
- offset = request.GET["posStart"]
- quantity = request.GET["count"]
- else:
- offset = 0
- quantity = 20
- data = User.objects.exclude(username = "admin").exclude(username = "root")[offset:offset+quantity]
- total = User.objects.all().count()
- return render_to_response ("get_data_admin.xml", {'data':data, 'total':total, 'pos':offset}, content_type='type/xml', context_instance=RequestContext(request))
- def update_data_admin(request):
- global massage
- global whom
- try:
- rid = request.GET['gr_id']
- try:
- if request.GET['!nativeeditor_status'] == "deleted":
- #print('1')
- r = User.objects.get(id=request.GET['gr_id'])
- #print('2')
- date = datetime.datetime.now()
- #print('3')
- my_datetime = timezone.make_aware(date, timezone.get_current_timezone())
- #print('4')
- name = str(request.user)
- massage = "Deleted user with ID %s" % request.GET['gr_id']
- #print('5')
- recordToLog = Log(User_Name=name, Date_event=my_datetime, Whom=request.GET['gr_id'], Massage=massage)
- #print('6')
- recordToLog.save()
- re = User.objects.filter(id=request.GET['gr_id'])
- re.delete()
- else:
- #print "w try"
- r = User.objects.get(id=rid)
- #print "w try1"
- r.username = request.GET['c0']
- #print "w try2"
- whom = r.username
- #print "w try3"
- r.set_password(request.GET['c1'])
- #print "w try4"
- if r.email != request.GET['c2']:
- massage = "Email set: from %s to %s " % (r.email, request.GET['c2'])
- else:
- massage = "Password was changed"
- r.email = request.GET['c2']
- r.save()
- name = str(request.user)
- date = datetime.datetime.now()
- #print "w try5"
- my_datetime = timezone.make_aware(date, timezone.get_current_timezone())
- recordToLog = Log(User_Name=name, Date_event=my_datetime, Whom=whom, Massage=massage)
- recordToLog.save()
- except:
- #print "w else"
- date = datetime.datetime.now()
- my_datetime = timezone.make_aware(date, timezone.get_current_timezone())
- name = str(request.user)
- massage = "Add new user %s" % request.GET['c0']
- #print str(massage)
- recordToLog = Log(User_Name=name, Date_event=my_datetime, Whom=request.GET['c0'], Massage=massage)
- recordToLog.save()
- AddnewRecord = User(password = request.GET['c1'], last_login = my_datetime, is_superuser = False,
- username = request.GET['c0'], first_name = "", last_name = "", email = request.GET['c2'],
- is_staff = False, is_active = True, date_joined = my_datetime)
- AddnewRecord.save()
- except:
- return render_to_response(
- 'update_data_error.xml',
- {},
- content_type='text/xml',
- context_instance=RequestContext(request))
- else:
- #print "update"
- return render_to_response(
- 'update_data.xml',
- {'id': rid},
- content_type='text/xml',
- context_instance=RequestContext(request))
- def raporty(request):
- print('hello')
- #####################################
- def zmiana(request):
- global data
- global num
- if request.method == "POST":
- data = request.POST.get("data")
- num = int(request.POST.get("num"))
- print "poluczeno"
- print ":"+str(data)+":"
- print ":"+str(num)+":"
- connRTS = pymssql.connect(server='192.168.0.5', user='sa', password='red3fred4', database='KDSoftware')
- cursor = connRTS.cursor()
- sql = "INSERT INTO t_person_external_ca_status1 VALUES ('%s', '%s')" % (num, data)
- print str(sql)
- cursor.execute(sql)
- connRTS.commit()
- return render(request, "raporty.html", {})
- ###########################################
- def saveTestResult(data):
- print("DEBUG: Adding report - ID: "+data['ID_']+" Result: "+data['result'])
- employeerz = employee.objects.get(badge=data['ID_'])
- actualTime = datetime.datetime.now()
- timeFinish = actualTime + datetime.timedelta(minutes = int(employeerz.accessTime))
- newRecord = testResult(employeer = employeerz, timeStamp = actualTime, timeValid = timeFinish, result = bool(data['result']), leftLeg = data['leftLeg'], rightLeg = data['rightLeg'], wrist = data['wrist'])
- newRecord.save()
- return {'ex':'session'}
- def checkEmployeeIsset(badge):
- try:
- result = employee.objects.get(badge=badge)
- print("DEBUG: Employee found")
- except:
- print("DEBUG: Employee not found")
- return False
- return True
- def checkEmployee(data):
- returnValue = {"ex":"session"}
- if checkEmployeeIsset(data['ID']):
- returnValue["isset"] = "OK"
- else:
- #createNewEmployee(data['ID']) to bedzie gdzies dalej
- returnValue["isset"] = "NO"
- if checkEmployeeGroup(data['ID'],data['gateID']) : returnValue["group"] = "OK"
- else : returnValue["group"] = "NO"
- if checkEmployeeTime(data['ID']) : returnValue["time"] = "OK"
- else : returnValue["time"] = "NO"
- return returnValue
- def checkEmployeeRequirements(data):
- employeeRequirements = employee.objects.get(badge=data['ID_'])
- returnValue = {'ex':'session'}
- if employeeRequirements.leftLeg : returnValue['leftLeg'] = 'Y'
- if employeeRequirements.rightLeg: returnValue['rightLeg'] = 'Y'
- if employeeRequirements.wrist : returnValue['wrist'] = 'Y'
- print("DEBUG: Checking employee requirements : "+str(returnValue))
- return returnValue
- def checkEmployeeGroup(badge,gateID):
- groupCheck = ''
- getGate = gate.objects.get(gateID=gateID)
- getWorker = employee.objects.get(badge=badge)
- availableGroups = groupGate.objects.filter(gate=getGate)
- for _group in availableGroups:
- if(groupCheck == ''):
- try:
- groupCheck = workerGroup.objects.get(group=_group.group,worker=getWorker).group
- except:groupCheck = ''
- if groupCheck == '':
- print("DEBUG: Employee has no access to this gate")
- return False
- else:
- print("DEBUG: Employee have access to this gate")
- return True
- def createNewEmployee(badge):
- AddnewRecord = employee(badge = badge, name = "unknown", lName= "unknown", leftLeg = True, rightLeg = True, wrist = False, accessTime = 30)
- AddnewRecord.save()
- print("DEBUG: Created new employee")
- def checkEmployeeTime(badge):
- result = checkLastTest(badge)
- if result:
- if not getTimeFromLastReport(result):
- print("DEBUG: Test is required")
- return False
- else:
- print("DEBUG: Test is required")
- return False
- return True
- def getTimeFromLastReport(lastReport):
- print('DEBUG: Checking access time from last report')
- a = lastReport.timeValid + datetime.timedelta(minutes = 120)
- b = datetime.datetime.now()
- if a.date() >= b.date() and a.time() >= b.time(): return True
- else : return False
- def checkLastTest(badge):
- try:
- _employee = employee.objects.get(badge=badge)
- result = testResult.objects.order_by('-timeValid').get(employeer=_employee)
- print("DEBUG: Found last test")
- return result
- except:
- print("DEBUG: Last test not found")
- return False
- def connect(request):
- if request.method == "GET":
- requestType = request.GET
- if 'watchDog' in requestType:
- return HttpResponse(json.dumps({"info" : str(request.get_host())}), content_type='application/json')
- if 'wrist' in requestType:
- return HttpResponse(json.dumps(saveTestResult(request.GET)), content_type='application/json')
- if 'ID' in requestType:
- return HttpResponse(json.dumps(checkEmployee(request.GET)), content_type='application/json')
- if 'requirement' in requestType:
- return HttpResponse(json.dumps(checkEmployeeRequirements(request.GET)), content_type='application/json')
- def settinds(request):
- mySet = Setting.objects.get()
- host = mySet.Host
- port = mySet.Port
- username = mySet.Username
- password = mySet.Password
- ssl_tls = mySet.UseSSL
- on_off = mySet.ModeUnknown
- #Str_random = id_generation()
- #print "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
- #print "STR_RANDOM " + str(Str_random)
- #ID_unknown = "unknown_" + str(Str_random)
- #print "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
- #print "STR_RANDOM " + str(ID_unknown)
- SMTP = {
- "Host" : host,
- "Port" : port,
- "Username" : username,
- "Password" : password,
- "ssl" : ssl_tls,
- "on" : on_off
- }
- return render(request, "settings.html", SMTP)
- #funkcja do generowania id
- def id_generation(size=9, chars=string.digits):
- return ''.join(random.choice(chars) for _ in range(size))
- def settingss(request):
- global SMTP
- if request.method == "POST":
- name = str(request.user)
- date = datetime.datetime.now()
- my_datetime = timezone.make_aware(date, timezone.get_current_timezone())
- massage = ""
- mySet = Setting.objects.get()
- if mySet.Host != request.POST.get("host"):
- massage = "Host set: from %s to %s" % (mySet.Host, request.POST.get("host"))
- mySet.Host = request.POST.get("host")
- if mySet.Port != int(request.POST.get("port")):
- massage = "Port set: from %s to %s" % (mySet.Port, request.POST.get("port"))
- mySet.Port = int(request.POST.get("port"))
- if mySet.Username != request.POST.get("username"):
- massage = "Username set: from %s to %s" % (mySet.Username, request.POST.get("username"))
- mySet.Username = request.POST.get("username")
- if mySet.Password != request.POST.get("password"):
- massage = "Password set: from %s to %s" % (mySet.Password, request.POST.get("password"))
- mySet.Password = request.POST.get("password")
- ssl_tls = request.POST.get("ssl_tls")
- #print ":"+str(ssl_tls)+":"
- ssl = True
- tls = False
- if ssl_tls=="ssl":
- ssl = True
- tls = False
- massage = "SSL set: %s " % ssl
- else:
- ssl = False
- tls = True
- massage = "TLS set: %s" % tls
- mySet.UseSSL = ssl
- mySet.UseTTL = tls
- on_off = request.POST.get("on_off")
- on = True
- off = False
- if on_off=="on":
- mode = True
- massage = "Mode Unkown set: %s " % on
- else:
- mode = False
- massage = "Mode Unkown set: %s " % off
- mySet.ModeUnknown = mode
- SMTP = {
- "Host" : mySet.Host,
- "Port" : mySet.Port,
- "Username" : mySet.Username,
- "Password" : mySet.Password,
- "ssl" : mySet.UseSSL,
- "on" : mySet.ModeUnknown
- }
- EMAIL_HOST_USER = mySet.Host
- mySet.save()
- #print "massage"
- #print ":"+str(massage)+":"
- if massage != "":
- recordToLog = Log(User_Name=name, Date_event=my_datetime, Whom="SMTP", Massage=massage)
- recordToLog.save()
- return render(request, "settings.html", SMTP)
- def now():
- if settings.USE_TZ:
- return datetame.utc().replace(tzinfo=utc)
- else:
- return datetime.now()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement