def post(self): "Add or remove series from provided URL to bookmark list" if self.data['action'] not in ('add', 'remove'): raise PyError({'msg': 'invalid_action'}) series = Series.get_by_url(self.data['url']) if series is None: raise PyError({'msg': 'series_not_created'}) if self.data['action'] == 'add': if not self.user.bookmark_series(series): raise PyError({'msg': 'series_already_bookmarked'}) return {} else: if not self.user.unbookmark_series(series): raise PyError({'msg': 'series_not_bookmarked'}) return {}
def create_or_get_series(url, no_update=False): """ Fetch info and create Series record if not already created. Returns Series object. """ # Check if this url is supported site = sites.get_site(url) if site is None: raise PyError({'msg': 'unsupported_url'}) # Check if series is already in db series_record = Series.get_by_url(url) # Skip reloading series info if updated recently if series_record and (no_update or series_record.is_fresh()): return series_record # Fetch series info (name, thumburl, chapter list, etc.) series_page = site.fetch_manga_seed_page(url) series = site.series_info(series_page) # Create new series if not in db yet if series_record is None: series_record = Series.create(url, site.netlocs[0], series['name'], series['thumb_url'], series['chapters'], series['status'], series['tags'], series['description'], series['authors']) else: # Update existing Series db record fields = ('site', 'name', 'thumb_url', 'chapters', 'status', 'tags', 'description', 'authors') params = {field: series[field] for field in fields} update_series(series_record, **params) return series_record