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 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 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: return with Session() as session: for entry in task.accepted: if 'series_name' in entry and 'series_id' in entry: series_name = entry['series_name'].replace(r'\!', '!') normalized_name = normalize_series_name(series_name) series = shows_by_exact_name(normalized_name, session) if not series: log.info('Series not yet in database, adding `%s`' % series_name) series = Series() series.name = series_name session.add(series) else: series = series[0] try: add_series_entity(session, series, entry['series_id'], quality=entry['quality']) except ValueError as e: log.warn(e.args[0]) else: log.info('Added entity `%s` to series `%s`.' % (entry['series_id'], series.name.title()))
def add(manager, options): series_name = options.series_name entity_ids = options.entity_id quality = options.quality or os.environ.get(ENV_ADD_QUALITY, None) 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 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] for ent_id in entity_ids: try: add_series_entity(session, series, ent_id, quality=quality) except ValueError as e: console(e.args[0]) else: console('Added entity `%s` to series `%s`.' % (ent_id, series.name.title())) session.commit() 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 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 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 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()