create playlist with permissions
This commit is contained in:
parent
8b507517f4
commit
9ae9f1797a
@ -1,5 +1,5 @@
|
|||||||
from flask import jsonify
|
from flask import jsonify
|
||||||
from ..models import Playlist, PlaylistFile, File
|
from ..models import Playlist, PlaylistFile, File, Role
|
||||||
from .. import db
|
from .. import db
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from ..dao.Playlist import PlaylistDao
|
from ..dao.Playlist import PlaylistDao
|
||||||
@ -9,9 +9,16 @@ from screen.ScreenManager import ScreenManager
|
|||||||
class PlaylistAbl:
|
class PlaylistAbl:
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def create(data):
|
def create(data):
|
||||||
print(data)
|
roles_edit = db.session.query(Role).filter(Role.id.in_(data['edit'])).all()
|
||||||
|
roles_view = db.session.query(Role).filter(Role.id.in_(data['view'])).all()
|
||||||
|
|
||||||
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()
|
for role in roles_edit:
|
||||||
|
new_playlist.edit.append(role)
|
||||||
|
|
||||||
|
for role in roles_view:
|
||||||
|
new_playlist.view.append(role)
|
||||||
|
|
||||||
db.session.add(new_playlist)
|
db.session.add(new_playlist)
|
||||||
db.session.flush()
|
db.session.flush()
|
||||||
db.session.commit()
|
db.session.commit()
|
||||||
@ -31,7 +38,14 @@ class PlaylistAbl:
|
|||||||
@staticmethod
|
@staticmethod
|
||||||
def get_playlist(playlist_id):
|
def get_playlist(playlist_id):
|
||||||
(query, files) = PlaylistDao.get_playlist(playlist_id)
|
(query, files) = PlaylistDao.get_playlist(playlist_id)
|
||||||
return jsonify({'id': query.id, 'name': query.name, 'owner_id': query.owner_id, 'files': files})
|
query = query.as_dict_with_roles()
|
||||||
|
return jsonify({ \
|
||||||
|
'id': query['id'], \
|
||||||
|
'name': query['name'], \
|
||||||
|
'owner_id': query['owner_id'], \
|
||||||
|
'view': query['view'], \
|
||||||
|
'edit': query['edit'], \
|
||||||
|
'files': files})
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def list():
|
def list():
|
||||||
|
@ -22,10 +22,12 @@ class File(db.Model):
|
|||||||
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):
|
class PlaylistView(db.Model):
|
||||||
|
__tablename__ = 'PlaylistView'
|
||||||
playlist_id = db.Column(db.Integer, db.ForeignKey('playlist.id'), primary_key=True)
|
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)
|
role_id = db.Column(db.Integer, db.ForeignKey('role.id'), primary_key=True)
|
||||||
|
|
||||||
class PlaylistEdit(db.Model):
|
class PlaylistEdit(db.Model):
|
||||||
|
__tablename__ = 'PlaylistEdit'
|
||||||
playlist_id = db.Column(db.Integer, db.ForeignKey('playlist.id'), primary_key=True)
|
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)
|
role_id = db.Column(db.Integer, db.ForeignKey('role.id'), primary_key=True)
|
||||||
|
|
||||||
@ -36,9 +38,15 @@ class Playlist(db.Model):
|
|||||||
last_modified = db.Column(db.DateTime(timezone=True), default=func.now())
|
last_modified = db.Column(db.DateTime(timezone=True), default=func.now())
|
||||||
view = db.relationship('Role', secondary='PlaylistView', back_populates='playlists_view')
|
view = db.relationship('Role', secondary='PlaylistView', back_populates='playlists_view')
|
||||||
edit = db.relationship('Role', secondary='PlaylistEdit', back_populates='playlists_edit')
|
edit = db.relationship('Role', secondary='PlaylistEdit', back_populates='playlists_edit')
|
||||||
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')
|
||||||
|
|
||||||
|
def as_dict_with_roles(self):
|
||||||
|
res = self.as_dict()
|
||||||
|
res['view'] = [role.as_dict() for role in self.view]
|
||||||
|
res['edit'] = [role.as_dict() for role in self.edit]
|
||||||
|
return res
|
||||||
|
|
||||||
|
|
||||||
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}
|
||||||
|
|
||||||
@ -54,8 +62,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')
|
playlists_view = db.relationship('Playlist', secondary='PlaylistView', back_populates='view')
|
||||||
playlist_edit = db.relationship('Playlist', secondary='PlaylistEdit', back_populates='edit')
|
playlists_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}
|
||||||
|
Loading…
Reference in New Issue
Block a user