document
This commit is contained in:
@@ -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,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)
|
||||
|
||||
@@ -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():
|
||||
|
||||
@@ -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 %}
|
||||
Reference in New Issue
Block a user