This commit is contained in:
2025-01-21 18:46:15 +08:00
parent a0b0082b76
commit c5f0f4bf46
4 changed files with 62 additions and 2 deletions
+1
View File
@@ -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)
+7
View File
@@ -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)
+35 -2
View File
@@ -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/<int:document_id>', 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():
+19
View File
@@ -0,0 +1,19 @@
{% extends 'base.html' %}
{% block title %}Upload Document{% endblock %}
{% block content %}
<div class="container mt-4">
{% if message %}
<div class="alert alert-info">{{ message }}</div>
{% else %}
<h2>Upload Your Document</h2>
<form method="POST" enctype="multipart/form-data">
<div class="mb-3">
<label for="document" class="form-label">Select Document</label>
<input type="file" class="form-control" id="document" name="document" required>
</div>
<button type="submit" class="btn btn-primary">Upload</button>
</form>
{% endif %}
</div>
{% endblock %}