def new_mediatype(): if 'username' not in session: return render_template('login.html', form=LoginForm()) else: mediatypes = dbmanager.find_all_mediatypes() if mediatypes is None: return render_template("create_mediatype.html", pagename="Create Media Type", search_form=SearchForm(), logon_user=session['username'], mediatypeform=MediaTypeForm()) else: mediatype_list = [] for m in mediatypes: if m.parent == 0: mediatype_list.append({ "id": m.id, "name": m.name, "parent_name": "None", "parent_id": 0 }) else: p_type = dbmanager.find_mediatype_by_id(m.parent) mediatype_list.append({ "id": m.id, "name": m.name, "parent_name": p_type.name, "parent_id": p_type.id }) return render_template("create_mediatype.html", pagename="Create Media Type", search_form=SearchForm(), logon_user=session['username'], mediatypeform=MediaTypeForm())
def search_result(statistics_type): if 'username' not in session: return render_template('login.html', form=LoginForm()) else: statistics_result = [] result_number = 0 if statistics_type == "movieofactor": db_all_actor_with_movie = dbmanager.get_all_actor_by_movie() for actor_id, movies in db_all_actor_with_movie: result_number = result_number + 1 actor = dbmanager.find_actor_by_id(actor_id) statistics_result.append({ "result_number": result_number, "name": actor.name, "name_url": "/actor/detail/%d" % actor_id, "count": movies }) if statistics_type == "ebookoftype": db_all_ebook_with_type = dbmanager.get_all_ebook_by_type() for ebook_type_id, ebooks in db_all_ebook_with_type: result_number = result_number + 1 m_type = dbmanager.find_mediatype_by_id(ebook_type_id) statistics_result.append({ "result_number": result_number, "name": m_type.name, "name_url": "#", "count": ebooks }) return render_template("statistics_result.html", pagename="Statistics Page", search_form=SearchForm(), logon_user=session['username'], statistics_result=statistics_result)
def update_mediatype(mediatype_id): if 'username' not in session: return render_template('login.html', form=LoginForm()) cur_mediatype = dbmanager.find_mediatype_by_id(mediatype_id) mediatypeform = MediaTypeForm() if mediatypeform.validate_on_submit(): mediatype = dbmanager.find_mediatype_by_name( mediatypeform.name.data.strip()) if len(mediatype) == 0: logger.info("Update new media type to db.") op_result = dbmanager.update_mediatype( mediatype_id, mediatypeform.name.data.strip(), mediatypeform.parent.data) logger.info("Update new media type complete, status: %s." % op_result["op_status"]) return redirect("/mediatype/all") else: logger.info("Media type is existed.") mediatypeform.name.errors.append("Media Type is existed.") return render_template("edit_mediatype.html", pagename="Edit Media Type", search_form=SearchForm(), logon_user=session['username'], mediatypeform=mediatypeform, cur_mediatype=cur_mediatype) else: return render_template("edit_mediatype.html", pagename="Edit Media Type", search_form=SearchForm(), logon_user=session['username'], mediatypeform=mediatypeform, cur_mediatype=cur_mediatype)
def storage_index(): if 'username' not in session: return render_template('login.html', form=LoginForm()) else: storages = dbmanager.find_all_storages() if storages is None: return render_template("storages.html", pagename="Storages", search_form=SearchForm(), logon_user=session['username']) else: storage_list = [] for s in storages: mediatype = dbmanager.find_mediatype_by_id(s.mediatype) storage_list.append({ "id": s.id, "name": s.name, "mediatype": mediatype.name, "size": s.size }) return render_template("storages.html", pagename="Storage List", search_form=SearchForm(), logon_user=session['username'], storage_list=storage_list)
def movie_works(actor_id): if 'username' not in session: return render_template('login.html', form=LoginForm()) else: movies = [] movie_actor_list = dbmanager.find_movie_actor_by_actor_id(actor_id) for m_a in movie_actor_list: movie = dbmanager.find_movie_by_id(m_a.movie_id) if movie is None: pass else: movies.append(movie) if len(movies) == 0: return render_template("movies.html", pagename="Movie", search_form=SearchForm(), logon_user=session['username']) else: movies_list = [] for m in movies: types_list = [] for m_type in dbmanager.find_movie_type_by_movie_id(m.id): tmp_type = dbmanager.find_mediatype_by_id(m_type.type_id) types_list.append(tmp_type.name) types = ", ".join(types_list) actors_list = [] for m_actor in dbmanager.find_movie_actor_by_movie_id(m.id): tmp_actor = dbmanager.find_actor_by_id(m_actor.actor_id) actors_list.append(tmp_actor.name) actors = ", ".join(actors_list) storage = dbmanager.find_storage_by_id(m.storage) tmp_movie = { "id": m.id, "name": m.name, "provider": m.provider, "type": types, "actors": actors, "storage": storage.name } movies_list.append(tmp_movie) actor = dbmanager.find_actor_by_id(actor_id) return render_template("movies.html", pagename="Movie Works of %s" % actor.name.title(), search_form=SearchForm(), logon_user=session['username'], movies=movies_list)
def delete_mediatype(mediatype_id): if 'username' not in session: return render_template('login.html', form=LoginForm()) mediatype = dbmanager.find_mediatype_by_id(mediatype_id) if mediatype is None: logger.error("There is not any media type match id %d." % mediatype_id) return redirect("/mediatype/all") else: op_result = dbmanager.delete_mediatype(mediatype_id) logger.info("Delete the media type with id: %d success." % mediatype_id) return redirect("/mediatype/all")
def delete_confirm(actor_id): if 'username' not in session: return render_template('login.html', form=LoginForm()) cur_actor = dbmanager.find_actor_by_id(actor_id) if cur_actor is None: logger.error("There is not any actor match id %d." % actor_id) return redirect("/actor/all/1") else: if cur_actor.sex == 0: sex = "Male" else: sex = 'Female' # int_list = splitStrIdToInteger(cur_actor.type) # str_list = [] # for i_type in int_list: # db_mediatype = dbmanager.find_mediatype_by_id(i_type) # str_list.append(db_mediatype.name) # type_list = ", ".join(str_list) str_list = [] for i_type in dbmanager.find_actor_type_by_actor_id(actor_id): db_mediatype = dbmanager.find_mediatype_by_id(i_type.type_id) str_list.append(db_mediatype.name) type_list = ", ".join(str_list) if cur_actor.description == "": description = "The author is lazy, there is nothing for this actor yet, you can edit and add some description for her(him)." else: description = cur_actor.description db_thumb = dbmanager.find_photo_by_id(cur_actor.thumb) if db_thumb.path == "": thumb = MEDIA_URL + db_thumb.name + db_thumb.ext else: thumb = db_thumb.path actor = { "id": actor_id, "name": cur_actor.name, "sex": sex, "country": cur_actor.country, "description": description, "type_list": type_list, "thumb": thumb } return render_template("delete_actor_confirm.html", pagename="Actor Delete Confirm", search_form=SearchForm(), logon_user=session["username"], actor=actor)
def delete_confirm(mediatype_id): if 'username' not in session: return render_template('login.html', form=LoginForm()) mediatype = dbmanager.find_mediatype_by_id(mediatype_id) if mediatype is None: logger.error("There is not any media type match id %d." % mediatype_id) return redirect("/mediatype/all") else: return render_template("delete_mediatype_confirm.html", pagename="Delete Media Type Confirm", search_form=SearchForm(), logon_user=session['username'], cur_mediatype=mediatype)
def index(): if 'username' in session: ebook_count = dbmanager.get_count_of_all_ebooks() actor_count = dbmanager.get_count_of_all_actors() photo_count = dbmanager.get_count_of_all_photos() movie_count = dbmanager.get_count_of_all_movies() r_movie_count = dbmanager.get_count_of_all_movie_type_with_type( MOVIE_TYPE["REGULAR"]) a_movie_count = dbmanager.get_count_of_all_movie_type_with_type( MOVIE_TYPE["ADULT"]) top5_actor_with_movie = [] db_top5_actor_with_movie = dbmanager.get_top5_actor_by_movie() for actor_id, movies in db_top5_actor_with_movie: actor = dbmanager.find_actor_by_id(actor_id) top5_actor_with_movie.append({"name": actor.name, "count": movies}) top5_ebook_with_type = [] db_top5_ebook_with_type = dbmanager.get_top5_ebook_by_type() for ebook_type_id, ebooks in db_top5_ebook_with_type: m_type = dbmanager.find_mediatype_by_id(ebook_type_id) top5_ebook_with_type.append({"name": m_type.name, "count": ebooks}) dash = { "ebook_count": ebook_count, "actor_count": actor_count, "photo_count": photo_count, "movie_count": movie_count, "r_movie_percent": round(float(r_movie_count) / float(movie_count), 3) * 100, "a_movie_percent": round(float(a_movie_count) / float(movie_count), 3) * 100, "top5_actor": top5_actor_with_movie, "top5_ebook": top5_ebook_with_type } return render_template('index.html', search_form=SearchForm(), logon_user=session['username'], dash=dash) else: return render_template('login.html', form=LoginForm())
def edit_mediatype(mediatype_id): if 'username' not in session: return render_template('login.html', form=LoginForm()) mediatype = dbmanager.find_mediatype_by_id(mediatype_id) if mediatype is None: logger.error("There is not any media type match id %d." % mediatype_id) return redirect("/mediatype/all") else: mediatypeform = MediaTypeForm() return render_template("edit_mediatype.html", pagename="Edit Media Type", search_form=SearchForm(), logon_user=session['username'], mediatypeform=mediatypeform, cur_mediatype=mediatype)
def delete_confirm(storage_id): if 'username' not in session: return render_template('login.html', form=LoginForm()) storage = dbmanager.find_storage_by_id(storage_id) if storage is None: logger.error("There is not any storage match id %d." % storage_id) return redirect("/storage/all") else: mediatype = dbmanager.find_mediatype_by_id(storage.mediatype) cur_storage = { "id": storage.id, "name": storage.name, "mediatype_name": mediatype.name, "size": storage.size } return render_template("delete_storage_confirm.html", pagename="Delete Storage Confirm", search_form=SearchForm(), logon_user=session['username'], cur_storage=cur_storage)
def confirm_delete_ebook(ebook_id): if 'username' not in session: return render_template('login.html', form=LoginForm()) db_ebook = dbmanager.find_ebook_by_id(ebook_id) if db_ebook is None: logger.errof("There is not any ebook matching id %d found." % ebook_id) return redirect("/ebook/all/1") else: types_list = [] for e_type in dbmanager.find_ebook_type_by_ebook_id(db_ebook.id): tmp_type = dbmanager.find_mediatype_by_id(e_type.type_id) types_list.append(tmp_type.name) types = ", ".join(types_list) storage = dbmanager.find_storage_by_id(db_ebook.storage) cur_ebook = {"id": db_ebook.id, "name": db_ebook.name, "type": types, "actors": db_ebook.actors, "storage": storage.name, "path": db_ebook.file_path} return render_template("delete_ebook_confirm.html", pagename="Delete eBook Confirm", search_form=SearchForm(), logon_user=session['username'], cur_ebook=cur_ebook)
def movie_index(ebook_type, page_id): if 'username' not in session: return render_template('login.html', form=LoginForm()) else: ebooks = None if ebook_type == "all": count_ebooks = dbmanager.get_count_of_all_ebooks() if count_ebooks < EBOOK_PER_PAGE: ebooks = dbmanager.find_all_ebooks_by_page(per_page=count_ebooks, page=page_id) else: ebooks = dbmanager.find_all_ebooks_by_page(per_page=EBOOK_PER_PAGE, page=page_id) if ebook_type == "development": count_ebooks = dbmanager.get_count_of_all_ebooks_with_type(EBOOK_TYPE["DEVELOPMENT"]) if count_ebooks < EBOOK_PER_PAGE: ebooks = dbmanager.find_all_ebooks_with_type_by_page(EBOOK_TYPE["DEVELOPMENT"], per_page=count_ebooks, page=page_id) else: ebooks = dbmanager.find_all_ebooks_with_type_by_page(EBOOK_TYPE["DEVELOPMENT"], per_page=EBOOK_PER_PAGE, page=page_id) if ebook_type == "entertainment": count_ebooks = dbmanager.get_count_of_all_ebooks_with_type(EBOOK_TYPE["ENTERTAINMENT"]) if count_ebooks < EBOOK_PER_PAGE: ebooks = dbmanager.find_all_ebooks_with_type_by_page(EBOOK_TYPE["ENTERTAINMENT"], per_page=count_ebooks, page=page_id) else: ebooks = dbmanager.find_all_ebooks_with_type_by_page(EBOOK_TYPE["ENTERTAINMENT"], per_page=EBOOK_PER_PAGE, page=page_id) if ebook_type == "python": count_ebooks = dbmanager.get_count_of_all_ebooks_with_type(EBOOK_TYPE["PYTHON"]) if count_ebooks < EBOOK_PER_PAGE: ebooks = dbmanager.find_all_ebooks_with_type_by_page(EBOOK_TYPE["PYTHON"], per_page=count_ebooks, page=page_id) else: ebooks = dbmanager.find_all_ebooks_with_type_by_page(EBOOK_TYPE["PYTHON"], per_page=EBOOK_PER_PAGE, page=page_id) if ebook_type == "golang": count_ebooks = dbmanager.get_count_of_all_ebooks_with_type(EBOOK_TYPE["GOLANG"]) if count_ebooks < EBOOK_PER_PAGE: ebooks = dbmanager.find_all_ebooks_with_type_by_page(EBOOK_TYPE["GOLANG"], per_page=count_ebooks, page=page_id) else: ebooks = dbmanager.find_all_ebooks_with_type_by_page(EBOOK_TYPE["GOLANG"], per_page=EBOOK_PER_PAGE, page=page_id) if ebook_type == "kubernetes": count_ebooks = dbmanager.get_count_of_all_ebooks_with_type(EBOOK_TYPE["KUBERNETES"]) if count_ebooks < EBOOK_PER_PAGE: ebooks = dbmanager.find_all_ebooks_with_type_by_page(EBOOK_TYPE["KUBERNETES"], per_page=count_ebooks, page=page_id) else: ebooks = dbmanager.find_all_ebooks_with_type_by_page(EBOOK_TYPE["KUBERNETES"], per_page=EBOOK_PER_PAGE, page=page_id) if ebook_type == "database": count_ebooks = dbmanager.get_count_of_all_ebooks_with_type(EBOOK_TYPE["DATABASE"]) if count_ebooks < EBOOK_PER_PAGE: ebooks = dbmanager.find_all_ebooks_with_type_by_page(EBOOK_TYPE["DATABASE"], per_page=count_ebooks, page=page_id) else: ebooks = dbmanager.find_all_ebooks_with_type_by_page(EBOOK_TYPE["DATABASE"], per_page=EBOOK_PER_PAGE, page=page_id) if ebook_type == "devops": count_ebooks = dbmanager.get_count_of_all_ebooks_with_type(EBOOK_TYPE["DEVOPS"]) if count_ebooks < EBOOK_PER_PAGE: ebooks = dbmanager.find_all_ebooks_with_type_by_page(EBOOK_TYPE["DEVOPS"], per_page=count_ebooks, page=page_id) else: ebooks = dbmanager.find_all_ebooks_with_type_by_page(EBOOK_TYPE["DEVOPS"], per_page=EBOOK_PER_PAGE, page=page_id) if ebook_type == "system": count_ebooks = dbmanager.get_count_of_all_ebooks_with_type(EBOOK_TYPE["SYSTEM"]) if count_ebooks < EBOOK_PER_PAGE: ebooks = dbmanager.find_all_ebooks_with_type_by_page(EBOOK_TYPE["SYSTEM"], per_page=count_ebooks, page=page_id) else: ebooks = dbmanager.find_all_ebooks_with_type_by_page(EBOOK_TYPE["SYSTEM"], per_page=EBOOK_PER_PAGE, page=page_id) if ebooks is None: return render_template("ebooks.html", pagename="eBooks", search_form=SearchForm(), logon_user=session['username']) else: min_item = (page_id - 1) * EBOOK_PER_PAGE + 1 if page_id * EBOOK_PER_PAGE >= count_ebooks: max_item = count_ebooks else: max_item = page_id * EBOOK_PER_PAGE ebooks_list = [] for b in ebooks.items: types_list = [] for e_type in dbmanager.find_ebook_type_by_ebook_id(b.id): tmp_type = dbmanager.find_mediatype_by_id(e_type.type_id) types_list.append(tmp_type.name) types = ", ".join(types_list) actors = b.actors storage = dbmanager.find_storage_by_id(b.storage) tmp_book = {"id": b.id, "name": b.name, "type": types, "actors": actors, "storage": storage.name, "path": b.file_path} ebooks_list.append(tmp_book) return render_template("ebooks.html", pagename="%s eBooks" % ebook_type.title(), logon_user=session['username'], ebooks=ebooks_list, count_movies=count_ebooks, min_item=min_item, max_item=max_item, has_prev=ebooks.has_prev, has_next=ebooks.has_next, prev_num=ebooks.prev_num, page=ebooks.page, pages=ebooks.pages, next_num=ebooks.next_num, search_form=SearchForm())
def delete_movie_confirm(movie_id): if 'username' not in session: return render_template('login.html', form=LoginForm()) db_movie = dbmanager.find_movie_by_id(movie_id) if db_movie is None: logger.error("There is not any movie with id %d is existed" % movie_id) return redirect("/movie/all/1") else: snapshot_list = [] for sid in dbmanager.find_movie_photo_by_movie_id(db_movie.id): tmp_snapshot = dbmanager.find_photo_by_id(sid.photo_id) if tmp_snapshot is None: logger.error("The snapshot with id %d is not existed." % sid.photo_id) continue else: if os.path.exists( os.path.join(MEDIA_LOCAL_PATH, tmp_snapshot.name + tmp_snapshot.ext)): snapshot_list.append({ "id": tmp_snapshot.id, "url": tmp_snapshot.path }) else: snapshot_list.append({ "id": tmp_snapshot.id, "url": MOVIE_DEFAULT_SNAP_URL }) types_list = [] type_list = dbmanager.find_movie_type_by_movie_id(db_movie.id) for tid in type_list: tmp_type = dbmanager.find_mediatype_by_id(tid.type_id) types_list.append(tmp_type.name) types = ", ".join(types_list) actors_list = [] for aid in dbmanager.find_movie_actor_by_movie_id(db_movie.id): tmp_actor = dbmanager.find_actor_by_id(aid.actor_id) actors_list.append(tmp_actor.name) actors = ", ".join(actors_list) storage = dbmanager.find_storage_by_id(db_movie.storage) cur_cover = dbmanager.find_photo_by_id(db_movie.cover) if cur_cover.path == "": logger.error("The snapshot with id %d is not existed." % sid) cover = MOVIE_DEFAULT_COVER_URL else: if os.path.exists( os.path.join(MEDIA_LOCAL_PATH, cur_cover.name + cur_cover.ext)): cover = cur_cover.path else: cover = MOVIE_DEFAULT_COVER_URL movie = { "id": db_movie.id, "name": db_movie.name, "type": types, "provider": db_movie.provider, "actors": actors, "storage": storage.name, "filepath": db_movie.file_path, "cover": cover, "snapshots": snapshot_list } return render_template("delete_movie_confirm.html", pagename="Movie Delete Confirm", search_form=SearchForm(), logon_user=session["username"], movie=movie)
def movie_index(movie_type, page_id): if 'username' not in session: return render_template('login.html', form=LoginForm()) else: movies = None if movie_type == "all": count_movies = dbmanager.get_count_of_all_movies() if count_movies < MOVIE_PER_PAGE: movies = dbmanager.find_all_movie_by_page( per_page=count_movies, page=page_id) else: movies = dbmanager.find_all_movie_by_page( per_page=MOVIE_PER_PAGE, page=page_id) if movie_type == "regular": count_movies = dbmanager.get_count_of_all_movies_with_type( MOVIE_TYPE["REGULAR"]) if count_movies < MOVIE_PER_PAGE: movies = dbmanager.find_all_movie_with_type_by_page( MOVIE_TYPE["REGULAR"], per_page=count_movies, page=page_id) else: movies = dbmanager.find_all_movie_with_type_by_page( MOVIE_TYPE["REGULAR"], per_page=MOVIE_PER_PAGE, page=page_id) if movie_type == "adult": count_movies = dbmanager.get_count_of_all_movies_with_type( MOVIE_TYPE["ADULT"]) if count_movies < MOVIE_PER_PAGE: movies = dbmanager.find_all_movie_with_type_by_page( MOVIE_TYPE["ADULT"], per_page=count_movies, page=page_id) else: movies = dbmanager.find_all_movie_with_type_by_page( MOVIE_TYPE["ADULT"], per_page=MOVIE_PER_PAGE, page=page_id) if movies is None: return render_template("movies.html", pagename="Movie", search_form=SearchForm(), logon_user=session['username']) else: min_item = (page_id - 1) * MOVIE_PER_PAGE + 1 if page_id * MOVIE_PER_PAGE >= count_movies: max_item = count_movies else: max_item = page_id * MOVIE_PER_PAGE movies_list = [] for m in movies.items: types_list = [] for m_type in dbmanager.find_movie_type_by_movie_id(m.id): tmp_type = dbmanager.find_mediatype_by_id(m_type.type_id) types_list.append(tmp_type.name) types = ", ".join(types_list) actors_list = [] for m_actor in dbmanager.find_movie_actor_by_movie_id(m.id): tmp_actor = dbmanager.find_actor_by_id(m_actor.actor_id) actors_list.append(tmp_actor.name) actors = ", ".join(actors_list) storage = dbmanager.find_storage_by_id(m.storage) tmp_movie = { "id": m.id, "name": m.name, "provider": m.provider, "type": types, "actors": actors, "storage": storage.name } movies_list.append(tmp_movie) return render_template("movies.html", pagename="%s Movies" % movie_type.title(), logon_user=session['username'], movies=movies_list, count_movies=count_movies, min_item=min_item, max_item=max_item, has_prev=movies.has_prev, has_next=movies.has_next, prev_num=movies.prev_num, page=movies.page, pages=movies.pages, next_num=movies.next_num, search_form=SearchForm())