diff --git a/run.py b/run.py index 5516c6c39469a69fa6254e0fa42bf5fca92b79c5..ea73e5aea3379e5f36986dceec370c1e011f6f53 100644 --- a/run.py +++ b/run.py @@ -1,3 +1,5 @@ + +# that's run.py from store import app if __name__ == '__main__': diff --git a/store/forms.py b/store/forms.py index ecef8641addce2de5f32dcc5ffde04e639b95432..712ad60ada598b43267b6854c5fb6c035414f5d6 100644 --- a/store/forms.py +++ b/store/forms.py @@ -1,4 +1,4 @@ import wtforms from flask_wtf import FlaskForm from wtforms import StringField # Basic example. -from wtforms.validators import DataRequired # Basic example. \ No newline at end of file +from wtforms.validators import DataRequired # Basic example. diff --git a/store/models.py b/store/models.py index d291958722c0d6627b7ff3e0c72f6ed5ab96be35..145f1490b34ea0ebb40ea797688b3e49122b6e96 100644 --- a/store/models.py +++ b/store/models.py @@ -1,4 +1,6 @@ # https://flask-sqlalchemy.palletsprojects.com/en/2.x/models/ + +#from flask import current_app from store import db # Helper tables for many to many relationships, see https://flask-sqlalchemy.palletsprojects.com/en/2.x/models/#many-to-many-relationships. @@ -40,4 +42,18 @@ class ItemSet(db.Model): backref=db.backref('ItemSets', lazy=True)) def __repr__(self): - return f"id: {self.id}, description: {self.description}, items: {self.items}" \ No newline at end of file + return f"id: {self.id}, description: {self.description}, items: {self.items}" + +# database for user register it will be added more cullomns in the future +# that is a basic implementation to check if it works +# Freddy implemented that +class User(db.Model): + id = db.Column(db.Integer, primary_key=True) + username = db.Column(db.String(256), nullable=False) + password = db.Column(db.String(256), nullable=False) + + @classmethod + def insert(cls, username, password): + user = cls(username=username, password=password) + db.session.add(user) + db \ No newline at end of file diff --git a/store/routes.py b/store/routes.py index f68c1b48c21504de0039e4fc7b2f823b6a1b28ec..abebd486d4f7355f7f6924785e5aa9ddc1790242 100644 --- a/store/routes.py +++ b/store/routes.py @@ -1,7 +1,9 @@ from store import app, db -from flask import render_template +from flask import render_template, request, flash, redirect, url_for from store.utility import * + + @app.route("/") @app.route("/index") def index(): @@ -21,4 +23,24 @@ def itemSets(): @app.route("/login") def login(): - return render_template('login.html', title='Login') \ No newline at end of file + return render_template('login.html', title='Login') + + +@app.route("/register", methods=['POST', 'GET']) +def register(): + if request.method == "POST": + username = request.form['username'] + password = request.form['password'] + #register_user(username,password ) + new_user = User(username=username, password= password) + db.session.add(new_user) + db.session.commit() + flash('Your account has been created! You are now able to log in', 'success') + return redirect(url_for('index')) + + return render_template('register.html', title='register') + + + + + \ No newline at end of file diff --git a/store/site.db b/store/site.db new file mode 100644 index 0000000000000000000000000000000000000000..d0ce28bb3cf992ceb0252d3a9fa53b791c2a52f3 Binary files /dev/null and b/store/site.db differ diff --git a/store/static/main.css b/store/static/main.css index 3de4791f5dd3f5bad0e028ebea376c69097882e9..34c795dee901cd2bad61bb008e85fa7b0be71a2e 100644 --- a/store/static/main.css +++ b/store/static/main.css @@ -59,4 +59,4 @@ li a:hover { h1{ color: black; -} +} \ No newline at end of file diff --git a/store/templates/base.html b/store/templates/base.html index ad2955af0dbaf73c5930a44545eb950c34aa3145..c5651ee62418048e9ac2fa40f0e846f144334d8d 100644 --- a/store/templates/base.html +++ b/store/templates/base.html @@ -8,7 +8,8 @@ <body> <header> - <h1>ANTIQUES ONLINE</h1> + + <a class="logo" href="{{ url_for('index')}}">ANTIQUES ONLINE</a></li> </header> <div> @@ -16,7 +17,8 @@ <li><a href="{{ url_for('basket')}}">Basket</a></li> <li><a href="{{ url_for('items')}}">Items</a></li> <li><a href="{{ url_for('itemSets')}}">Item Sets</a></li> - <li><a href="{{ url_for('login')}}">Login</a></li> + <li><a href="{{ url_for('login')}}">Login</a></li>Register + <li><a href="{{ url_for('register')}}">Register</a></li> <input type="text" placeholder="Search..."> </ul> diff --git a/store/templates/register.html b/store/templates/register.html new file mode 100644 index 0000000000000000000000000000000000000000..3646bb8aa8602bbe58646a40066e27efd0fa65b1 --- /dev/null +++ b/store/templates/register.html @@ -0,0 +1,24 @@ + + + {%extends 'base.html' %} +{% block content %} + {% block title %} Register | Antiques Online {% endblock %} + + +<form method="POST" action="{{ url_for('register') }}" style="float: center; text-align: center;"> + + <div class="container"> + <h1>Register</h1> + + <label for="username"><b>username</b></label> + <input type="username" placeholder="Enter username" name="username" id="username" required> + + <label for="password"><b>Password</b></label> + <input type="password" placeholder="Enter Password" name="password" id="password" required> + + <input class="button" type="submit" value="Register" > + + </div> + + </form> +{% endblock %} \ No newline at end of file diff --git a/store/utility.py b/store/utility.py index f269477c5bbbbdac13328c186ad3d7d5f5fa9454..bc842ee3ecf831e24270e8f0e7e41d0cf5ae9198 100644 --- a/store/utility.py +++ b/store/utility.py @@ -1,5 +1,9 @@ # TODO: Search for similiarly named item to replace removed item from itemset. + from store.models import * +from sqlalchemy import select +from store import * + # Difference between filter and filter_by: https://stackoverflow.com/a/31560897 def get_unsold_items(): @@ -9,4 +13,13 @@ def get_sold_items(): return Item.query.filter(Item.date_sold.isnot(None)).all() def get_itemsets_by_item_id(item_id): - return ItemSet.query.filter_by(id = item_id).all() \ No newline at end of file + return ItemSet.query.filter_by(id = item_id).all() + +#def Registerdb(Username, Password): + #ItemSet.query.filter_by(id = item_id).all() + #User.insert.values(username= Username, password = Password) + +def register_user(username, password): + user = User(username=username, password=password) + db.session.add(user) + db.session.commit() \ No newline at end of file