Skip to content

Commit

Permalink
Merge branch 'develop' into feature/fix-watched-null
Browse files Browse the repository at this point in the history
  • Loading branch information
OmgImAlexis authored Sep 9, 2018
2 parents a30e1d1 + a5ecaf3 commit 0ffd56e
Show file tree
Hide file tree
Showing 13 changed files with 79 additions and 28 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
- Fixed many release name parsing issues as a result of updating `guessit` ([#4244](https://github.com/pymedusa/Medusa/pull/4244))
- Fixed UI bugs in home page (when using "split home in tabs") and status page ([#5126](https://github.com/pymedusa/Medusa/pull/5126) + [#5127](https://github.com/pymedusa/Medusa/pull/5127))
- Fixed error due to `null` values in the episodes database table ([#5132](https://github.com/pymedusa/Medusa/pull/5132))
- Fixed extraneous calls to AniDB when navigating to any show's page ([#5166](https://github.com/pymedusa/Medusa/pull/5166))

-----

Expand Down
7 changes: 7 additions & 0 deletions dredd/api-description.yml
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,7 @@ paths:
description: Filter series based on paused status
type: boolean
- $ref: '#/parameters/detailed'
- $ref: '#/parameters/fetch'
- $ref: '#/parameters/page'
- $ref: '#/parameters/limit'
- $ref: '#/parameters/sort'
Expand Down Expand Up @@ -1829,6 +1830,12 @@ parameters:
required: false
description: Whether response should contain detailed information
type: boolean
fetch:
name: fetch
in: query
required: false
description: Whether response should fetch external information
type: boolean
page:
name: page
in: query
Expand Down
3 changes: 1 addition & 2 deletions medusa/server/api/v2/internal.py
Original file line number Diff line number Diff line change
Expand Up @@ -52,8 +52,7 @@ def http_get(self, resource, path_param=None):
{'func': resource_function_name, 'resource': resource})
return self._bad_request('{key} is a invalid resource'.format(key=resource))

data = resource_function()
return self._ok(data=data)
return resource_function()

# existingSeries
def resource_existing_series(self):
Expand Down
9 changes: 7 additions & 2 deletions medusa/server/api/v2/series.py
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,11 @@ def filter_series(current):

if not series_slug:
detailed = self._parse_boolean(self.get_argument('detailed', default=False))
data = [s.to_json(detailed=detailed) for s in Series.find_series(predicate=filter_series)]
fetch = self._parse_boolean(self.get_argument('fetch', default=False))
data = [
s.to_json(detailed=detailed, fetch=fetch)
for s in Series.find_series(predicate=filter_series)
]
return self._paginate(data, sort='title')

identifier = SeriesIdentifier.from_slug(series_slug)
Expand All @@ -61,7 +65,8 @@ def filter_series(current):
return self._not_found('Series not found')

detailed = self._parse_boolean(self.get_argument('detailed', default=True))
data = series.to_json(detailed=detailed)
fetch = self._parse_boolean(self.get_argument('fetch', default=False))
data = series.to_json(detailed=detailed, fetch=fetch)
if path_param:
if path_param not in data:
return self._bad_request("Invalid path parameter '{0}'".format(path_param))
Expand Down
38 changes: 24 additions & 14 deletions medusa/tv/series.py
Original file line number Diff line number Diff line change
Expand Up @@ -1965,8 +1965,13 @@ def __unicode__(self):
to_return += u'anime: {0}\n'.format(self.is_anime)
return to_return

def to_json(self, detailed=True):
"""Return JSON representation."""
def to_json(self, detailed=True, fetch=False):
"""
Return JSON representation.
:param detailed: Append seasons & episodes data as well
:param fetch: Fetch and append external data (for example AniDB release groups)
"""
bw_list = self.release_groups or BlackAndWhiteList(self)

data = {}
Expand Down Expand Up @@ -2018,22 +2023,27 @@ def to_json(self, detailed=True):
data['config']['defaultEpisodeStatus'] = self.default_ep_status_name
data['config']['aliases'] = list(self.aliases)
data['config']['release'] = {}
# These are for now considered anime-only options, as they query anidb for available release groups.
data['config']['release']['ignoredWords'] = self.release_ignore_words
data['config']['release']['requiredWords'] = self.release_required_words

# These are for now considered anime-only options
if self.is_anime:
data['config']['release']['blacklist'] = bw_list.blacklist
data['config']['release']['whitelist'] = bw_list.whitelist
try:
data['config']['release']['allgroups'] = get_release_groups_for_anime(self.name)
except AnidbAdbaConnectionException as error:
data['config']['release']['allgroups'] = []
log.warning(
'An anidb adba exception occurred when attempting to get the release groups for the show {show}'
'\nError: {error}',
{'show': self.name, 'error': error}
)

data['config']['release']['ignoredWords'] = self.release_ignore_words
data['config']['release']['requiredWords'] = self.release_required_words
# Fetch data from external sources
if fetch:
# These are for now considered anime-only options, as they query anidb for available release groups.
if self.is_anime:
try:
data['config']['release']['allgroups'] = get_release_groups_for_anime(self.name)
except AnidbAdbaConnectionException as error:
data['config']['release']['allgroups'] = []
log.warning(
'An anidb adba exception occurred when attempting to get the release groups for the show {show}'
'\nError: {error}',
{'show': self.name, 'error': error}
)

if detailed:
episodes = self.get_all_episodes()
Expand Down
2 changes: 1 addition & 1 deletion themes-default/slim/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@
"@babel/preset-env": "7.0.0",
"@babel/register": "7.0.0",
"@mapbox/stylelint-processor-arbitrary-tags": "0.2.0",
"@vue/test-utils": "1.0.0-beta.24",
"@vue/test-utils": "1.0.0-beta.25",
"ava": "1.0.0-beta.8",
"axios": "0.18.0",
"babel-loader": "8.0.2",
Expand Down
28 changes: 27 additions & 1 deletion themes-default/slim/src/store/modules/shows.js
Original file line number Diff line number Diff line change
Expand Up @@ -43,17 +43,43 @@ const getters = {
}
};

/**
* An object representing request parameters for getting a show from the API.
*
* @typedef {Object} ShowParameteres
* @property {string} indexer - The indexer name (e.g. `tvdb`)
* @property {string} id - The show ID on the indexer (e.g. `12345`)
* @property {boolean} detailed - Whether to fetch detailed information (seasons & episodes)
* @property {boolean} fetch - Whether to fetch external information (for example AniDB release groups)
*/
const actions = {
getShow(context, { indexer, id, detailed }) {
/**
* Get show from API and commit it to the store.
*
* @param {*} context - The store context.
* @param {ShowParameteres} parameters - Request parameters.
* @returns {Promise} The API response.
*/
getShow(context, { indexer, id, detailed, fetch }) {
const { commit } = context;
const params = {};
if (detailed !== undefined) {
params.detailed = Boolean(detailed);
}
if (fetch !== undefined) {
params.fetch = Boolean(fetch);
}
return api.get('/series/' + indexer + id, { params }).then(res => {
commit(ADD_SHOW, res.data);
});
},
/**
* Get shows from API and commit them to the store.
*
* @param {*} context - The store context.
* @param {ShowParameteres[]} shows - Shows to get. If not provided, gets the first 1000 shows.
* @returns {(undefined|Promise)} undefined if `shows` was provided or the API response if not.
*/
getShows(context, shows) {
const { commit, dispatch } = context;

Expand Down
3 changes: 2 additions & 1 deletion themes-default/slim/views/editShow.mako
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,8 @@ window.app = new Vue({
created() {
const { $store, seriesSlug } = this;
const params = { detailed: false }; // Don't get episodes
// Don't get episodes, but do get external information for AniDB release groups
const params = { detailed: false, fetch: true };
api.get('series/' + seriesSlug, { params }).then(response => {
this.series = Object.assign({}, this.series, response.data);
this.seriesLoaded = true;
Expand Down
6 changes: 3 additions & 3 deletions themes-default/slim/yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -708,9 +708,9 @@
source-map "^0.5.6"
vue-template-es2015-compiler "^1.6.0"

"@vue/test-utils@1.0.0-beta.24":
version "1.0.0-beta.24"
resolved "https://registry.yarnpkg.com/@vue/test-utils/-/test-utils-1.0.0-beta.24.tgz#da7c3165f49f57f23fdb98caccba0f511effb76f"
"@vue/test-utils@1.0.0-beta.25":
version "1.0.0-beta.25"
resolved "https://registry.yarnpkg.com/@vue/test-utils/-/test-utils-1.0.0-beta.25.tgz#4703076de3076bac42cdd242cd53e6fb8752ed8c"
dependencies:
lodash "^4.17.4"

Expand Down
2 changes: 1 addition & 1 deletion themes/dark/assets/js/vendors.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 2 additions & 1 deletion themes/dark/templates/editShow.mako

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading

0 comments on commit 0ffd56e

Please sign in to comment.