diff --git a/Rapport.docx b/Rapport.docx index 6004db9..1b6e009 100644 Binary files a/Rapport.docx and b/Rapport.docx differ diff --git a/blog-app/blogapp.py b/blog-app/blogapp.py deleted file mode 100644 index faaf81e..0000000 --- a/blog-app/blogapp.py +++ /dev/null @@ -1,97 +0,0 @@ - - -from datetime import datetime -from flask import Flask, render_template, url_for, flash, redirect -from flask_sqlalchemy import SQLAlchemy # type: ignore -from forms import RegistrationForm, LoginForm -app = Flask(__name__) - -app.config['SECRET_KEY'] = 'db3746b2ffa650b3804e4316d227f853' -app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///blogsite.db' - -db = SQLAlchemy(app) - - -class User(db.Model): - id = db.Column(db.Integer, primary_key=True) - username = db.Column(db.String(20), unique=True, nullable=False) - email = db.Column(db.String(120), unique=True, nullable=False) - image_file = db.Column(db.String(20), nullable=False, - default='default.jpg') - password = db.Column(db.String(60), nullable=False) - posts = db.relationship('Post', backref='author', lazy=True) - - def __repr__(self): - return f"User('{self.username}', '{self.image_file}')" - - -class Post(db.Model): - id = db.Column(db.Integer, primary_key=True) - title = db.Column(db.String(100), nullable=False) - date_posted = db.Column(db.DateTime, nullable=False, - default=datetime.utcnow) - content = db.Column(db.Text, nullable=False) - user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False) - - - def __repr__(self): - return f"Post('{self.title}', '{self.date_posted}')" - - -posts = [ - { - 'pagetitle': 'home page' - } -] - -navbaritems = [ - - { - 'name': 'home', - 'url': 'home' - }, - { - 'name': 'login', - 'url': 'login' - }, - { - 'name': 'register', - 'url': 'register' - } -] - - -@app.route("/") -@app.route("/home") -def home(): - return render_template('home.html', posts=posts, navbaritems=navbaritems) - - -@app.route("/about") -def about(): - return render_template('about.html', title='About', posts=posts, navbaritems=navbaritems) - - -@app.route("/register", methods=['GET', 'POST']) -def register(): - form = RegistrationForm() - if form.validate_on_submit(): - flash(f'Account created for {form.username.data}!') - return redirect(url_for('home')) - return render_template('register.html', title='Register', form=form) - - -@app.route("/login", methods=['GET', 'POST']) -def login(): - form = LoginForm() - if form.validate_on_submit(): - if form.email.data == 'admin' and form.password.data == 'admin': - flash('You have been log in !') - return redirect(url_for('home')) - else: - flash('Login Unsuccessful') - return render_template('login.html', title='Login', form=form) - - -if __name__ == '__main__': - app.run(debug=True, host='0.0.0.0', port=8700) diff --git a/blog-app/blogapp/__init__.py b/blog-app/blogapp/__init__.py new file mode 100644 index 0000000..f44d1bd --- /dev/null +++ b/blog-app/blogapp/__init__.py @@ -0,0 +1,10 @@ + +from flask import Flask +from flask_sqlalchemy import SQLAlchemy # type: ignore + +app = Flask(__name__) +app.config['SECRET_KEY'] = 'db3746b2ffa650b3804e4316d227f853' +app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///blogsite.db' +db = SQLAlchemy(app) + +from blogapp import routes \ No newline at end of file diff --git a/blog-app/forms.py b/blog-app/blogapp/forms.py similarity index 100% rename from blog-app/forms.py rename to blog-app/blogapp/forms.py diff --git a/blog-app/blogapp/models.py b/blog-app/blogapp/models.py new file mode 100644 index 0000000..68b3a68 --- /dev/null +++ b/blog-app/blogapp/models.py @@ -0,0 +1,27 @@ +from datetime import datetime +from blogapp import db + + +class User(db.Model): + id = db.Column(db.Integer, primary_key=True) + username = db.Column(db.String(20), unique=True, nullable=False) + email = db.Column(db.String(120), unique=True, nullable=False) + image_file = db.Column(db.String(20), nullable=False, + default='default.jpg') + password = db.Column(db.String(60), nullable=False) + posts = db.relationship('Post', backref='author', lazy=True) + + def __repr__(self): + return f"User('{self.username}', '{self.image_file}')" + + +class Post(db.Model): + id = db.Column(db.Integer, primary_key=True) + title = db.Column(db.String(100), nullable=False) + date_posted = db.Column(db.DateTime, nullable=False, + default=datetime.utcnow) + content = db.Column(db.Text, nullable=False) + user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False) + + def __repr__(self): + return f"Post('{self.title}', '{self.date_posted}')" diff --git a/blog-app/blogapp/routes.py b/blog-app/blogapp/routes.py new file mode 100644 index 0000000..172366f --- /dev/null +++ b/blog-app/blogapp/routes.py @@ -0,0 +1,58 @@ +from flask import render_template, url_for, flash, redirect +from blogapp import app +from blogapp.forms import RegistrationForm, LoginForm +from blogapp.models import User, Post + +posts = [ + { + 'pagetitle': 'home page' + } +] + +navbaritems = [ + + { + 'name': 'home', + 'url': 'home' + }, + { + 'name': 'login', + 'url': 'login' + }, + { + 'name': 'register', + 'url': 'register' + } +] + + +@app.route("/") +@app.route("/home") +def home(): + return render_template('home.html', posts=posts, navbaritems=navbaritems) + + +@app.route("/about") +def about(): + return render_template('about.html', title='About', posts=posts, navbaritems=navbaritems) + + +@app.route("/register", methods=['GET', 'POST']) +def register(): + form = RegistrationForm() + if form.validate_on_submit(): + flash(f'Account created for {form.username.data}!') + return redirect(url_for('home')) + return render_template('register.html', title='Register', form=form) + + +@app.route("/login", methods=['GET', 'POST']) +def login(): + form = LoginForm() + if form.validate_on_submit(): + if form.email.data == 'admin' and form.password.data == 'admin': + flash('You have been log in !') + return redirect(url_for('home')) + else: + flash('Login Unsuccessful') + return render_template('login.html', title='Login', form=form) diff --git a/blog-app/static/main.css b/blog-app/blogapp/static/main.css similarity index 100% rename from blog-app/static/main.css rename to blog-app/blogapp/static/main.css diff --git a/blog-app/templates/about.html b/blog-app/blogapp/templates/about.html similarity index 100% rename from blog-app/templates/about.html rename to blog-app/blogapp/templates/about.html diff --git a/blog-app/templates/home.html b/blog-app/blogapp/templates/home.html similarity index 100% rename from blog-app/templates/home.html rename to blog-app/blogapp/templates/home.html diff --git a/blog-app/templates/layout.html b/blog-app/blogapp/templates/layout.html similarity index 100% rename from blog-app/templates/layout.html rename to blog-app/blogapp/templates/layout.html diff --git a/blog-app/templates/login.html b/blog-app/blogapp/templates/login.html similarity index 100% rename from blog-app/templates/login.html rename to blog-app/blogapp/templates/login.html diff --git a/blog-app/templates/register.html b/blog-app/blogapp/templates/register.html similarity index 100% rename from blog-app/templates/register.html rename to blog-app/blogapp/templates/register.html diff --git a/blog-app/instance/blogsite.db b/blog-app/instance/blogsite.db index 31bc1ac..dadbd8e 100644 Binary files a/blog-app/instance/blogsite.db and b/blog-app/instance/blogsite.db differ diff --git a/blog-app/run.py b/blog-app/run.py new file mode 100644 index 0000000..df9930f --- /dev/null +++ b/blog-app/run.py @@ -0,0 +1,5 @@ + +from blogapp import app + +if __name__ == '__main__': + app.run(debug=True, host="0.0.0.0", port=8700)