def create_me(self): with DB() as db: new_user = Users(google_id=self.google_id, name=self.name, email=self.email, profile_pic=self.profile_pic) db.session.add(new_user) db.session.flush() create_id = new_user.id return create_id
def get_id(self): with DB() as db: query = db.session.query(Users).filter(Users.email == self.email) rows = query.all() # id is unique so maximum one row will be returned if rows: # if it's not an empty list return rows[0].id else: create_id = self.create_me() return create_id
def get_user_seen_imdb_ids(): if current_user.is_authenticated: user_id = current_user.get_id() with DB() as db: rows = db.session.query(SeenTitles).filter( SeenTitles.user_id == user_id).all() seen_imdb_ids = [row.imdb_id for row in rows] return set(seen_imdb_ids) else: return set()
def get_user_by_id(user_id): with DB() as db: query = db.session.query(Users).filter(Users.id == user_id) rows = query.all() # id is unique so maximum one row will be returned if rows: # if it's not an empty list user_data = rows[0] user = User( google_id=user_data.google_id, name=user_data.name, email=user_data.email, profile_pic=user_data.profile_pic ) return user else: return
class User(DB.Model, UserMixin): id = DB.Column(DB.Integer, primary_key=True) username = DB.Column(DB.String(64), index=True, unique=True) password = DB.Column(DB.String(128)) role = DB.Column(DB.String(10), index=True) @property def is_admin(self): return self.role == "admin" def __repr__(self): return "<User {} {}>".format(self.id, self.username) def set_password(self, password): self.password = generate_password_hash(password) def check_password(self, password): return check_password_hash(self.password, password)
def save_seen_checkbox(): imdbID, _ = request.form.get("id").split("_") checkbox_status = request.form.get("status") checkbox_status = checkbox_status.lower( ) == 'true' # todo: this value return stings if current_user.is_authenticated: user_id = current_user.get_id() with DB() as db: if checkbox_status: seen_title = SeenTitles(user_id=user_id, imdb_id=imdbID) db.session.add(seen_title) else: seen_titles = db.session.query(SeenTitles).filter( SeenTitles.user_id == user_id, SeenTitles.imdb_id == imdbID).all() for seen_title in seen_titles: db.session.delete(seen_title) db.session.commit() return jsonify({"ok": 1})
""" author Pavel Bystrov create database """ from webapp.db import DB from webapp import create_app DB.create_all(app=create_app())
keys_config["google_client_id"]) GOOGLE_CLIENT_SECRET = os.environ.get("GOOGLE_CLIENT_SECRET", keys_config["google_client_secret"]) GOOGLE_DISCOVERY_URL = ( "https://accounts.google.com/.well-known/openid-configuration") app = Flask(__name__) app.secret_key = os.environ.get("SECRET_KEY") or os.urandom(24) # User session management setup # https://flask-login.readthedocs.io/en/latest login_manager = LoginManager() login_manager.init_app(app) # create db and tables DB().create_tables() # OAuth 2 client setup client = WebApplicationClient(GOOGLE_CLIENT_ID) # Flask-Login helper to retrieve a user from our db @login_manager.user_loader def load_user(user_id): return get_user_by_id(user_id) def get_google_provider_cfg(): # todo: add error handling return requests.get(GOOGLE_DISCOVERY_URL).json()
class CarCounts(DB.Model): id = DB.Column(DB.Integer, primary_key=True) image = DB.Column(DB.String(128), nullable=True) car_count = DB.Column(DB.Integer, nullable=False) ratio = DB.Column(DB.Float, nullable=False)
class Defects(DB.Model): id = DB.Column(DB.Integer, primary_key=True) image = DB.Column(DB.String(128), nullable=True) object_class = DB.Column(DB.Integer, nullable=False) object_label = DB.Column(DB.String(64), nullable=False)
def create_app(): """ starting app for Flask object detection site """ app = Flask(__name__, static_url_path="/webapp/static") app.config.from_pyfile("config.py") login_manager = LoginManager() login_manager.init_app(app) login_manager.login_view = "user.login" DB.init_app(app) app.register_blueprint(user_blueprint) app.register_blueprint(stat_blueprint) @login_manager.user_loader def load_user(user_id): return User.query.get(user_id) def process_file(request): file = request.files["file"] if file: os.makedirs("webapp/static", exist_ok=True) file_name = os.path.join("webapp", "static", file.filename) file.save(file_name) return file_name @app.route("/error") def error(): text = "Server error" return render_template("index.html", main_text=text) @app.route("/") def index(): text = "ПРАКТИЧЕСКОЕ ПРИМЕНЕНИЕ OBJECT DETECTION" return render_template("index.html", main_text=text) @app.route("/cars/", methods = ["GET", "POST"]) def count_cars(): if request.method =="POST": file_name = process_file(request) if file_name is None: return error() answer = car_count(file_name) file_name = answer[1] return render_template("show_cars.html", main_img="/" + file_name, answer=answer[0]) return render_template("submit.html", main_text="Count cars") @app.route("/defects/", methods = ["GET", "POST"]) def detect_defects(): if request.method =="POST": file_name = process_file(request) if file_name is None: return error() answer = detect(file_name) return render_template("show_result.html", main_img="/" + file_name, answer=answer) return render_template("submit.html", main_text="Detect defects") return app