Skip to content

Commit

Permalink
Format Python files with Black
Browse files Browse the repository at this point in the history
  • Loading branch information
DocMarty84 committed Mar 30, 2019
1 parent 369403a commit b2a6d5c
Show file tree
Hide file tree
Showing 47 changed files with 3,284 additions and 2,785 deletions.
95 changes: 43 additions & 52 deletions __manifest__.py
@@ -1,60 +1,51 @@
# -*- coding: utf-8 -*-
{
'name': 'OOMusic',
'author': 'Nicolas Martinelli',
'category': 'Uncategorized',
'summary': 'Music streaming module',
'website': 'http://koozic.net/',
'version': '0.1',
'description': """
"name": "OOMusic",
"author": "Nicolas Martinelli",
"category": "Uncategorized",
"summary": "Music streaming module",
"website": "http://koozic.net/",
"version": "0.1",
"description": """
Music Collection
================
""",
'depends': [
'base',
'web',
'web_tour',
"depends": ["base", "web", "web_tour"],
"data": [
"security/ir.model.access.csv",
"security/oomusic_security.xml",
"views/oomusic_menu_views.xml",
"views/oomusic_album_views.xml",
"views/oomusic_artist_views.xml",
"views/oomusic_bandsintown_views.xml",
"views/oomusic_config_settings.xml",
"views/oomusic_converter_views.xml",
"views/oomusic_download_views.xml",
"views/oomusic_folder_views.xml",
"views/oomusic_genre_views.xml",
"views/oomusic_playlist_views.xml",
"views/oomusic_tag_views.xml",
"views/oomusic_track_views.xml",
"views/oomusic_suggestion_views.xml",
"views/oomusic_transcoder_views.xml",
"views/res_users.xml",
"views/oomusic.xml",
"data/oomusic_data.xml",
"data/oomusic_artist_data.xml",
"data/oomusic_bandsintown_data.xml",
"data/oomusic_converter_data.xml",
"data/oomusic_folder_data.xml",
"data/oomusic_format_data.xml",
"data/oomusic_lastfm_data.xml",
"data/oomusic_playlist_data.xml",
"data/oomusic_track_data.xml",
"data/oomusic_transcoder_data.xml",
],
'data': [
'security/ir.model.access.csv',
'security/oomusic_security.xml',

'views/oomusic_menu_views.xml',
'views/oomusic_album_views.xml',
'views/oomusic_artist_views.xml',
'views/oomusic_bandsintown_views.xml',
'views/oomusic_config_settings.xml',
'views/oomusic_converter_views.xml',
'views/oomusic_download_views.xml',
'views/oomusic_folder_views.xml',
'views/oomusic_genre_views.xml',
'views/oomusic_playlist_views.xml',
'views/oomusic_tag_views.xml',
'views/oomusic_track_views.xml',
'views/oomusic_suggestion_views.xml',
'views/oomusic_transcoder_views.xml',
'views/res_users.xml',
'views/oomusic.xml',

'data/oomusic_data.xml',
'data/oomusic_artist_data.xml',
'data/oomusic_bandsintown_data.xml',
'data/oomusic_converter_data.xml',
'data/oomusic_folder_data.xml',
'data/oomusic_format_data.xml',
'data/oomusic_lastfm_data.xml',
'data/oomusic_playlist_data.xml',
'data/oomusic_track_data.xml',
'data/oomusic_transcoder_data.xml',
],
'demo': [
],
'qweb': [
'static/src/xml/*.xml',
],
'installable': True,
'auto_install': True,
'application': True,
'license': 'Other OSI approved licence',
"demo": [],
"qweb": ["static/src/xml/*.xml"],
"installable": True,
"auto_install": True,
"application": True,
"license": "Other OSI approved licence",
}
59 changes: 34 additions & 25 deletions controllers/main.py
Expand Up @@ -14,65 +14,73 @@


class MusicController(http.Controller):

@http.route(['/oomusic/down'], auth='public', type='http')
@http.route(["/oomusic/down"], auth="public", type="http")
def down(self, **kwargs):
down = request.env['oomusic.download'].sudo().search([
('access_token', '=', kwargs['token']),
('expiration_date', '>=', fields.Date.today()),
], limit=1)
down = (
request.env["oomusic.download"]
.sudo()
.search(
[
("access_token", "=", kwargs["token"]),
("expiration_date", ">=", fields.Date.today()),
],
limit=1,
)
)
if not down:
abort(404)

# Set a minimum delay between link access to avoid overload
now = fields.Datetime.now()
if down.access_date and (now - down.access_date).seconds < down.min_delay:
raise Forbidden(_('Too many requests received. Please try again in a few minutes.'))
raise Forbidden(_("Too many requests received. Please try again in a few minutes."))
down._update_access_date(now)

# Get the ZIP file
obj_sudo = request.env[down.res_model].sudo().browse(down.res_id)
tracks = obj_sudo._get_track_ids()
return http.send_file(
tracks._build_zip(flatten=down.flatten, name=kwargs['token']), as_attachment=True)
tracks._build_zip(flatten=down.flatten, name=kwargs["token"]), as_attachment=True
)

@http.route(['/oomusic/down_user'], auth='user', type='http')
@http.route(["/oomusic/down_user"], auth="user", type="http")
def down_user(self, **kwargs):
obj = request.env[kwargs['model']].browse(int(kwargs['id']))
obj = request.env[kwargs["model"]].browse(int(kwargs["id"]))
if not obj.exists():
abort(404)
tracks = obj._get_track_ids()
flatten = bool(int(kwargs.get('flatten', '0')))
flatten = bool(int(kwargs.get("flatten", "0")))
return http.send_file(tracks._build_zip(flatten=flatten), as_attachment=True)

@http.route([
'/oomusic/trans/<int:track_id>.<string:output_format>',
], type='http', auth='user')
@http.route(["/oomusic/trans/<int:track_id>.<string:output_format>"], type="http", auth="user")
def trans(self, track_id, output_format, **kwargs):
Track = request.env['oomusic.track'].browse([track_id])
Track = request.env["oomusic.track"].browse([track_id])
fn_ext = os.path.splitext(Track.path)[1]

# Get kwargs
seek = int(kwargs.get('seek', 0))
mode = kwargs.get('mode', 'standard')
seek = int(kwargs.get("seek", 0))
mode = kwargs.get("mode", "standard")

# Stream the file.
# - if raw is activated and the file is not seeked, simply send the file
# - if raw is activated and the file is seeked, use a specific transcoder
# - In other cases, search for an appropriate transcoder
if mode == 'raw' and not seek:
if mode == "raw" and not seek:
return http.send_file(Track.path)
elif mode == 'raw' and seek:
Transcoder = request.env.ref('oomusic.oomusic_transcoder_99')
elif mode == "raw" and seek:
Transcoder = request.env.ref("oomusic.oomusic_transcoder_99")
else:
Transcoder = request.env['oomusic.transcoder'].search([
('output_format.name', '=', output_format)
]).filtered(lambda r: fn_ext[1:] not in r.mapped('black_formats.name'))
Transcoder = (
request.env["oomusic.transcoder"]
.search([("output_format.name", "=", output_format)])
.filtered(lambda r: fn_ext[1:] not in r.mapped("black_formats.name"))
)
Transcoder = Transcoder[0] if Transcoder else False

if Transcoder:
generator = Transcoder.transcode(
track_id, seek=seek, norm=True if mode == 'norm' else False).stdout
track_id, seek=seek, norm=True if mode == "norm" else False
).stdout
mimetype = Transcoder.output_format.mimetype
else:
_logger.warning('Could not find converter from "%s" to "%s"', fn_ext[1:], output_format)
Expand All @@ -85,5 +93,6 @@ def trans(self, track_id, output_format, **kwargs):
# a complete stop of the music. Maybe consider this value as a user option for people with
# bad network.
data = wrap_file(
request.httprequest.environ, generator, buffer_size=Transcoder.buffer_size * 1024)
request.httprequest.environ, generator, buffer_size=Transcoder.buffer_size * 1024
)
return Response(data, mimetype=mimetype, direct_passthrough=True)
24 changes: 17 additions & 7 deletions controllers/subsonic/bookmark.py
Expand Up @@ -7,29 +7,39 @@


class MusicSubsonicBookmarks(http.Controller):
@http.route(['/rest/getBookmarks.view'], type='http', auth='public', csrf=False, methods=['GET', 'POST'])
@http.route(
["/rest/getBookmarks.view"], type="http", auth="public", csrf=False, methods=["GET", "POST"]
)
def getBookmarks(self, **kwargs):
rest = SubsonicREST(kwargs)
success, response = rest.check_login()
if not success:
return response

root = etree.Element('subsonic-response', status='ok', version=rest.version_server)
root = etree.Element("subsonic-response", status="ok", version=rest.version_server)
xml_bookmarks = rest.make_Bookmarks()
root.append(xml_bookmarks)

return rest.make_response(root)

@http.route([
'/rest/createBookmark.view', '/rest/deleteBookmark.view',
'/rest/getPlayQueue.view', '/rest/savePlayQueue.view'
], type='http', auth='public', csrf=False, methods=['GET', 'POST'])
@http.route(
[
"/rest/createBookmark.view",
"/rest/deleteBookmark.view",
"/rest/getPlayQueue.view",
"/rest/savePlayQueue.view",
],
type="http",
auth="public",
csrf=False,
methods=["GET", "POST"],
)
def actionBookmark(self, **kwargs):
rest = SubsonicREST(kwargs)
success, response = rest.check_login()
if not success:
return response

root = etree.Element('subsonic-response', status='ok', version=rest.version_server)
root = etree.Element("subsonic-response", status="ok", version=rest.version_server)

return rest.make_response(root)

0 comments on commit b2a6d5c

Please sign in to comment.