Files
Jarvis/db_routing.py

132 lines
3.8 KiB
Python

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from sqlalchemy import ForeignKey
app = Flask('Jarvis', static_folder='static', template_folder='templates')
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///data.db'
app.config['SECRET_KEY'] = 'Radius'
db = SQLAlchemy(app)
class User(db.Model):
__tablename__ = 'Users'
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(80), unique=True, nullable=False)
password = db.Column(db.String(120), nullable=False)
tg_username = db.Column(db.String(80), unique=True)
def __init__(self, username, password, tg_username=None):
self.username = username
self.password = password
self.tg_username = tg_username
def is_active(self):
return True
def is_authenticated(self):
return self.is_authenticated
def get_id(self):
return self.id
class Trigger(db.Model):
__tablename__ = 'Triggers'
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(80), unique=True, nullable=False)
def_name = db.Column(db.String(200))
class Action(db.Model):
__tablename__ = 'Actions'
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(80), unique=True, nullable=False)
def_name = db.Column(db.String(200))
class Scenario(db.Model):
__tablename__ = 'Scenarios'
id = db.Column(db.Integer, primary_key=True)
owner_id = db.Column(db.Integer, ForeignKey('Users.id'))
scenario_name = db.Column(db.String(80), nullable=False)
trigger_id = db.Column(db.Integer, ForeignKey('Triggers.id'))
trigger_args = db.Column(db.String(200))
action_id = db.Column(db.Integer, ForeignKey('Actions.id'))
action_args = db.Column(db.String(200))
def add_user(user_name, passw_hash):
if not get_user(username=user_name):
new_user = User(username=user_name, password=passw_hash)
db.session.add(new_user)
db.session.commit()
return new_user
else:
print('Логин занят')
return False
def add_trigger(name, def_name):
new_trigger = Trigger(name=name, def_name=def_name)
db.session.add(new_trigger)
db.session.commit()
return new_trigger
def add_action(name, def_name):
new_action = Action(name=name, def_name=def_name)
db.session.add(new_action)
db.session.commit()
return new_action
def add_scenario(owner_id, scenario_name, trigger_id, trigger_args, action_id, action_args):
new_scenario = Scenario(owner_id=owner_id, scenario_name=scenario_name, trigger_id=trigger_id,
trigger_args=trigger_args, action_id=action_id, action_args=action_args)
db.session.add(new_scenario)
db.session.commit()
return new_scenario
def get_user(id=None, username=None):
if id:
return User.query.filter_by(id=id).first()
if username:
return User.query.filter_by(username=username).first()
def get_trigers(id=None):
if id is None:
triggers_list = Trigger.query.all()
return triggers_list
else:
trigger = Trigger.query.filter_by(id=id).first()
return trigger
def get_actions(id=None):
if id is None:
actions_list = Action.query.all()
return actions_list
else:
action = Action.query.filter_by(id=id).first()
return action
def get_user_scripts(current_user_id):
user_scripts_list = Scenario.query.filter_by(owner_id=current_user_id).all()
return user_scripts_list
def delete_scenario(scenario_id):
print(scenario_id)
scenario = Scenario.query.filter_by(id=scenario_id).first()
db.session.delete(scenario)
db.session.commit()
def tg_username_update(current_user_id, new_tg_username):
current_user = User.query.filter_by(id=current_user_id).first()
current_user.tg_username = new_tg_username
db.session.commit()