create playlist with permissions
This commit is contained in:
parent
8b507517f4
commit
9ae9f1797a
@ -1,5 +1,5 @@
|
||||
from flask import jsonify
|
||||
from ..models import Playlist, PlaylistFile, File
|
||||
from ..models import Playlist, PlaylistFile, File, Role
|
||||
from .. import db
|
||||
from datetime import datetime
|
||||
from ..dao.Playlist import PlaylistDao
|
||||
@ -9,9 +9,16 @@ from screen.ScreenManager import ScreenManager
|
||||
class PlaylistAbl:
|
||||
@staticmethod
|
||||
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'])
|
||||
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.flush()
|
||||
db.session.commit()
|
||||
@ -31,7 +38,14 @@ class PlaylistAbl:
|
||||
@staticmethod
|
||||
def 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
|
||||
def list():
|
||||
|
@ -22,10 +22,12 @@ class File(db.Model):
|
||||
return {c.name: getattr(self, c.name) for c in self.__table__.columns}
|
||||
|
||||
class PlaylistView(db.Model):
|
||||
__tablename__ = 'PlaylistView'
|
||||
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):
|
||||
__tablename__ = 'PlaylistEdit'
|
||||
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)
|
||||
|
||||
@ -36,9 +38,15 @@ class Playlist(db.Model):
|
||||
last_modified = db.Column(db.DateTime(timezone=True), default=func.now())
|
||||
view = db.relationship('Role', secondary='PlaylistView', back_populates='playlists_view')
|
||||
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')
|
||||
|
||||
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):
|
||||
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)
|
||||
parent_id = db.Column(db.Integer, db.ForeignKey('role.id'), default=None)
|
||||
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')
|
||||
playlists_view = db.relationship('Playlist', secondary='PlaylistView', back_populates='view')
|
||||
playlists_edit = db.relationship('Playlist', secondary='PlaylistEdit', back_populates='edit')
|
||||
|
||||
def as_dict(self):
|
||||
return {c.name: getattr(self, c.name) for c in self.__table__.columns}
|
||||
|
Loading…
Reference in New Issue
Block a user