Advertisement
Guest User

Untitled

a guest
Mar 30th, 2016
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.74 KB | None | 0 0
  1. from .app import db, login_manager
  2. import yaml, os.path
  3. from flask.ext.login import UserMixin
  4.  
  5. ################
  6. #### Artists ###
  7. ################
  8.  
  9. class Artist(db.Model):
  10. id = db.Column(db.Integer, primary_key=True)
  11. name = db.Column(db.String(100), unique=True)
  12. albums_played = db.relationship(
  13. "Album",
  14. foreign_keys = 'Album.artist_id',
  15. backref=db.backref("player", lazy='joined'),
  16. lazy='dynamic'
  17. )
  18. albums_composed = db.relationship(
  19. "Album",
  20. foreign_keys = 'Album.composer_id',
  21. backref=db.backref("composer", lazy='joined'),
  22. lazy='dynamic'
  23. )
  24. def __repr__(self):
  25. return "<Artist (%d) %s" % (self.id, self.name)
  26.  
  27. def serialize(self):
  28. return {
  29. 'id': self.id,
  30. 'name': self.name
  31. }
  32.  
  33. def get_artist(id):
  34. return Artist.query.get(id)
  35.  
  36. def get_artists():
  37. return Artist.query.filter(Artist.id == Album.artist_id).all()
  38.  
  39. def get_artists_by_name(message):
  40. try:
  41. return Artist.query.filter(Artist.name.like("%"+message.lower()+"%")).all()
  42. except NoResultFound:
  43. return []
  44.  
  45. def set_artist_name(id,message):
  46. res = Artist.query.filter(Artist.id == id).update({'name': message.lower()})
  47. db.session.commit()
  48. return res
  49.  
  50.  
  51. genrewithalbum = db.Table('genrewithalbum',
  52. db.Column('genre_id', db.Integer, db.ForeignKey('genre.id'), primary_key=True),
  53. db.Column('album_id', db.Integer, db.ForeignKey('album.id'), primary_key=True)
  54. )
  55.  
  56. playlistwithalbum = db.Table('playlistwithalbum',
  57. db.Column('playlist_id', db.Integer, db.ForeignKey('playlist.id'), primary_key=True),
  58. db.Column('album_id', db.Integer, db.ForeignKey('album.id'), primary_key=True)
  59. )
  60.  
  61. ################
  62. #### Albums ####
  63. ################
  64.  
  65. class Album(db.Model):
  66. id = db.Column(db.Integer, primary_key=True)
  67. title = db.Column(db.String(100))
  68. img = db.Column(db.String(200))
  69. release_date = db.Column(db.Integer)
  70. url = db.Column(db.String(100))
  71. artist_id = db.Column(db.Integer, db.ForeignKey("artist.id"))
  72. composer_id = db.Column(db.Integer, db.ForeignKey("artist.id"))
  73. genres = db.relationship(
  74. "Genre",
  75. secondary=genrewithalbum,
  76. backref=db.backref("albums", lazy="dynamic")
  77. )
  78.  
  79. def __repr__(self):
  80. return "<Album (%d) %s>" % (self.id, self.title)
  81.  
  82. def serialize(self):
  83. return {
  84. 'id': self.id,
  85. 'title': self.title,
  86. 'img' : self.img,
  87. 'release_date' :self.release_date,
  88. 'artist_id': self.artist_id,
  89. 'composer_id': self.composer_id
  90. }
  91.  
  92. def get_album(id):
  93. return Album.query.get(id)
  94.  
  95. def get_albums():
  96. return Album.query.all()
  97.  
  98. def get_albums_by_title(message):
  99. try:
  100. return Album.query.filter(Album.title.like("%"+message.lower()+"%")).all()
  101. except NoResultFound:
  102. return []
  103.  
  104. def get_albums_by_date(message):
  105. try:
  106. return Album.query.filter(Album.release_date.like("%"+str(message)+"%")).all()
  107. except NoResultFound:
  108. return []
  109.  
  110. def get_albums_by_artist_id(id):
  111. albums=Album.query.all()
  112. return [ album for album in albums if id == album.player.id]
  113.  
  114.  
  115. def get_albums_by_artist(message):
  116. try:
  117. albums=Album.query.all()
  118. return [ album for album in albums if message.lower() in album.player.name]
  119. except NoResultFound:
  120. return []
  121.  
  122. #return Album.query.filter(Album.player.name.like("%"+message+"%"))
  123. def get_albums_by_composer_id(id):
  124. albums=Album.query.all()
  125. return [ album for album in albums if id == album.composer.id]
  126.  
  127. def get_albums_by_composer(message):
  128. albums=Album.query.all()
  129. return [ album for album in albums if message.lower() in album.composer.name]
  130. #return Album.query.filter(Album.composer_id == artist.id).filter(Artist.name.like("%"+message+"%")).all()
  131.  
  132. def get_albums_by_genre(message):
  133. def l_contient(l,m):
  134. for ll in l:
  135. if m in ll.name:
  136. return True
  137. return False
  138. try:
  139. albums=Album.query.all()
  140. return [ album for album in albums if l_contient(album.genres, message.lower())]
  141. except NoResultFound:
  142. return []
  143.  
  144. def update_album(id,message,annee,artist,composer):
  145. res = Album.query.filter(Album.id == id).update({'title': message.lower(), 'release_date': annee, 'artist_id': artisit, 'composer_id':composer})
  146. db.session.commit()
  147. return res
  148.  
  149. def add_genre_in_album(album_id,genre_id):
  150. a = get_album(album_id)
  151. g= get_genre(genre_id)
  152. a.genres.append(g)
  153. db.session.add(a)
  154. db.session.commit()
  155.  
  156. def delete_genre_in_album(album_id,genre_id):
  157. a = get_album(album_id)
  158. g= get_genre(genre_id)
  159. a.genres.remove(g)
  160. db.session.add(a)
  161. db.session.commit()
  162.  
  163. ######################
  164. #### Compositeurs ####
  165. ######################
  166.  
  167. def get_composers():
  168. return Artist.query.filter(Artist.id == Album.composer_id)
  169.  
  170. def get_composer(id):
  171. return Artist.query.get(id)
  172.  
  173. def get_composers_by_name(message):
  174. try:
  175. return Artist.query.filter(Artist.id == Album.composer_id).filter(Artist.name.like("%"+message.lower()+"%"))
  176. except NoResultFound:
  177. return []
  178.  
  179.  
  180. ################
  181. #### Genres ####
  182. ################
  183.  
  184. class Genre(db.Model):
  185. id = db.Column(db.Integer, primary_key= True)
  186. name = db.Column(db.String(100), unique=True)
  187.  
  188. def serialize(self):
  189. return {
  190. 'id': self.id,
  191. 'name': self.name
  192. }
  193.  
  194. def get_genres():
  195. return Genre.query.all()
  196.  
  197. def get_genre(id):
  198. return Genre.query.get(id)
  199.  
  200. def get_genres_by_name(message):
  201. try:
  202. return Genre.query.filter(Genre.name.like("%"+message.lower()+"%")).all()
  203. except NoResultFound:
  204. return []
  205.  
  206.  
  207. ###################
  208. #### Playlists ####
  209. ###################
  210.  
  211. class Playlist(db.Model):
  212. id = db.Column(db.Integer, primary_key= True)
  213. name = db.Column(db.String(100))
  214. user_name = db.Column(db.String(50), db.ForeignKey("user.username"))
  215. albums = db.relationship(
  216. "Album",
  217. secondary=playlistwithalbum,
  218. backref=db.backref("playlists", lazy="dynamic")
  219. )
  220.  
  221. def serialize(self):
  222. return {
  223. 'id': self.id,
  224. 'name': self.name,
  225. 'user_name': self.user_name
  226. }
  227.  
  228. def get_playlist(id):
  229. return Playlist.query.get(id)
  230.  
  231. def get_playlists(username):
  232. return Playlist.query.filter(Playlist.user_name==username).all()
  233.  
  234. def create_playlist(name,user_name):
  235. o=Playlist(name=name,user_name=user_name)
  236. db.session.add(o)
  237. db.session.commit()
  238.  
  239. def delete_playlist(id):
  240. o=get_playlist(id)
  241. db.session.delete(o)
  242. db.session.commit()
  243.  
  244. def add_album_to_playlist(playlist_id,album_id):
  245. p = get_playlist(playlist_id)
  246. a= get_album(album_id)
  247. p.albums.append(a)
  248. db.session.add(p)
  249. db.session.commit()
  250.  
  251. def delete_album_from_playlist(playlist_id,album_id):
  252. p = get_playlist(playlist_id)
  253. a= get_album(album_id)
  254. p.albums.remove(a)
  255. db.session.add(p)
  256. db.session.commit()
  257.  
  258.  
  259. ##############
  260. #### User ####
  261. ##############
  262.  
  263. class User(db.Model, UserMixin):
  264. username = db.Column( db.String(50), primary_key=True)
  265. password = db.Column( db.String(64) )
  266. playlists = db.relationship(
  267. "Playlist",
  268. backref=db.backref("users", lazy="dynamic", uselist=True)
  269. )
  270. def get_id(self):
  271. return self.username
  272.  
  273. @login_manager.user_loader
  274. def load_user(username):
  275. return User.query.get(username)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement