Browse Source

fix unset detail_id in tmdb:create_path_mapping()

master
cinnaboot 6 years ago
parent
commit
e0778261ce
  1. 44
      video_metadata/schema.sql
  2. 4
      video_metadata/static/file_listing.js
  3. 17
      video_metadata/views/tmdb.py

44
video_metadata/schema.sql

@ -21,8 +21,8 @@ CREATE TABLE query_details(
DROP TABLE IF EXISTS query_mapping; DROP TABLE IF EXISTS query_mapping;
CREATE TABLE query_mapping( CREATE TABLE query_mapping(
query_id integer, query_id integer not null,
detail_id integer, detail_id integer not null,
foreign key(query_id) references query_cache(query_id), foreign key(query_id) references query_cache(query_id),
foreign key(detail_id) references query_details(detail_id) foreign key(detail_id) references query_details(detail_id)
); );
@ -35,43 +35,3 @@ CREATE TABLE path_cache(
foreign key(detail_id) references query_details(detail_id) foreign key(detail_id) references query_details(detail_id)
); );
DROP TABLE IF EXISTS movie_genres;
CREATE TABLE movie_genres(
id integer primary key not null,
name text
);
DROP TABLE IF EXISTS tv_genres;
CREATE TABLE tv_genres(
id integer primary key not null,
name text
);
DROP TABLE IF EXISTS movie_genre_mapping;
CREATE TABLE movie_genre_mapping(
genre_id integer,
movie_id integer,
foreign key(genre_id) references movie_genres(genre_id),
foreign key(movie_id) references query_details(movie_id)
);
DROP TABLE IF EXISTS actor_details;
CREATE TABLE actor_details(
actor_id integer primary key not null,
name text,
date_of_birth date,
poster_path text
);
DROP TABLE IF EXISTS actor_movie_mapping;
CREATE TABLE actor_movie_mapping(
movie_id integer,
actor_id integer,
character_name text,
foreign key(movie_id) references query_details(movie_id),
foreign key(actor_id) references actor_details(actor_id)
);
-- TODO: tv seasons, episodes

4
video_metadata/static/file_listing.js

@ -84,6 +84,10 @@ function openQueryDialog(dataset, element) {
+ '?query=' + dataset.base_name + '?query=' + dataset.base_name
+ '&rel_path=' + dataset.rel_path; + '&rel_path=' + dataset.rel_path;
fetchJSON(query_str, function(json) { fetchJSON(query_str, function(json) {
console.log('openQueryDialog(), ' + query_str);
console.log(json);
if (json.errors) { if (json.errors) {
for (let e of json.errors) for (let e of json.errors)
logError(e) logError(e)

17
video_metadata/views/tmdb.py

@ -247,6 +247,10 @@ def create_path_mapping():
and 'detail_id' in request.form and 'detail_id' in request.form
): ):
errors.append(f'required parameters: rel_path, id') errors.append(f'required parameters: rel_path, id')
elif request.form['rel_path'] is '':
errors.append('rel_path is empty')
elif request.form['detail_id'] is '0':
errors.append('detail_id is unset')
else: else:
detail_id = request.form['detail_id'] detail_id = request.form['detail_id']
rel_path = request.form['rel_path'] rel_path = request.form['rel_path']
@ -292,12 +296,6 @@ def doQueryAlgorithm(query:query_data) -> dict:
except json.JSONDecodeError as e: except json.JSONDecodeError as e:
errors.append(e) errors.append(e)
# TODO: testing ############
errors.extend(query.errors)
errors.extend(response.errors)
return {'errors': errors, 'results': view_results}
###########################
if response.parsed_response and 'total_results' in response.parsed_response: if response.parsed_response and 'total_results' in response.parsed_response:
response.result_count = response.parsed_response['total_results'] response.result_count = response.parsed_response['total_results']
@ -390,6 +388,10 @@ def makeLocalQuery(query_obj):
def buildViewResult(db_row): def buildViewResult(db_row):
if not db_row:
current_app.logger.error('empty db_row parameter')
return None
vr = view_result() vr = view_result()
vr.detail_id = db_row['detail_id'] vr.detail_id = db_row['detail_id']
vr.media_type = db_row['media_type'] vr.media_type = db_row['media_type']
@ -530,6 +532,9 @@ def storeTMDBQueryResults(query_obj, result_list):
(r.id, r.media_type, r.title, r.overview, r.release_date, r.original_language, r.poster_path) (r.id, r.media_type, r.title, r.overview, r.release_date, r.original_language, r.poster_path)
) )
# NOTE: need to set detail_id here to avoid a second query in create_path_mapping
r.detail_id = cur.lastrowid
cur.execute(f'INSERT INTO query_mapping(query_id, detail_id)' cur.execute(f'INSERT INTO query_mapping(query_id, detail_id)'
+ ' VALUES (?,?)', (query_id, cur.lastrowid) + ' VALUES (?,?)', (query_id, cur.lastrowid)
) )

Loading…
Cancel
Save