Пример #1
0
    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
Пример #2
0
    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
Пример #3
0
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()
Пример #4
0
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)
Пример #6
0
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})
Пример #7
0
""" author Pavel Bystrov
    create database """
from webapp.db import DB
from webapp import create_app

DB.create_all(app=create_app())
Пример #8
0
                                  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