Guest User

Untitled

a guest
May 2nd, 2018
139
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.71 KB | None | 0 0
  1. today=Appointment.objects.order_by('date').filter(date=now,user=user)
  2.  
  3. #-*- coding: utf-8 -*-
  4. from __future__ import unicode_literals
  5. from django.shortcuts import render, redirect
  6. from .models import User,Appointment
  7. from datetime import datetime
  8. from django.contrib import messages
  9. import bcrypt
  10.  
  11. # Create your views here.
  12. def index(request):
  13. return render(request,'index.html')
  14.  
  15. def home(request):
  16. now=datetime.now().strftime("%Y-%m-%d"),
  17. user =User.objects.get(id=request.session['user_id'])
  18. today=Appointment.objects.order_by('date').filter(date=now,user=user)
  19. laterdate=Appointment.objects.order_by('date').filter(user=user).exclude(date=now)
  20. context={
  21. 'user':user,
  22. 'laterdate':laterdate,
  23. 'today':today,
  24. }
  25. return render(request,"welcome.html",context,now)
  26.  
  27. def register(request):
  28. errors = User.objects.validate(request.POST)
  29. #print 'this process works', request.POST
  30. if len(errors) > 0:
  31. for error in errors:
  32. messages.error(request, error)
  33. return redirect("/")
  34.  
  35. else:
  36. hashpwd = bcrypt.hashpw(request.POST["password"].encode(), bcrypt.gensalt())
  37. newuser = User.objects.create(
  38. first_name=request.POST['first_name'],
  39. last_name=request.POST['last_name'],
  40. email=request.POST['email'],
  41. password=hashpwd)
  42.  
  43. request.session['user_id'] = newuser.id
  44. request.session['name'] = newuser.first_name
  45. print "session info", newuser.id, newuser.first_name
  46. return redirect("/home")
  47.  
  48. def login(request):
  49. errors = User.objects.loginvalidate(request.POST)
  50. if len(errors) > 0:
  51. for error in errors:
  52. messages.error(request, error)
  53. return redirect("/")
  54. else:
  55. user = User.objects.filter(email=request.POST['email'])[0]
  56. request.session['user_id'] = user.id
  57. request.session['name'] = user.first_name
  58. return redirect("/home")
  59.  
  60. def logout(request):
  61. request.session.clear()
  62. print 'goodbye'
  63. return redirect('/')
  64. def delete(request,id):
  65. Appointment.objects.get(id=id).delete()
  66. return redirect('/home')
  67.  
  68. def edit(request):
  69. appointment=Appointment.objects.get(id=id)
  70. context={
  71. 'edit':appointment
  72. }
  73. return render(request,"update.html",context)
  74.  
  75. def create(request):
  76. errors=Appointment.objects.appointvalidate(request.POST)
  77. if len(errors)>0:
  78. for error in errors:
  79. messages.error(request,error)
  80. return redirect("/home")
  81. else:
  82. users = User.objects.get(id = request.session['user_id'])
  83. Appointment.objects.create(
  84. task=request.POST["task"],
  85. time=request.POST["time"],
  86. date=request.POST["date"],
  87. status="pending",
  88. key=users,
  89. )
  90. return redirect("/home")
  91.  
  92. def update(request,id):
  93. errors=Appointment.objects.appointvalidate(request.POST)
  94. if errors['status']==True:
  95. update=Appointment.objects.get(id=id)
  96. update.task=request.POST['task']
  97. update.time=request.POST['time']
  98. update.date=request.POST['date']
  99. update.status=request.POST['status']
  100. update.save()
  101. return redirect("/home")
  102. else:
  103. for error in errors:
  104. messages.error(request,error)
  105. return redirect("/update")
  106.  
  107. # -*- coding: utf-8 -*-
  108. from __future__ import unicode_literals
  109.  
  110. from django.db import models
  111. import bcrypt
  112. import re
  113. from datetime import *
  114. import datetime
  115. EMAIL_REGEX = re.compile(r'^[a-zA-Z0-9.+_-]+@[a-zA-Z0-9._-]+.[a-zA-Z]+$')
  116. NAME_REGEX = re.compile(r'^[aA-zZs]+$')
  117.  
  118. # Create your models here.
  119.  
  120.  
  121.  
  122. class UserManage(models.Manager):
  123. def validate(self, postData):
  124. errors = {}
  125. if len(postData['first_name']) < 2:
  126. errors["First name field can be left blank"]="first_name"
  127. elif not NAME_REGEX.match(postData['first_name']):
  128. errors["This is not a valid first name. Try again."]="first_name"
  129.  
  130. if len(postData['last_name']) < 2:
  131. errors["Last name cannot be left blank"]="last_name"
  132.  
  133. elif not NAME_REGEX.match(postData['last_name']):
  134. errors["This is not a valid last name. Try again."]="last_name"
  135.  
  136.  
  137. if len(postData['email']) < 1:
  138. errors["Email cannot be left blank"]="email"
  139.  
  140. elif not EMAIL_REGEX.match(postData['email']):
  141. errors["this is not a valid email try again"]="email"
  142.  
  143. if (User.objects.filter(email=postData['email'])):
  144. errors['Email already in use']="email"
  145. print postData["email"]
  146.  
  147.  
  148. if len(postData['password']) < 8:
  149. errors["Passwords must at least 8 characters"]="password"
  150.  
  151. if postData["password"] != postData["cpassword"]:
  152. errors["Passwords do not match"]="cpassword"
  153. return errors
  154.  
  155. def loginvalidate(self, postData):
  156. errors = {}
  157. if len(postData['email'])<1:
  158. errors["Email field can not be blank"] = "email"
  159.  
  160. if len(postData["password"])<8:
  161. errors["Password must be at least 8 characters" ] = "password"
  162.  
  163. if len(self.filter(email=postData['email']))>0:
  164. #print 'TRUE for emails'
  165. currentuser =self.filter(email=postData['email'])[0]
  166. existingpwd = currentuser.password
  167.  
  168. if not bcrypt.checkpw(postData["password"].encode(), existingpwd.encode()):
  169. errors["Password does not match"] = "password"
  170. else:
  171. errors["Email does not match"] = "email"
  172. return errors
  173.  
  174. class AppointmentManage(models.Manager):
  175. def appointvalidate(self,postData):
  176. errors={}
  177. if len(postData['task'])<2:
  178. errors["Task field cannot be left blank"]="task"
  179. if len(postData['task'])<20:
  180. errors["Task field is too long"]="task"
  181. if len(postData['date'])<1:
  182. errors["Date field cannot be left blank"]="date"
  183. else:
  184. pause=datetime.strptime(time,"%Y-%m-%d %H:%M")
  185. if pause< datetime.now():
  186. errors["Only present and future dates are permissable"]="date"
  187. if len(postData['time'])<1:
  188. errors["Time field cannot be left blank"]="time"
  189. return errors
  190.  
  191. def sorter(self):
  192. return (self.all().order_by('-date'))
  193.  
  194. class User(models.Model):
  195. first_name = models.CharField(max_length=45)
  196. last_name = models.CharField(max_length=45)
  197. email = models.CharField(max_length=45)
  198. password = models.CharField(max_length=45)
  199. birthdate = models.DateField(auto_now=True)
  200. objects = UserManage()
  201.  
  202. class Appointment(models.Model):
  203. date=models.DateField(auto_now=True)
  204. status=models.CharField(max_length=20)
  205. time=models.TimeField()
  206. task=models.CharField(max_length=20)
  207. key=models.ForeignKey(User,related_name="other")
  208. objects=AppointmentManage()
  209. def current_day(self):
  210. # return date.today().strftime("%Y-%m-%d") == self.date
  211. return {'date': datetime.now()}
  212.  
  213. <DOCTYPE html>
  214. <html>
  215. <head> <link rel="stylesheet" type="text/css" href="style.css">
  216. {% load static %}
  217. </head><body>
  218. <h1>Welcome{{request.session.name}} </h1>
  219. <a href="/logout"><button>logout</button></a>
  220. <h1>Here are your
  221.  
  222. appointments for {{request.session.datetime}}</h1>
  223. <table>
  224. <thead><th>Task</th><th>Date</th><th>Time</th> <th>Status</th> <th>Actions</th></thead>
  225. {%for meeting in today%}
  226. <tr><td>{{meeting.task}}</td><td>{{meeting.date}}</td><td>{{meeting.time}}</td><td>{{meeting.status}}</td><td><a href="/edit"><button>Edit</button></a></td><td><a href="/delete"><button>Delete</button></a></td></tr>
  227. {%endfor%}
  228. </table>
  229.  
  230. <p>Other appointments</p>
  231. <table>
  232. <thead><th>Task</th><th>Date</th><th>Time</th></thead>
  233. {%for meeting in laterdate%}
  234. <tr><td>{{meeting.task}}</td><td>{{meeting.date}}</td><td>{{meeting.time}}</td></tr>
  235. {%endfor%}
  236. </table>
  237.  
  238. <h2>Add a new Appointment</h2>
  239. <form action="/create" method="POST">
  240. {% csrf_token %}
  241. <label for="task">
  242. <p>Task:</p> <input type="text" name="task">
  243. </label>
  244. <label for="time">
  245. <p>Time:</p><input type="time" name="time" id="">
  246. </label>
  247. <label for="date">
  248. <p>Date</p><input type="date" name="date" id="">
  249. </label>
  250. <button type="submit">Submit</button>
  251. <br>
  252. {% if messages %}
  253. <ul class="messages">
  254. {% for message in messages %}
  255. <li{% if message.tags %} class="{{ message.tags }}"{% endif %}>{{ message }}</li>
  256. {% endfor %}
  257. </ul>
  258. {% endif %}
  259. </form>
  260. </body>
Add Comment
Please, Sign In to add comment