diff --git a/app.py b/app.py index 4f2b8d3..aee7c17 100644 --- a/app.py +++ b/app.py @@ -7,6 +7,7 @@ import os app = Flask(__name__) app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///site.db' app.config['SECRET_KEY'] = 'supersecretkey' +UPLOAD_FOLDER = os.path.join(os.getcwd(), 'uploads') db = SQLAlchemy(app) bcrypt = Bcrypt(app) diff --git a/models.py b/models.py index 54e8f02..c4f32cf 100644 --- a/models.py +++ b/models.py @@ -7,6 +7,13 @@ class User(db.Model, UserMixin): password = db.Column(db.String(60), nullable=False) phone = db.Column(db.String(20), nullable=False) is_host = db.Column(db.Boolean, default=False) + documents = db.relationship('Document', backref='user', lazy=True) + +class Document(db.Model): + id = db.Column(db.Integer, primary_key=True) + filename = db.Column(db.String(200), nullable=False) + verified = db.Column(db.Boolean, default=False) + user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False) class Listing(db.Model): id = db.Column(db.Integer, primary_key=True) diff --git a/routes.py b/routes.py index 6da59ad..a1ba554 100644 --- a/routes.py +++ b/routes.py @@ -1,9 +1,10 @@ from flask import render_template, request, redirect, url_for from flask_login import login_user, login_required, logout_user, current_user from app import app, db, bcrypt, login_manager -from models import User, Listing, Booking, Image +from models import User, Listing, Booking, Image, Document from datetime import datetime -from utils import generate_password, send_email +from utils import generate_password, send_email +import os @login_manager.user_loader def load_user(user_id): @@ -49,6 +50,38 @@ def register(): return redirect(url_for('dashboard')) return render_template('register.html') +@app.route('/upload-document', methods=['GET', 'POST']) +@login_required +def upload_document(): + document = Document.query.filter_by(user_id=current_user.id).first() + if document: + if not document.verified: + return render_template('upload_document.html', message="Your document is under verification.") + return render_template('upload_document.html', message="Your document has been verified.") + + if request.method == 'POST': + file = request.files['document'] + if file: + filename = file.filename + filepath = os.path.join(app.config['UPLOAD_FOLDER'], filename) + file.save(filepath) + new_document = Document(filename=filename, user_id=current_user.id) + db.session.add(new_document) + db.session.commit() + return redirect(url_for('upload_document')) + + return render_template('upload_document.html', message=None) + +@app.route('/verify-document/', methods=['POST']) +@login_required +def verify_document(document_id): + if current_user.is_host: + document = Document.query.get_or_404(document_id) + document.verified = True + db.session.commit() + return redirect(url_for('dashboard')) + return redirect(url_for('home')) + @app.route('/dashboard') @login_required def dashboard(): diff --git a/templates/upload_document.html b/templates/upload_document.html new file mode 100644 index 0000000..2fa8f84 --- /dev/null +++ b/templates/upload_document.html @@ -0,0 +1,19 @@ +{% extends 'base.html' %} +{% block title %}Upload Document{% endblock %} + +{% block content %} +
+ {% if message %} +
{{ message }}
+ {% else %} +

Upload Your Document

+
+
+ + +
+ +
+ {% endif %} +
+{% endblock %} \ No newline at end of file