From ea21ecccd3b063330795f4b91261ab849d890434 Mon Sep 17 00:00:00 2001 From: aj Date: Thu, 13 Aug 2020 19:50:21 +0100 Subject: [PATCH] shifted cron jobs to serverless+scheduler, switches instead of checboxes --- admin.py | 38 +++++++++++++++++++++++++++++++++++- main.cron.py | 13 ++++++++++++ music/api/api.py | 11 ++--------- music/api/spotfm.py | 9 +-------- music/api/tag.py | 11 +---------- src/js/Playlist/View/Edit.js | 15 +++++++------- src/js/Tag/View.js | 4 ++-- 7 files changed, 64 insertions(+), 37 deletions(-) create mode 100644 main.cron.py diff --git a/admin.py b/admin.py index 7fbab95..ff340f7 100755 --- a/admin.py +++ b/admin.py @@ -5,7 +5,7 @@ from pathlib import Path import sys from cmd import Cmd -stage_dir = '_playlist-manager' +stage_dir = '.music-tools' scss_rel_path = Path('src', 'scss', 'style.scss') css_rel_path = Path('build', 'style.css') @@ -98,6 +98,42 @@ class Admin(Cmd): print('>> deploying') self.deploy_function('run_user_playlist') + # all playlists cron job + def do_playlist_cron(self, args): + self.prepare_stage() + self.prepare_main('cron') + + print('>> deploying') + self.deploy_function('run_all_playlists') + + # all stats refresh cron job + def do_playlist_stats(self, args): + self.prepare_stage() + self.prepare_main('cron') + + print('>> deploying') + self.deploy_function('run_all_playlist_stats') + + # all tags cron job + def do_tags_cron(self, args): + self.prepare_stage() + self.prepare_main('cron') + + print('>> deploying') + self.deploy_function('run_all_tags') + + # redeploy all cron job functions + def do_all_cron(self, args): + self.prepare_stage() + self.prepare_main('cron') + + print('>> deploying playlists') + self.deploy_function('run_all_playlists') + print('>> deploying stats') + self.deploy_function('run_all_playlist_stats') + print('>> deploying tags') + self.deploy_function('run_all_tags') + def do_exit(self, args): exit(0) diff --git a/main.cron.py b/main.cron.py new file mode 100644 index 0000000..dd7f8e3 --- /dev/null +++ b/main.cron.py @@ -0,0 +1,13 @@ +from music.cloud.tasks import update_all_user_playlists, refresh_all_user_playlist_stats, update_all_user_tags + + +def run_all_playlists(event, context): + update_all_user_playlists() + + +def run_all_playlist_stats(event, context): + refresh_all_user_playlist_stats() + + +def run_all_tags(event, context): + update_all_user_tags() diff --git a/music/api/api.py b/music/api/api.py index 71adacb..da22a32 100644 --- a/music/api/api.py +++ b/music/api/api.py @@ -8,7 +8,7 @@ import logging from datetime import datetime from music.api.decorators import login_required, login_or_basic_auth, \ - admin_required, gae_cron, cloud_task, validate_json, validate_args + admin_required, cloud_task, validate_json, validate_args, spotify_link_required from music.cloud import queue_run_user_playlist, offload_or_run_user_playlist from music.cloud.tasks import update_all_user_playlists, update_playlists @@ -289,16 +289,9 @@ def run_users(user=None): return jsonify({'message': 'executed all users', 'status': 'success'}), 200 -@blueprint.route('/playlist/run/users/cron', methods=['GET']) -@gae_cron -def run_users_cron(): - - update_all_user_playlists() - return jsonify({'status': 'success'}), 200 - - @blueprint.route('/playlist/image', methods=['GET']) @login_or_basic_auth +@spotify_link_required @validate_args(('name', str)) def image(user=None): diff --git a/music/api/spotfm.py b/music/api/spotfm.py index acc8ee0..04335df 100644 --- a/music/api/spotfm.py +++ b/music/api/spotfm.py @@ -4,7 +4,7 @@ import json import os from music.api.decorators import admin_required, login_or_basic_auth, lastfm_username_required, \ - spotify_link_required, cloud_task, gae_cron, validate_args + spotify_link_required, cloud_task, validate_args import music.db.database as database from music.cloud.tasks import refresh_all_user_playlist_stats, refresh_user_playlist_stats, refresh_playlist_task from music.tasks.refresh_lastfm_stats import refresh_lastfm_track_stats, \ @@ -140,13 +140,6 @@ def run_users(user=None): return jsonify({'message': 'executed all users', 'status': 'success'}), 200 -@blueprint.route('/playlist/refresh/users/cron', methods=['GET']) -@gae_cron -def run_users_task(): - refresh_all_user_playlist_stats() - return jsonify({'status': 'success'}), 200 - - @blueprint.route('/playlist/refresh/user', methods=['GET']) @login_or_basic_auth def run_user(user=None): diff --git a/music/api/tag.py b/music/api/tag.py index 08d7b16..87a1e91 100644 --- a/music/api/tag.py +++ b/music/api/tag.py @@ -4,9 +4,8 @@ import logging import os import json -from music.api.decorators import login_or_basic_auth, gae_cron, cloud_task +from music.api.decorators import login_or_basic_auth, cloud_task from music.cloud.function import update_tag as serverless_update_tag -from music.cloud.tasks import update_all_user_tags from music.tasks.update_tag import update_tag from music.model.tag import Tag @@ -152,11 +151,3 @@ def run_tag_task(): serverless_update_tag(username=payload['username'], tag_id=payload['tag_id']) return jsonify({'message': 'executed playlist', 'status': 'success'}), 200 - - -@blueprint.route('/tag/update/users/cron', methods=['GET']) -@gae_cron -def run_tags_cron(): - - update_all_user_tags() - return jsonify({'status': 'success'}), 200 diff --git a/src/js/Playlist/View/Edit.js b/src/js/Playlist/View/Edit.js index 457d001..11f3ba7 100644 --- a/src/js/Playlist/View/Edit.js +++ b/src/js/Playlist/View/Edit.js @@ -1,8 +1,8 @@ import React, { Component } from "react"; const axios = require('axios'); -import { Card, Button, CircularProgress, FormControl, TextField, InputLabel, Select, Checkbox, FormControlLabel, - CardActions, CardContent, Typography, Grid, MenuItem } from '@material-ui/core'; +import { Card, Button, CircularProgress, FormControl, TextField, InputLabel, Select, FormControlLabel, + CardActions, CardContent, Typography, Grid, MenuItem, Switch } from '@material-ui/core'; import { Delete } from '@material-ui/icons'; import { makeStyles } from '@material-ui/core/styles'; @@ -356,19 +356,19 @@ export class Edit extends Component{ + } labelPlacement="bottom" label="Shuffle"/> + } labelPlacement="bottom" label="Recommendations"/> + } labelPlacement="bottom" label="Library Tracks"/> @@ -428,14 +428,14 @@ export class Edit extends Component{ + } label="This Month" labelPlacement="bottom" /> + } label="Last Month" labelPlacement="bottom" @@ -474,6 +474,7 @@ export class Edit extends Component{ function ReferenceEntry(props) { return ; + // return {props.name}; } function ListBlock(props) { diff --git a/src/js/Tag/View.js b/src/js/Tag/View.js index 5e52a7d..89fc2f9 100644 --- a/src/js/Tag/View.js +++ b/src/js/Tag/View.js @@ -1,7 +1,7 @@ import React, { Component } from "react"; const axios = require('axios'); -import { Card, Button, CircularProgress, CardActions, CardContent, FormControl, InputLabel, Select, Typography, Grid, TextField, MenuItem, FormControlLabel, Checkbox } from '@material-ui/core'; +import { Card, Button, CircularProgress, CardActions, CardContent, FormControl, InputLabel, Select, Typography, Grid, TextField, MenuItem, FormControlLabel, Switch } from '@material-ui/core'; import { Delete } from '@material-ui/icons'; import { makeStyles } from '@material-ui/core/styles'; @@ -325,7 +325,7 @@ class View extends Component{ + } label="Time Tag" labelPlacement="bottom"