Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ^^^ login_app ^^^
- ** models.py **
- # -*- coding: utf-8 -*-
- from __future__ import unicode_literals
- import re
- import bcrypt
- from django.db import models
- # Create your models here.
- class UserManager(models.Manager):
- def loginVal(self, postData):
- results = {'status': True, 'errors':[], 'user': None}
- users = self.filter(email = postData['email'])
- if len(users) < 1:
- results['status'] = False
- else:
- if bcrypt.checkpw(postData['password'].encode(), users[0].password.encode()):
- results['user'] = users[0]
- else:
- results['status'] = False
- return results
- def creator(self, postData):
- user = self.create(name = postData['name'], alias = postData['alias'], email = postData['email'], password = bcrypt.hashpw(postData["password"].encode(), bcrypt.gensalt()))
- return user
- def validate(self, postData):
- results = {"status": True, "errors":[]}
- if len(postData['name']) < 3:
- results['errors'].append('Your name is too short.')
- results['status'] = False
- if len(postData['alias']) < 3:
- results['errors'].append('Your alias is too short.')
- results['status'] = False
- if not re.match("[^@]+@[^@]+\.[^@]+", postData["email"]):
- results['errors'].append('Your email is not valid.')
- results['status'] = False
- if postData["password"] != postData["c_password"]:
- results['errors'].append('Your passwords do not match.')
- results['status'] = False
- if len(postData['password']) < 8:
- results['errors'].append('Your password is too short.')
- results['status'] = False
- if len(self.filter(email = postData['email'])) >0:
- results['errors'].append('User already exists.')
- results['status'] = False
- return results
- class User(models.Model):
- name = models.CharField(max_length=255)
- alias = models.CharField(max_length=255)
- email = models.CharField(max_length=255)
- password = models.CharField(max_length=255)
- objects = UserManager()
- ** urls.py **
- from django.conf.urls import url
- from . import views
- urlpatterns = [
- url(r'^$', views.index),
- url(r'^register$', views.register),
- url(r'^login$', views.login),
- url(r'^dashboard$', views.dashboard),
- url(r'^logout$', views.logout),
- ]
- ** views.py **
- # -*- coding: utf-8 -*-
- from __future__ import unicode_literals
- from models import User
- # from ..rebelt_app.models import Quotes
- from django.shortcuts import render, HttpResponse, redirect
- from django.contrib import messages
- # Create your views here.
- def index(request):
- # User.objects.all().delete()
- return render(request, "login.html")
- def register(request):
- results = User.objects.validate(request.POST)
- if results['status'] == True:
- user = User.objects.creator(request.POST)
- messages.success(request, 'User has been created.')
- else:
- for error in results['errors']:
- messages.error(request, error)
- return redirect("/")
- def login(request):
- results = User.objects.loginVal(request.POST)
- if results['status'] == False:
- messages.error(request, "Please check your credentials, then try again.")
- return redirect('/')
- request.session['email'] = results['user'].email
- request.session['name'] = results['user'].name
- return redirect('/pokes')
- def dashboard(request):
- if 'email' not in request.session:
- return redirect('/')
- return render(request, 'dashboard.html', { "quotes": Quotes.objects.all()})
- def logout(request):
- request.session.flush()
- return redirect('/')
- ** login.html **
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <meta http-equiv="X-UA-Compatible" content="ie=edge">
- <title>Login/Registration</title>
- </head>
- <body>
- {% if messages %}
- {% for message in messages %}
- <p>{{message}}</p>
- {% endfor %}
- {% endif %}
- <form action="/register" method="post">
- {% csrf_token %}
- <h2>Register here</h2>
- <label for="name">Enter your name</label> <br>
- <input type="text" name="name" id=""> <br> <br>
- <label for="alias">Enter your alias</label> <br>
- <input type="text" name="alias" id=""> <br> <br>
- <label for="email">Enter your email</label> <br>
- <input type="text" name="email" id=""> <br> <br>
- <label for="password">Enter your password</label> <br>
- <input type="text" name="password" id="" placeholder="minimum 8 characters"> <br> <br>
- <label for="c_password">Confirm your password</label> <br>
- <input type="text" name="c_password" id="" placeholder="passwords must match"> <br> <br>
- <!-- <label for="dob">Enter your date of birth</label> <br>
- <input type="date" name="dob" id=""> -->
- <input type="submit" value="Submit">
- </form>
- <h3>Login here</h3>
- <form action="/login" method="post">
- {% csrf_token %}
- <input type="text" name="email" placeholder="Enter your email"> <br> <br>
- <input type="text" name="password" placeholder="Enter your password"> <br> <br>
- <input type="submit" value="Login">
- </form>
- </body>
- </html>
- ^^^ pokes_app ^^^
- ** models.py **
- # -*- coding: utf-8 -*-
- from __future__ import unicode_literals
- from ..login_app.models import *
- from django.db import models
- # Create your models here.
- class Poke(models.Model):
- poker = models.ForeignKey(User, related_name="pokerpokes")
- poked = models.ForeignKey(User, related_name="pokedpokes")
- created_at = models.DateField(null=True)
- counter = models.IntegerField(blank=False, default=0, null=True)
- total = models.IntegerField(blank=False, default=0, null=True)
- ** urls.py **
- from django.conf.urls import url
- from . import views
- urlpatterns = [
- url(r'^pokes$', views.pokes),
- url(r'^button$', views.button),
- ]
- ** views.py **
- # -*- coding: utf-8 -*-
- from __future__ import unicode_literals
- from models import Poke
- from ..login_app.models import *
- from django.shortcuts import render, HttpResponse, redirect
- from django.contrib import messages
- from datetime import date
- # Create your views here.
- def pokes(request):
- welcome = request.session['name']
- print (request.session['name'])
- return render(request, "dashboard.html", {"welcome": request.session['name'], "users": User.objects.all().exclude(name=request.session['name'])})
- def button(request):
- return redirect("/pokes")
- ** dashboard.html **
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <meta http-equiv="X-UA-Compatible" content="ie=edge">
- <title>Pokes</title>
- <style>
- .Container {
- position: relative;
- width: 970px;
- margin: 0 auto;
- padding: 0;
- }
- .Head h1{
- margin-bottom: 0;
- }
- .Head h3 {
- margin-top: 0;
- font-weight: normal;
- }
- .Head h4 a {
- position: absolute;
- right: 0px;
- top: 20px;
- font-size: 130%;
- text-decoration: none;
- }
- .Head h4 a:hover {
- color: #000;
- }
- table {
- border: 1px solid black;
- border-spacing: 30px 5px;
- }
- table a {
- border: 2px solid #000;
- color: #000000;
- display: block;
- text-align: center;
- padding: 5px 10px;
- text-decoration: none;
- }
- p {
- margin-bottom: 5px;
- }
- </style>
- </head>
- <body>
- <div class="Container">
- <div class="Head">
- <h1>Welcome, {{ welcome }}</h1>
- <h3>*** people poked you!</h3>
- <h4><a href="/logout">Logout</a></h4>
- </div>
- <div class="Poked-you">
- </div>
- <div class="People">
- <p>People you may want to poke:</p>
- <table>
- <thead>
- <tr>
- <th>Name</th>
- <th>Alias</th>
- <th>Email Address</th>
- <th>Poke History</th>
- <th>Action</th>
- </tr>
- </thead>
- <tbody>
- {% for user in users %}
- <tr>
- <td>{{ user.name }}</td>
- <td>{{ user.alias }}</td>
- <td>{{ user.email }}</td>
- <td>Blank</td>
- <td><a href="/button">Poke</a></td>
- </tr>
- {% endfor %}
- </tbody>
- </table>
- </div>
- </div>
- </body>
- </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement