Advertisement
Guest User

Untitled

a guest
Jul 31st, 2017
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 17.83 KB | None | 0 0
  1. from django.shortcuts import render
  2. from django.http import HttpResponseRedirect, HttpResponse, JsonResponse
  3. from django.core.mail import send_mail
  4. from django.conf import settings
  5. from .models import Setting,person_external_ca_status,gate,groupGate,group,workerGroup,employee,testResult
  6. from .models2 import Log
  7. from django.shortcuts import render_to_response
  8. from django.template import RequestContext
  9. from django.db import connection
  10. from django.contrib.auth.models import User
  11. from django.utils import timezone
  12. from django.utils.timezone import activate
  13. from django.core import serializers
  14. from .forms import gateAndGroups,gateForm,testForm,groupForm,groupRemoveForm,editAssignationForm,workerAssignationForm
  15. import datetime
  16. import json
  17. import smtplib
  18. import string
  19. import random
  20. #from __future__ import unicode_literals
  21. from os import getenv
  22. import sys
  23. reload(sys)
  24. sys.setdefaultencoding('utf-8')
  25. import pymssql
  26. import decimal
  27.  
  28. def groups(request):
  29. if request.method == "POST":
  30. if 'createGroup' in request.POST:
  31. MyLoginForm = groupForm(request.POST)
  32. if MyLoginForm.is_valid():
  33. groupInstance = group()
  34. groupInstance.groupID = int(MyLoginForm.cleaned_data['groupCreateID'])
  35. groupInstance.groupName = str(MyLoginForm.cleaned_data['groupCreateName'])
  36. groupInstance.save()
  37. elif 'removeGroup' in request.POST:
  38. MyLoginForm = groupRemoveForm(request.POST)
  39. if MyLoginForm.is_valid():
  40. test = group.objects.filter(groupID=MyLoginForm.cleaned_data['groupRemoveID'])
  41. test.delete()
  42. elif 'editGroup' in request.POST:
  43. MyLoginForm = editAssignationForm(request.POST)
  44. if MyLoginForm.is_valid():
  45. objectsToDelete = groupGate.objects.filter(group=group.objects.get(id=MyLoginForm.cleaned_data['realID']))
  46. objectsToDelete.delete()
  47. groupsList = MyLoginForm.cleaned_data['editGroup'].split(',')
  48. for groupToCreate in groupsList:
  49. groupInstance = groupGate()
  50. groupInstance.group = group.objects.get(id=MyLoginForm.cleaned_data['realID'])
  51. groupInstance.gate = gate.objects.get(id=groupToCreate)
  52. groupInstance.save()
  53.  
  54. json_serializer = serializers.get_serializer("json")()
  55. groupsAssignment = json_serializer.serialize(groupGate.objects.all(), ensure_ascii=False)
  56. gates = json_serializer.serialize(gate.objects.all().order_by('gateID'), ensure_ascii=False)
  57. groups = json_serializer.serialize(group.objects.all().order_by('groupID'), ensure_ascii=False)
  58. return render(request, "groups.html", {'groupsAssignment':groupsAssignment,"gates":gates,"groups":groups})
  59.  
  60. def gates(request):
  61. if request.method == "POST":
  62. if 'gateID_' in request.POST:
  63. MyLoginForm = gateAndGroups(request.POST)
  64. if MyLoginForm.is_valid():
  65. groupGateInstance = groupGate()
  66. temporaryGate = gate.objects.get(id=MyLoginForm.cleaned_data['gateID'])
  67. temporaryGroup = group.objects.get(id=MyLoginForm.cleaned_data['groupID'])
  68. groupGateInstance.gate = temporaryGate
  69. groupGateInstance.group = temporaryGroup
  70. groupGateInstance.save()
  71. elif 'createGate' in request.POST:
  72. MyLoginForm = gateForm(request.POST)
  73. if MyLoginForm.is_valid():
  74. gateInstance = gate()
  75. gateInstance.gateID = int(MyLoginForm.cleaned_data['gateCreateID'])
  76. gateInstance.description = str(MyLoginForm.cleaned_data['gateCreateDescription'])
  77. gateInstance.save()
  78. elif 'removeGate' in request.POST:
  79. MyLoginForm = testForm(request.POST)
  80. if MyLoginForm.is_valid():
  81. test = gate.objects.filter(gateID=MyLoginForm.cleaned_data['gateRemoveID'])
  82. test.delete()
  83.  
  84. gates = gate.objects.all().order_by('gateID')
  85. #groups = groupGate.objects.all().order_by('id')
  86. #groupxd = group.objects.all().order_by('id')
  87. #return render(request, "gates.html", {"gates":gates,"groups":groups,"groupxd":groupxd})
  88. return render(request, "gates.html", {"gates":gates})
  89.  
  90. def people(request):
  91. if request.method == "POST":
  92. if 'assignGroup' in request.POST:
  93. MyLoginForm = workerAssignationForm(request.POST)
  94. if MyLoginForm.is_valid():
  95. objectsToDelete = workerGroup.objects.filter(worker=employee.objects.get(id=MyLoginForm.cleaned_data['realWorkerID']))
  96. objectsToDelete.delete()
  97. connectionsList = MyLoginForm.cleaned_data['assignGroup'].split(',')
  98. for connectionToCreate in connectionsList:
  99. connectionInstance = workerGroup()
  100. connectionInstance.worker = employee.objects.get(id=MyLoginForm.cleaned_data['realWorkerID'])
  101. connectionInstance.group = group.objects.get(id=connectionToCreate)
  102. connectionInstance.save()
  103. json_serializer = serializers.get_serializer("json")()
  104. worker = json_serializer.serialize(workerGroup.objects.all(), ensure_ascii=False)
  105. groups = json_serializer.serialize(group.objects.all(), ensure_ascii=False)
  106. peoples = json_serializer.serialize(employee.objects.all(), ensure_ascii=False)
  107. return render(request, "people.html", {'groups':groups,'worker':worker,'peoples':peoples})
  108.  
  109. def show_grid(request):
  110. return render_to_response('show_grid.html',{},context_instance=RequestContext(request))
  111.  
  112. def get_data(request):
  113. if 'posStart' in request.GET:
  114. offset = request.GET["posStart"]
  115. quantity = request.GET["count"]
  116. else:
  117. offset = 0
  118. quantity = 2000
  119.  
  120. data = employee.objects.all()[offset:offset+quantity]
  121. total = employee.objects.all().count()
  122. worker = workerGroup.objects.all()
  123. return render_to_response ("get_data.xml", {'data':data,'worker':worker, 'total':total, 'pos':offset}, content_type='type/xml', context_instance=RequestContext(request))
  124.  
  125. def getGates(request):
  126. data = gate.objects.all().order_by('gateID')
  127. groups = groupGate.objects.all()
  128. return render_to_response ("getGates.xml", {'data':data,'groups':groups}, content_type='type/xml', context_instance=RequestContext(request))
  129.  
  130. def getGroups(request):
  131. xdata = group.objects.all().order_by('groupID')
  132. return render_to_response ("getGroups.xml", {'xdata':xdata}, content_type='type/xml', context_instance=RequestContext(request))
  133. def updateGates(request):
  134. test = gate.objects.get(id=request.GET['c2'])
  135. test.gateID = request.GET['c0']
  136. test.description = request.GET['c1']
  137. test.save()
  138.  
  139.  
  140. def updateGroups(request):
  141. try:
  142. test = group.objects.get(id=request.GET['c2'])
  143. test.groupID = request.GET['c0']
  144. test.groupName = request.GET['c1']
  145. test.save()
  146. except:
  147. return render_to_response(
  148. 'update_data_error.xml',
  149. {},
  150. mimetype='text/xml', context_instance=RequestContext(request))
  151. else:
  152. return render_to_response(
  153. 'update_data.xml',
  154. {'id': rid},
  155. mimetype='text/xml', context_instance=RequestContext(request))(request.GET['c1'])
  156.  
  157. def update_data(request):
  158. print('hello')
  159.  
  160. def admin_change_password(request):
  161. if request.method == "POST":
  162. mail = request.POST.get("mail")
  163. name = str(request.user)
  164. record = User.objects.get(username=name)
  165. record.email = mail
  166. record.save()
  167. return render(request, "admin_change_password.html", {"mail":mail})
  168. else:
  169. name = str(request.user)
  170. record = User.objects.get(username=name)
  171. mail = record.email
  172. return render_to_response ("admin_change_password.html", {"mail":mail}, context_instance=RequestContext(request))
  173.  
  174.  
  175. def get_data_admin(request):
  176. if 'posStart' in request.GET:
  177. offset = request.GET["posStart"]
  178. quantity = request.GET["count"]
  179. else:
  180. offset = 0
  181. quantity = 20
  182.  
  183. data = User.objects.exclude(username = "admin").exclude(username = "root")[offset:offset+quantity]
  184. total = User.objects.all().count()
  185. return render_to_response ("get_data_admin.xml", {'data':data, 'total':total, 'pos':offset}, content_type='type/xml', context_instance=RequestContext(request))
  186.  
  187. def update_data_admin(request):
  188. global massage
  189. global whom
  190. try:
  191. rid = request.GET['gr_id']
  192. try:
  193. if request.GET['!nativeeditor_status'] == "deleted":
  194. #print('1')
  195. r = User.objects.get(id=request.GET['gr_id'])
  196. #print('2')
  197. date = datetime.datetime.now()
  198. #print('3')
  199. my_datetime = timezone.make_aware(date, timezone.get_current_timezone())
  200. #print('4')
  201. name = str(request.user)
  202. massage = "Deleted user with ID %s" % request.GET['gr_id']
  203. #print('5')
  204. recordToLog = Log(User_Name=name, Date_event=my_datetime, Whom=request.GET['gr_id'], Massage=massage)
  205. #print('6')
  206. recordToLog.save()
  207. re = User.objects.filter(id=request.GET['gr_id'])
  208. re.delete()
  209. else:
  210. #print "w try"
  211. r = User.objects.get(id=rid)
  212. #print "w try1"
  213. r.username = request.GET['c0']
  214. #print "w try2"
  215. whom = r.username
  216. #print "w try3"
  217. r.set_password(request.GET['c1'])
  218. #print "w try4"
  219. if r.email != request.GET['c2']:
  220. massage = "Email set: from %s to %s " % (r.email, request.GET['c2'])
  221. else:
  222. massage = "Password was changed"
  223. r.email = request.GET['c2']
  224. r.save()
  225. name = str(request.user)
  226. date = datetime.datetime.now()
  227. #print "w try5"
  228. my_datetime = timezone.make_aware(date, timezone.get_current_timezone())
  229. recordToLog = Log(User_Name=name, Date_event=my_datetime, Whom=whom, Massage=massage)
  230. recordToLog.save()
  231. except:
  232. #print "w else"
  233. date = datetime.datetime.now()
  234. my_datetime = timezone.make_aware(date, timezone.get_current_timezone())
  235. name = str(request.user)
  236. massage = "Add new user %s" % request.GET['c0']
  237. #print str(massage)
  238. recordToLog = Log(User_Name=name, Date_event=my_datetime, Whom=request.GET['c0'], Massage=massage)
  239. recordToLog.save()
  240. addnewRecord = User(password = request.GET['c1'], last_login = my_datetime, is_superuser = False,
  241. username = request.GET['c0'], first_name = "", last_name = "", email = request.GET['c2'],
  242. is_staff = False, is_active = True, date_joined = my_datetime)
  243. addnewRecord.save()
  244. except:
  245. return render_to_response(
  246. 'update_data_error.xml',
  247. {},
  248. content_type='text/xml',
  249. context_instance=RequestContext(request))
  250. else:
  251. #print "update"
  252. return render_to_response(
  253. 'update_data.xml',
  254. {'id': rid},
  255. content_type='text/xml',
  256. context_instance=RequestContext(request))
  257.  
  258. def raporty(request):
  259. employees = employee.objects.all()
  260. testResults = testResult.objects.all().order_by('-timeStamp')[:200]
  261. od = datetime.date.today()
  262. do = datetime.date.today()
  263.  
  264. return render(request, "raporty.html", {"employees":employees, "testResults":testResults, "do":do, "od":od})
  265.  
  266. #####################################
  267.  
  268. def zmiana(request):
  269. global data
  270. global num
  271. if request.method == "POST":
  272. data = request.POST.get("data")
  273. num = int(request.POST.get("num"))
  274.  
  275. print "poluczeno"
  276. print ":"+str(data)+":"
  277. print ":"+str(num)+":"
  278. connRTS = pymssql.connect(server='192.168.0.5', user='sa', password='red3fred4', database='KDSoftware')
  279. cursor = connRTS.cursor()
  280. sql = "INSERT INTO t_person_external_ca_status1 VALUES ('%s', '%s')" % (num, data)
  281. print str(sql)
  282. cursor.execute(sql)
  283. connRTS.commit()
  284. return render(request, "raporty.html", {})
  285. ###########################################
  286.  
  287. def connect(request):
  288. if request.method == "GET":
  289. requestType = request.GET
  290. if 'watchDog' in requestType:
  291. return HttpResponse(json.dumps({"info" : str(request.get_host()),"registration": True}), content_type='application/json')
  292. if 'wrist' in requestType:
  293. return HttpResponse(json.dumps(saveTestResult(request.GET)), content_type='application/json')
  294. if 'ID' in requestType:
  295. return HttpResponse(json.dumps(checkEmployee(request.GET)), content_type='application/json')
  296. if 'requirement' in requestType:
  297. return HttpResponse(json.dumps(checkEmployeeRequirements(request.GET)), content_type='application/json')
  298. if 'unknownUser' in requestType:
  299. print("New unknown user : "+requestType['unknownUser'])
  300. return HttpResponse(json.dumps({"info":"OK"}), content_type='application/json')
  301.  
  302. def saveTestResult(data):
  303. print("DEBUG: Adding report - ID: "+data['ID_']+" Result: "+data['result'])
  304. employeerz = employee.objects.get(badge=data['ID_'])
  305. actualTime = datetime.datetime.now()
  306. if data['result'] == "True":resultValue = True
  307. else:resultValue = False
  308. if resultValue:timeFinish = actualTime + datetime.timedelta(minutes = int(employeerz.accessTime))
  309. else :timeFinish = actualTime
  310. newRecord = testResult(employeer = employeerz, timeStamp = actualTime, timeValid = timeFinish, result = resultValue, leftLeg = data['leftLeg'], rightLeg = data['rightLeg'], wrist = data['wrist'])
  311. newRecord.save()
  312. return {'ex':'session'}
  313.  
  314. def checkEmployee(data):
  315.  
  316. def checkEmployeeIsset(badge):
  317. try:
  318. result = employee.objects.get(badge=badge)
  319. print("DEBUG: Employee found")
  320. return True
  321. except:
  322. print("DEBUG: Employee not found")
  323. return False
  324.  
  325. def checkEmployeeGroup(badge,gateID):
  326. groupCheck = ''
  327. getGate = gate.objects.get(gateID=gateID)
  328. getWorker = employee.objects.get(badge=badge)
  329. availableGroups = groupGate.objects.filter(gate=getGate)
  330. for _group in availableGroups:
  331. if groupCheck == '':
  332. try :groupCheck = workerGroup.objects.get(group=_group.group,worker=getWorker).group
  333. except:groupCheck = ''
  334. if groupCheck == '':
  335. print("DEBUG: Employee has no access to this gate")
  336. return False
  337. else:
  338. print("DEBUG: Employee have access to this gate")
  339. return True
  340.  
  341. def checkEmployeeTime(badge):
  342.  
  343. def checkLastTest(badge):
  344. try:
  345. _employee = employee.objects.get(badge=badge)
  346. result = testResult.objects.filter(employeer=_employee).order_by('-timeValid')[0]
  347. print("DEBUG: Found last test")
  348. return result
  349. except:
  350. print("DEBUG: Last test not found")
  351. return False
  352.  
  353. def getTimeFromLastReport(lastReport):
  354. print('DEBUG: Checking access time from last report')
  355. a = lastReport.timeValid + datetime.timedelta(minutes = 120)
  356. b = datetime.datetime.now()
  357. if a.date() >= b.date() and a.time() >= b.time():
  358. print("DEBUG: Everything is OK")
  359. return True
  360. else:return False
  361.  
  362. result = checkLastTest(badge)
  363. if result:
  364. if not getTimeFromLastReport(result):
  365. print("DEBUG: Test is required")
  366. return False
  367. else:
  368. print("DEBUG: Test is required")
  369. return False
  370. return True
  371.  
  372. returnValue = {"isset":"NO","group":"NO","time":"NO"}
  373. if checkEmployeeIsset(data['ID']) : returnValue["isset"] = "OK"
  374. else : return returnValue
  375. if checkEmployeeGroup(data['ID'],data['gateID']) : returnValue["group"] = "OK"
  376. else : returnValue["group"] = "NO"
  377. if checkEmployeeTime(data['ID']) : returnValue["time"] = "OK"
  378. else : returnValue["time"] = "NO"
  379. return returnValue
  380.  
  381. def checkEmployeeRequirements(data):
  382. employeeRequirements = employee.objects.get(badge=data['ID_'])
  383. returnValue = {'leftLeg':'unkwn'}
  384. if employeeRequirements.leftLeg : returnValue['leftLeg'] = 'Y'
  385. if employeeRequirements.rightLeg: returnValue['rightLeg'] = 'Y'
  386. if employeeRequirements.wrist : returnValue['wrist'] = 'Y'
  387. print("DEBUG: Checking employee requirements : "+str(returnValue))
  388. return returnValue
  389.  
  390. def settinds(request):
  391. mySet = Setting.objects.get()
  392. host = mySet.Host
  393. port = mySet.Port
  394. username = mySet.Username
  395. password = mySet.Password
  396. ssl_tls = mySet.UseSSL
  397. on_off = mySet.ModeUnknown
  398. #Str_random = id_generation()
  399. #print "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
  400. #print "STR_RANDOM " + str(Str_random)
  401. #ID_unknown = "unknown_" + str(Str_random)
  402. #print "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
  403. #print "STR_RANDOM " + str(ID_unknown)
  404. SMTP = {
  405. "Host" : host,
  406. "Port" : port,
  407. "Username" : username,
  408. "Password" : password,
  409. "ssl" : ssl_tls,
  410. "on" : on_off
  411. }
  412. return render(request, "settings.html", SMTP)
  413.  
  414. #funkcja do generowania id
  415.  
  416. def id_generation(size=9, chars=string.digits):
  417. return ''.join(random.choice(chars) for _ in range(size))
  418.  
  419. def settingss(request):
  420. global SMTP
  421. if request.method == "POST":
  422. name = str(request.user)
  423. date = datetime.datetime.now()
  424. my_datetime = timezone.make_aware(date, timezone.get_current_timezone())
  425. massage = ""
  426. mySet = Setting.objects.get()
  427. if mySet.Host != request.POST.get("host"):
  428. massage = "Host set: from %s to %s" % (mySet.Host, request.POST.get("host"))
  429. mySet.Host = request.POST.get("host")
  430.  
  431. if mySet.Port != int(request.POST.get("port")):
  432. massage = "Port set: from %s to %s" % (mySet.Port, request.POST.get("port"))
  433. mySet.Port = int(request.POST.get("port"))
  434.  
  435. if mySet.Username != request.POST.get("username"):
  436. massage = "Username set: from %s to %s" % (mySet.Username, request.POST.get("username"))
  437. mySet.Username = request.POST.get("username")
  438.  
  439. if mySet.Password != request.POST.get("password"):
  440. massage = "Password set: from %s to %s" % (mySet.Password, request.POST.get("password"))
  441. mySet.Password = request.POST.get("password")
  442.  
  443. ssl_tls = request.POST.get("ssl_tls")
  444. #print ":"+str(ssl_tls)+":"
  445. ssl = True
  446. tls = False
  447.  
  448. if ssl_tls=="ssl":
  449. ssl = True
  450. tls = False
  451. massage = "SSL set: %s " % ssl
  452. else:
  453. ssl = False
  454. tls = True
  455. massage = "TLS set: %s" % tls
  456. mySet.UseSSL = ssl
  457. mySet.UseTTL = tls
  458.  
  459. on_off = request.POST.get("on_off")
  460. on = True
  461. off = False
  462. if on_off=="on":
  463. mode = True
  464. massage = "Mode Unkown set: %s " % on
  465. else:
  466. mode = False
  467. massage = "Mode Unkown set: %s " % off
  468. mySet.ModeUnknown = mode
  469.  
  470. SMTP = {
  471. "Host" : mySet.Host,
  472. "Port" : mySet.Port,
  473. "Username" : mySet.Username,
  474. "Password" : mySet.Password,
  475. "ssl" : mySet.UseSSL,
  476. "on" : mySet.ModeUnknown
  477.  
  478. }
  479. EMAIL_HOST_USER = mySet.Host
  480. mySet.save()
  481. #print "massage"
  482. #print ":"+str(massage)+":"
  483. if massage != "":
  484. recordToLog = Log(User_Name=name, Date_event=my_datetime, Whom="SMTP", Massage=massage)
  485. recordToLog.save()
  486.  
  487. return render(request, "settings.html", SMTP)
  488.  
  489. def now():
  490. if settings.USE_TZ:
  491. return datetame.utc().replace(tzinfo=utc)
  492. else:
  493. return datetime.now()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement