Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- today=Appointment.objects.order_by('date').filter(date=now,user=user)
- #-*- coding: utf-8 -*-
- from __future__ import unicode_literals
- from django.shortcuts import render, redirect
- from .models import User,Appointment
- from datetime import datetime
- from django.contrib import messages
- import bcrypt
- # Create your views here.
- def index(request):
- return render(request,'index.html')
- def home(request):
- now=datetime.now().strftime("%Y-%m-%d"),
- user =User.objects.get(id=request.session['user_id'])
- today=Appointment.objects.order_by('date').filter(date=now,user=user)
- laterdate=Appointment.objects.order_by('date').filter(user=user).exclude(date=now)
- context={
- 'user':user,
- 'laterdate':laterdate,
- 'today':today,
- }
- return render(request,"welcome.html",context,now)
- def register(request):
- errors = User.objects.validate(request.POST)
- #print 'this process works', request.POST
- if len(errors) > 0:
- for error in errors:
- messages.error(request, error)
- return redirect("/")
- else:
- hashpwd = bcrypt.hashpw(request.POST["password"].encode(), bcrypt.gensalt())
- newuser = User.objects.create(
- first_name=request.POST['first_name'],
- last_name=request.POST['last_name'],
- email=request.POST['email'],
- password=hashpwd)
- request.session['user_id'] = newuser.id
- request.session['name'] = newuser.first_name
- print "session info", newuser.id, newuser.first_name
- return redirect("/home")
- def login(request):
- errors = User.objects.loginvalidate(request.POST)
- if len(errors) > 0:
- for error in errors:
- messages.error(request, error)
- return redirect("/")
- else:
- user = User.objects.filter(email=request.POST['email'])[0]
- request.session['user_id'] = user.id
- request.session['name'] = user.first_name
- return redirect("/home")
- def logout(request):
- request.session.clear()
- print 'goodbye'
- return redirect('/')
- def delete(request,id):
- Appointment.objects.get(id=id).delete()
- return redirect('/home')
- def edit(request):
- appointment=Appointment.objects.get(id=id)
- context={
- 'edit':appointment
- }
- return render(request,"update.html",context)
- def create(request):
- errors=Appointment.objects.appointvalidate(request.POST)
- if len(errors)>0:
- for error in errors:
- messages.error(request,error)
- return redirect("/home")
- else:
- users = User.objects.get(id = request.session['user_id'])
- Appointment.objects.create(
- task=request.POST["task"],
- time=request.POST["time"],
- date=request.POST["date"],
- status="pending",
- key=users,
- )
- return redirect("/home")
- def update(request,id):
- errors=Appointment.objects.appointvalidate(request.POST)
- if errors['status']==True:
- update=Appointment.objects.get(id=id)
- update.task=request.POST['task']
- update.time=request.POST['time']
- update.date=request.POST['date']
- update.status=request.POST['status']
- update.save()
- return redirect("/home")
- else:
- for error in errors:
- messages.error(request,error)
- return redirect("/update")
- # -*- coding: utf-8 -*-
- from __future__ import unicode_literals
- from django.db import models
- import bcrypt
- import re
- from datetime import *
- import datetime
- EMAIL_REGEX = re.compile(r'^[a-zA-Z0-9.+_-]+@[a-zA-Z0-9._-]+.[a-zA-Z]+$')
- NAME_REGEX = re.compile(r'^[aA-zZs]+$')
- # Create your models here.
- class UserManage(models.Manager):
- def validate(self, postData):
- errors = {}
- if len(postData['first_name']) < 2:
- errors["First name field can be left blank"]="first_name"
- elif not NAME_REGEX.match(postData['first_name']):
- errors["This is not a valid first name. Try again."]="first_name"
- if len(postData['last_name']) < 2:
- errors["Last name cannot be left blank"]="last_name"
- elif not NAME_REGEX.match(postData['last_name']):
- errors["This is not a valid last name. Try again."]="last_name"
- if len(postData['email']) < 1:
- errors["Email cannot be left blank"]="email"
- elif not EMAIL_REGEX.match(postData['email']):
- errors["this is not a valid email try again"]="email"
- if (User.objects.filter(email=postData['email'])):
- errors['Email already in use']="email"
- print postData["email"]
- if len(postData['password']) < 8:
- errors["Passwords must at least 8 characters"]="password"
- if postData["password"] != postData["cpassword"]:
- errors["Passwords do not match"]="cpassword"
- return errors
- def loginvalidate(self, postData):
- errors = {}
- if len(postData['email'])<1:
- errors["Email field can not be blank"] = "email"
- if len(postData["password"])<8:
- errors["Password must be at least 8 characters" ] = "password"
- if len(self.filter(email=postData['email']))>0:
- #print 'TRUE for emails'
- currentuser =self.filter(email=postData['email'])[0]
- existingpwd = currentuser.password
- if not bcrypt.checkpw(postData["password"].encode(), existingpwd.encode()):
- errors["Password does not match"] = "password"
- else:
- errors["Email does not match"] = "email"
- return errors
- class AppointmentManage(models.Manager):
- def appointvalidate(self,postData):
- errors={}
- if len(postData['task'])<2:
- errors["Task field cannot be left blank"]="task"
- if len(postData['task'])<20:
- errors["Task field is too long"]="task"
- if len(postData['date'])<1:
- errors["Date field cannot be left blank"]="date"
- else:
- pause=datetime.strptime(time,"%Y-%m-%d %H:%M")
- if pause< datetime.now():
- errors["Only present and future dates are permissable"]="date"
- if len(postData['time'])<1:
- errors["Time field cannot be left blank"]="time"
- return errors
- def sorter(self):
- return (self.all().order_by('-date'))
- class User(models.Model):
- first_name = models.CharField(max_length=45)
- last_name = models.CharField(max_length=45)
- email = models.CharField(max_length=45)
- password = models.CharField(max_length=45)
- birthdate = models.DateField(auto_now=True)
- objects = UserManage()
- class Appointment(models.Model):
- date=models.DateField(auto_now=True)
- status=models.CharField(max_length=20)
- time=models.TimeField()
- task=models.CharField(max_length=20)
- key=models.ForeignKey(User,related_name="other")
- objects=AppointmentManage()
- def current_day(self):
- # return date.today().strftime("%Y-%m-%d") == self.date
- return {'date': datetime.now()}
- <DOCTYPE html>
- <html>
- <head> <link rel="stylesheet" type="text/css" href="style.css">
- {% load static %}
- </head><body>
- <h1>Welcome{{request.session.name}} </h1>
- <a href="/logout"><button>logout</button></a>
- <h1>Here are your
- appointments for {{request.session.datetime}}</h1>
- <table>
- <thead><th>Task</th><th>Date</th><th>Time</th> <th>Status</th> <th>Actions</th></thead>
- {%for meeting in today%}
- <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>
- {%endfor%}
- </table>
- <p>Other appointments</p>
- <table>
- <thead><th>Task</th><th>Date</th><th>Time</th></thead>
- {%for meeting in laterdate%}
- <tr><td>{{meeting.task}}</td><td>{{meeting.date}}</td><td>{{meeting.time}}</td></tr>
- {%endfor%}
- </table>
- <h2>Add a new Appointment</h2>
- <form action="/create" method="POST">
- {% csrf_token %}
- <label for="task">
- <p>Task:</p> <input type="text" name="task">
- </label>
- <label for="time">
- <p>Time:</p><input type="time" name="time" id="">
- </label>
- <label for="date">
- <p>Date</p><input type="date" name="date" id="">
- </label>
- <button type="submit">Submit</button>
- <br>
- {% if messages %}
- <ul class="messages">
- {% for message in messages %}
- <li{% if message.tags %} class="{{ message.tags }}"{% endif %}>{{ message }}</li>
- {% endfor %}
- </ul>
- {% endif %}
- </form>
- </body>
Add Comment
Please, Sign In to add comment