search on roles
This commit is contained in:
parent
605be906d5
commit
8b507517f4
@ -26,13 +26,13 @@ def create_api():
|
|||||||
from .controllers.playlist import playlist
|
from .controllers.playlist import playlist
|
||||||
from .controllers.file import file
|
from .controllers.file import file
|
||||||
from .controllers.auth import auth
|
from .controllers.auth import auth
|
||||||
from .controllers.roles import roles
|
from .controllers.roles import roles_bp
|
||||||
|
|
||||||
app.register_blueprint(user, url_prefix='/api')
|
app.register_blueprint(user, url_prefix='/api')
|
||||||
app.register_blueprint(playlist, url_prefix='/api')
|
app.register_blueprint(playlist, url_prefix='/api')
|
||||||
app.register_blueprint(file, url_prefix='/api/file')
|
app.register_blueprint(file, url_prefix='/api/file')
|
||||||
app.register_blueprint(auth, url_prefix='/api/auth')
|
app.register_blueprint(auth, url_prefix='/api/auth')
|
||||||
app.register_blueprint(roles, url_prefix='/api')
|
app.register_blueprint(roles_bp, url_prefix='/api')
|
||||||
|
|
||||||
from .models import User, Playlist, PlaylistFile, File
|
from .models import User, Playlist, PlaylistFile, File
|
||||||
|
|
||||||
|
@ -9,7 +9,9 @@ from screen.ScreenManager import ScreenManager
|
|||||||
class PlaylistAbl:
|
class PlaylistAbl:
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def create(data):
|
def create(data):
|
||||||
|
print(data)
|
||||||
new_playlist = Playlist(name=data['name'], owner_id=current_user.as_dict()['id'])
|
new_playlist = Playlist(name=data['name'], owner_id=current_user.as_dict()['id'])
|
||||||
|
return jsonify()
|
||||||
db.session.add(new_playlist)
|
db.session.add(new_playlist)
|
||||||
db.session.flush()
|
db.session.flush()
|
||||||
db.session.commit()
|
db.session.commit()
|
||||||
|
@ -4,9 +4,9 @@ from flask_login import login_user, login_required, current_user, logout_user
|
|||||||
from ..models import Role
|
from ..models import Role
|
||||||
from .. import db
|
from .. import db
|
||||||
|
|
||||||
roles = Blueprint('roles', __name__)
|
roles_bp = Blueprint('roles', __name__)
|
||||||
|
|
||||||
@roles.route('/roles', methods=['POST'])
|
@roles_bp.route('/roles', methods=['POST'])
|
||||||
@login_required
|
@login_required
|
||||||
def create():
|
def create():
|
||||||
data = request.get_json()
|
data = request.get_json()
|
||||||
@ -25,7 +25,7 @@ def create():
|
|||||||
db.session.commit()
|
db.session.commit()
|
||||||
return jsonify(new_role.as_dict())
|
return jsonify(new_role.as_dict())
|
||||||
|
|
||||||
@roles.route('/roles/<int:role_id>', methods=["GET"])
|
@roles_bp.route('/roles/<int:role_id>', methods=["GET"])
|
||||||
@login_required
|
@login_required
|
||||||
def get(role_id):
|
def get(role_id):
|
||||||
role = db.session.query(Role).filter_by(id=role_id).first()
|
role = db.session.query(Role).filter_by(id=role_id).first()
|
||||||
@ -33,13 +33,16 @@ def get(role_id):
|
|||||||
return jsonify(role.as_dict())
|
return jsonify(role.as_dict())
|
||||||
return jsonify(), 404
|
return jsonify(), 404
|
||||||
|
|
||||||
@roles.route('/roles', methods=["GET"])
|
@roles_bp.route('/roles', methods=["GET"])
|
||||||
@login_required
|
@login_required
|
||||||
def list():
|
def list():
|
||||||
res = db.session.query(Role).all()
|
roles = db.session.query(Role).all()
|
||||||
roles = []
|
return jsonify([role.as_dict() for role in roles])
|
||||||
for role in roles:
|
|
||||||
roles.append(role.as_dict())
|
@roles_bp.route('/roles/<string:search>', methods=["GET"])
|
||||||
|
@login_required
|
||||||
|
def search(search):
|
||||||
|
roles = db.session.query(Role).filter(Role.name.like("%"+search+"%")).all()
|
||||||
|
return jsonify([role.as_dict() for role in roles])
|
||||||
|
|
||||||
return jsonify(roles)
|
|
||||||
|
|
||||||
|
@ -21,14 +21,21 @@ class File(db.Model):
|
|||||||
def as_dict(self):
|
def as_dict(self):
|
||||||
return {c.name: getattr(self, c.name) for c in self.__table__.columns}
|
return {c.name: getattr(self, c.name) for c in self.__table__.columns}
|
||||||
|
|
||||||
|
class PlaylistView(db.Model):
|
||||||
|
playlist_id = db.Column(db.Integer, db.ForeignKey('playlist.id'), primary_key=True)
|
||||||
|
role_id = db.Column(db.Integer, db.ForeignKey('role.id'), primary_key=True)
|
||||||
|
|
||||||
|
class PlaylistEdit(db.Model):
|
||||||
|
playlist_id = db.Column(db.Integer, db.ForeignKey('playlist.id'), primary_key=True)
|
||||||
|
role_id = db.Column(db.Integer, db.ForeignKey('role.id'), primary_key=True)
|
||||||
|
|
||||||
class Playlist(db.Model):
|
class Playlist(db.Model):
|
||||||
id = db.Column(db.Integer, primary_key = True, autoincrement=True)
|
id = db.Column(db.Integer, primary_key = True, autoincrement=True)
|
||||||
name = db.Column(db.String(150))
|
name = db.Column(db.String(150))
|
||||||
owner_id = db.Column(db.Integer, db.ForeignKey('user.id'))
|
owner_id = db.Column(db.Integer, db.ForeignKey('user.id'))
|
||||||
last_modified = db.Column(db.DateTime(timezone=True), default=func.now())
|
last_modified = db.Column(db.DateTime(timezone=True), default=func.now())
|
||||||
read_permissions = db.Column(db.Integer, default=0)
|
view = db.relationship('Role', secondary='PlaylistView', back_populates='playlists_view')
|
||||||
write_permissions = db.Column(db.Integer, default=0)
|
edit = db.relationship('Role', secondary='PlaylistEdit', back_populates='playlists_edit')
|
||||||
execute_permissions = db.Column(db.Integer, default=0)
|
|
||||||
files = db.relationship('File', secondary='PlaylistFile')
|
files = db.relationship('File', secondary='PlaylistFile')
|
||||||
playlist_files = db.relationship('PlaylistFile', order_by='PlaylistFile.position', back_populates='playlist')
|
playlist_files = db.relationship('PlaylistFile', order_by='PlaylistFile.position', back_populates='playlist')
|
||||||
|
|
||||||
@ -47,6 +54,8 @@ class Role(db.Model):
|
|||||||
permissions= db.Column(db.Integer, default=0)
|
permissions= db.Column(db.Integer, default=0)
|
||||||
parent_id = db.Column(db.Integer, db.ForeignKey('role.id'), default=None)
|
parent_id = db.Column(db.Integer, db.ForeignKey('role.id'), default=None)
|
||||||
users = db.relationship('User', secondary='UserRole', back_populates='roles')
|
users = db.relationship('User', secondary='UserRole', back_populates='roles')
|
||||||
|
playlist_view = db.relationship('Playlist', secondary='PlaylistView', back_populates='view')
|
||||||
|
playlist_edit = db.relationship('Playlist', secondary='PlaylistEdit', back_populates='edit')
|
||||||
|
|
||||||
def as_dict(self):
|
def as_dict(self):
|
||||||
return {c.name: getattr(self, c.name) for c in self.__table__.columns}
|
return {c.name: getattr(self, c.name) for c in self.__table__.columns}
|
||||||
|
@ -98,10 +98,11 @@ class CheckViewPlaylist:
|
|||||||
self.status_code = 403
|
self.status_code = 403
|
||||||
|
|
||||||
def is_valid(self, args):
|
def is_valid(self, args):
|
||||||
check_own = CheckOwnPlaylist()
|
# if can edit can view, edit check also for owner
|
||||||
if check_own.is_valid(args):
|
check_edit = CheckEditPlaylist()
|
||||||
|
if check_edit.is_valid(args):
|
||||||
return True
|
return True
|
||||||
elif check_own.status_code == 404:
|
elif check_edit.status_code == 404:
|
||||||
self.message = "This playlist doesn't exist"
|
self.message = "This playlist doesn't exist"
|
||||||
self.status_code = 404
|
self.status_code = 404
|
||||||
return False
|
return False
|
||||||
|
Loading…
Reference in New Issue
Block a user