def post(self, session): """ Create a new show and set its first accepted episode and/or alternate names """ data = request.json series_name = data.get('series_name') normalized_name = series.normalize_series_name(series_name) matches = series.shows_by_exact_name(normalized_name, session=session) if matches: return {'status': 'error', 'message': 'Show `%s` already exist in DB' % series_name }, 500 show = series.Series() show.name = series_name session.add(show) ep_id = data.get('episode_identifier') alt_names = data.get('alternate_names') if ep_id: try: series.set_series_begin(show, ep_id) except ValueError as e: return {'status': 'error', 'message': e.args[0] }, 501 if alt_names: try: series.set_alt_names(alt_names, show, session) except PluginError as e: return {'status': 'error', 'message': e.value }, 502 return jsonify(get_series_details(show))
def put(self, show_id, session): """ Set the initial episode of an existing show """ try: show = series.show_by_id(show_id, session=session) except NoResultFound: return {'status': 'error', 'message': 'Show with ID %s not found' % show_id }, 404 data = request.json ep_id = data.get('episode_identifier') alt_names = data.get('alternate_names') if ep_id: try: series.set_series_begin(show, ep_id) except ValueError as e: return {'status': 'error', 'message': e.args[0] }, 501 if alt_names: try: series.set_alt_names(alt_names, show, session) except PluginError as e: return {'status': 'error', 'message': e.value }, 502 return jsonify(get_series_details(show))
def post(self, session): """ Create a new show and set its first accepted episode and/or alternate names """ data = request.json series_name = data.get('name') normalized_name = series.normalize_series_name(series_name) matches = series.shows_by_exact_name(normalized_name, session=session) if matches: raise Conflict('Show `%s` already exist in DB' % series_name) show = series.Series() show.name = series_name session.add(show) ep_id = data.get('begin_episode') alt_names = data.get('alternate_names') if ep_id: series.set_series_begin(show, ep_id) if alt_names: try: series.set_alt_names(alt_names, show, session) except PluginError as e: # Alternate name already exist for a different show raise Conflict(e.value) session.commit() rsp = jsonify(series_details(show, begin=ep_id is not None)) rsp.status_code = 201 return rsp
def on_task_output(self, task, config): if not (config and task.accepted): return for entry in task.accepted: if entry.get('series_name') and entry.get('series_id'): fshow = task.session.query(Series).filter(Series.name == entry['series_name']).first() if not fshow: fshow = Series() fshow.name = entry['series_name'] task.session.add(fshow) try: set_series_begin(fshow, entry['series_id']) except ValueError as e: self.log.error('An error occurred trying to set the series first episode: ' % e) self.log.info('First episode for "%s" set to %s' % (entry['series_name'], entry['series_id']))
def on_task_output(self, task, config): if not (config and task.accepted): return for entry in task.accepted: if entry.get('series_name') and entry.get('series_id'): fshow = task.session.query(Series).filter(Series.name == entry['series_name']).first() if not fshow: fshow = Series() fshow.name = entry['series_name'] task.session.add(fshow) try: set_series_begin(fshow, entry['series_id']) except ValueError as e: self.log.error('An error occurred trying to set begin for %s: %s' % (entry['series_name'], e)) self.log.info('First episode for "%s" set to %s' % (entry['series_name'], entry['series_id']))
def begin(manager, options): series_name = options.series_name series_name = series_name.replace(r'\!', '!') normalized_name = normalize_series_name(series_name) with Session() as session: series = shows_by_exact_name(normalized_name, session) if options.forget: if not series: console('Series `%s` was not found in the database.' % series_name) else: series = series[0] series.begin = None console('The begin episode for `%s` has been forgotten.' % series.name) session.commit() manager.config_changed() elif options.episode_id: ep_id = options.episode_id if not series: console('Series not yet in database. Adding `%s`.' % series_name) series = Series() series.name = series_name session.add(series) else: series = series[0] try: _, entity_type = set_series_begin(series, ep_id) except ValueError as e: console(e) else: if entity_type == 'season': console('`%s` was identified as a season.' % ep_id) ep_id += 'E01' console('Releases for `%s` will be accepted starting with `%s`.' % (series.name, ep_id)) session.commit() manager.config_changed()
def begin(manager, options): series_name = options.series_name ep_id = options.episode_id with Session() as session: series = shows_by_name(series_name, session)[0] if not series: console('Series not yet in database, adding `%s`' % series_name) series = Series() series.name = series_name session.add(series) try: set_series_begin(series, ep_id) except ValueError as e: console(e) else: console('Episodes for `%s` will be accepted starting with `%s`' % (series.name, ep_id)) session.commit() manager.config_changed()
def put(self, show_id, session): """ Set the initial episode of an existing show """ try: show = series.show_by_id(show_id, session=session) except NoResultFound: raise NotFoundError('Show with ID %s not found' % show_id) data = request.json ep_id = data.get('begin_episode') alt_names = data.get('alternate_names') if ep_id: series.set_series_begin(show, ep_id) if alt_names: try: series.set_alt_names(alt_names, show, session) except PluginError as e: # Alternate name already exist for a different show raise Conflict(e.value) return jsonify(series_details(show, begin=ep_id is not None))
def post(self, name, session): """ Create a new show and set its first accepted episode """ normalized_name = series.normalize_series_name(name) matches = series.shows_by_exact_name(normalized_name, session=session) if matches: return { 'status': 'error', 'message': 'Show `%s` already exist in DB' % name }, 500 show = series.Series() show.name = name session.add(show) data = request.json ep_id = data.get('episode_identifier') try: series.set_series_begin(show, ep_id) except ValueError as e: return {'status': 'error', 'message': e.args[0]}, 400 return jsonify(get_series_details(show))
def series_begin(manager): if not manager.options.series_begin: return manager.disable_tasks() series_name, ep_id = manager.options.series_begin session = Session() series = session.query(Series).filter(Series.name == series_name).first() if not series: console('Unknown series `%s`' % series_name) return try: set_series_begin(series, ep_id) except ValueError as e: console(e) else: console('Episodes for `%s` will be accepted starting with `%s`' % (series.name, ep_id)) session.commit() finally: session.close()
def begin(self, manager, options): series_name = options.series_name ep_id = options.episode_id session = Session() series = session.query(Series).filter(Series.name == series_name).first() if not series: console('Series not yet in database, adding `%s`' % series_name) series = Series() series.name = series_name session.add(series) try: set_series_begin(series, ep_id) except ValueError as e: console(e) else: console('Episodes for `%s` will be accepted starting with `%s`' % (series.name, ep_id)) session.commit() finally: session.close() manager.config_changed()
def post(self, name, session): """ Create a new show and set its first accepted episode """ normalized_name = series.normalize_series_name(name) matches = series.shows_by_exact_name(normalized_name, session=session) if matches: return {'status': 'error', 'message': 'Show `%s` already exist in DB' % name }, 500 show = series.Series() show.name = name session.add(show) data = request.json ep_id = data.get('episode_identifier') try: series.set_series_begin(show, ep_id) except ValueError as e: return {'status': 'error', 'message': e.args[0] }, 400 return jsonify(get_series_details(show))
def put(self, show_id, session): """ Set the initial episode of an existing show """ try: show = series.show_by_id(show_id, session=session) except NoResultFound: return {'status': 'error', 'message': 'Show with ID %s not found' % show_id }, 404 data = request.json ep_id = data.get('episode_identifier') try: series.set_series_begin(show, ep_id) except ValueError as e: return {'status': 'error', 'message': e.args[0] }, 400 return jsonify({'status': 'success', 'message': 'Episodes will be accepted starting with `%s`' % ep_id, 'show': get_series_details(show) })
def begin(manager, options): series_name = options.series_name ep_id = options.episode_id normalized_name = normalize_series_name(series_name) with Session() as session: series = shows_by_exact_name(normalized_name, session) if not series: console('Series not yet in database, adding `%s`' % series_name) series = Series() series.name = series_name session.add(series) else: series = series[0] try: set_series_begin(series, ep_id) except ValueError as e: console(e) else: console('Episodes for `%s` will be accepted starting with `%s`' % (series.name, ep_id)) session.commit() manager.config_changed()
def begin(manager, options): series_name = options.series_name ep_id = options.episode_id session = Session() try: series = session.query(Series).filter(Series.name == series_name).first() if not series: console('Series not yet in database, adding `%s`' % series_name) series = Series() series.name = series_name session.add(series) try: set_series_begin(series, ep_id) except ValueError as e: console(e) else: console('Episodes for `%s` will be accepted starting with `%s`' % (series.name, ep_id)) session.commit() finally: session.close() manager.config_changed()
def begin(manager, options): series_name = options.series_name series_name = series_name.replace(r'\!', '!') ep_id = options.episode_id normalized_name = normalize_series_name(series_name) with Session() as session: series = shows_by_exact_name(normalized_name, session) if not series: console('Series not yet in database, adding `%s`' % series_name) series = Series() series.name = series_name session.add(series) else: series = series[0] try: set_series_begin(series, ep_id) except ValueError as e: console(e) else: console('Episodes for `%s` will be accepted starting with `%s`' % (series.name, ep_id)) session.commit() manager.config_changed()
def begin(manager, options): series_name = options.series_name series_name = series_name.replace(r'\!', '!') normalized_name = normalize_series_name(series_name) with Session() as session: series = shows_by_exact_name(normalized_name, session) if options.forget: if not series: console('Series `%s` was not found in the database.' % series_name) else: series = series[0] series.begin = None console('The begin episode for `%s` has been forgotten.' % series.name) session.commit() manager.config_changed() elif options.episode_id: ep_id = options.episode_id if not series: console('Series not yet in database. Adding `%s`.' % series_name) series = Series() series.name = series_name session.add(series) else: series = series[0] try: _, entity_type = set_series_begin(series, ep_id) except ValueError as e: console(e) else: if entity_type == 'season': console('`%s` was identified as a season.' % ep_id) ep_id += 'E01' console( 'Releases for `%s` will be accepted starting with `%s`.' % (series.name, ep_id)) session.commit() manager.config_changed()