Beispiel #1
0
def crate_ebook():
    if 'username' not in session:
        return render_template('login.html', form=LoginForm())

    ebookform = eBookForm()
    if ebookform.validate_on_submit():
        new_name = ebookform.name.data.strip()
        if ebookform.actors.data.strip() == "":
            new_actors = "Anonymous Writer"
        else:
            new_actors = ebookform.actors.data.strip()
        new_types = combineIntegerToStr(ebookform.types.data)
        new_storage = ebookform.storage.data
        new_path = ebookform.storage_path.data.strip()
        
        op_save_ebook = dbmanager.save_ebook(name=new_name, actors=new_actors, mediatype=new_types, storage=new_storage, file_path=new_path)
        for type_id in ebookform.types.data:
            op_save_e_type = dbmanager.save_ebook_type(op_save_ebook["new_id"], type_id)

        if op_save_ebook["op_status"]:
            logger.info("Save new ebook success, new id is: %d" % op_save_ebook["new_id"])
            return redirect("/ebook/all/1")
        else:
            logger.error("There is some issue for saving new ebook.")
            return render_template("create_ebook.html", pagename="New eBook", search_form=SearchForm(), logon_ueer=session['username'], ebookform=ebookform)
    else:
        return render_template("create_ebook.html", pagename="New eBook", search_form=SearchForm(), logon_ueer=session['username'], ebookform=ebookform)
Beispiel #2
0
def create_storage():
    if 'username' not in session:
        return render_template('login.html', form=LoginForm())

    storageform = StorageForm()
    if storageform.validate_on_submit():
        storage = dbmanager.find_storage_by_name(storageform.name.data.strip())
        if len(storage) == 0:
            logger.info("Saving new media type to db.")
            op_result = dbmanager.save_storage(storageform.name.data.strip(),
                                               storageform.mediatype.data,
                                               float(storageform.size.data))
            logger.info("Save new storage complete, status: %s." %
                        op_result["op_status"])
            return redirect("/storage/all")
        else:
            logger.info("The storage with name %s is existed." %
                        storageform.name.data.strip())
            storageform.name.errors.append(
                "Storage with name '%s' is existed." %
                storageform.name.data.strip())
            return render_template("create_storage.html",
                                   pagename="Create Storage",
                                   search_form=SearchForm(),
                                   logon_user=session['username'],
                                   storageform=storageform)

    logger.error("Create new storage fail.")
    return render_template("create_storage.html",
                           pagename="Create Storage",
                           search_form=SearchForm(),
                           logon_user=session['username'],
                           storageform=storageform)
Beispiel #3
0
def edit_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.error("There is not any ebook match id %d." % ebook_id)
        return redirect("/ebook/all/1")
    else:
        ebookform = eBookForm(name=db_ebook.name, actors=db_ebook.actors, storage_path=db_ebook.file_path)
        return render_template("edit_ebook.html", pagename="Edit eBook", search_form=SearchForm(), logon_user=session['username'], ebookform=ebookform, ebook_id=ebook_id)
Beispiel #4
0
def delete_storge(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:
        op_result = dbmanager.delete_storage(storage_id)
        logger.info("Delete the storage with id: %d success." % storage_id)
        return redirect("/storage/all")
Beispiel #5
0
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")
Beispiel #6
0
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)
Beispiel #7
0
def save_photo(name, ext, content, photo_type=""):
    try:
        new_photo = Photo(name=name, ext=ext, content=content, type=photo_type)
        db.session.add(new_photo)
        db.session.commit()
        return {
            "err_msg": "Save photo success.",
            "obj": None,
            "op_status": True,
            "new_id": new_photo.id
        }
    except Exception as e:
        logger.error(e)
        return {"err_msg": "Save photo fail.", "obj": None, "op_status": False}
Beispiel #8
0
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)
Beispiel #9
0
def delete_actor(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:
        op_photo_delete = dbmanager.delete_photo(cur_actor.thumb)
        if op_photo_delete["op_status"]:
            logger.info("Delete photo with id %d is success." %
                        cur_actor.thumb)
        else:
            logger.error("Delete photo with id %d is fail." % cur_actor.thumb)

        for map_id in dbmanager.find_actor_type_by_actor_id(actor_id):
            op_mapping_delete = dbmanager.delete_actor_type(map_id.id)
            if op_mapping_delete["op_status"]:
                logger.info("Delete mapping with id %d is success." %
                            map_id.id)
            else:
                logger.error("Delete mapping with id %d is fail." % map_id.id)

        op_actor_delete = dbmanager.delete_actor(actor_id)
        if op_actor_delete["op_status"]:
            logger.info("Delete actor with id %d is success." % actor_id)
        else:
            logger.error("Delete actor with id %d fail." % actor_id)
    return redirect("/actor/all/1")
Beispiel #10
0
def save_storage(name, mediatype, size):
    try:
        new_storage = Storage(name=name, mediatype=mediatype, size=size)
        db.session.add(new_storage)
        db.session.commit()
        return {
            "err_msg": "Save stage success.",
            "obj": None,
            "op_status": True,
            "new_id": new_storage.id
        }
    except Exception as e:
        logger.error(e)
        return {"err_msg": "Save stage fail.", "obj": None, "op_status": False}
Beispiel #11
0
def delete_user(user_id):
    if 'username' not in session:
        return render_template('login.html', form=LoginForm())

    op_result = dbmanager.delete_user(user_id)

    if op_result["op_status"]:
        logger.info(op_result["err_msg"])
    else:
        logger.error(op_result["err_msg"])

    user_list = dbmanager.find_all_users()
    if user_list is None:
        return render_template("users.html", pagename="Users", logon_user=session['username'])
    else:
        return render_template("users.html", pagename="Users", logon_user=session['username'], users=user_list)
Beispiel #12
0
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)
Beispiel #13
0
def delete_ebook(ebook_id):
    if 'username' not in session:
        return render_template('login.html', form=LoginForm())

    # Clear the mapping
    for e_type in dbmanager.find_ebook_type_by_ebook_id(ebook_id):
        op_delete_e_type = dbmanager.delete_ebook_type(e_type.id)

    op_result = dbmanager.delete_ebook(ebook_id)

    if op_result["op_status"]:
        logger.info("The ebook with id %d has been deleted." % ebook_id)
        return redirect("/ebook/all/1")
    else:
        logger.error("There is some error appeared for deleting ebook with id %d, delete fail." % ebook_id)
        return redirect("/ebook/all/1")
Beispiel #14
0
def save_actor_type(actor_id, type_id):
    try:
        new_actor_type = Actor_Type(actor_id=actor_id, type_id=type_id)
        db.session.add(new_actor_type)
        db.session.commit()
        return {
            "err_msg": "Save Movie and Actor mapping sucess.",
            "obj": None,
            "op_status": True,
            "new_id": new_actor_type.id
        }
    except Exception as e:
        logger.error(e)
        return {
            "err_msg": "Save Movie and Actor mapping fail.",
            "obj": None,
            "op_status": False
        }
Beispiel #15
0
def save_ebook(name, actors, mediatype, storage, file_path):
    try:
        new_ebook = EBook(name=name,
                          actors=actors,
                          mediatype=mediatype,
                          storage=storage,
                          file_path=file_path)
        db.session.add(new_ebook)
        db.session.commit()
        return {
            "err_msg": "Save book success.",
            "obj": None,
            "op_status": True,
            "new_id": new_ebook.id
        }
    except Exception as e:
        logger.error(e)
        return {"err_msg": "Save book fail.", "obj": None, "op_status": False}
Beispiel #16
0
def save_movie_photo(movie_id, photo_id):
    try:
        new_movie_photo = Movie_Photo(movie_id=movie_id, photo_id=photo_id)
        db.session.add(new_movie_photo)
        db.session.commit()
        return {
            "err_msg": "Save Movie and Actor mapping sucess.",
            "obj": None,
            "op_status": True,
            "new_id": new_movie_photo.id
        }
    except Exception as e:
        logger.error(e)
        return {
            "err_msg": "Save Movie and Actor mapping fail.",
            "obj": None,
            "op_status": False
        }
Beispiel #17
0
def save_photo_with_string(name, ext, photo_type, path=""):
    try:
        new_photo = Photo(name=name, ext=ext, path=path, type=photo_type)
        db.session.add(new_photo)
        db.session.commit()
        return {
            "err_msg": "Save photo with string success.",
            "obj": None,
            "op_status": True,
            "new_id": new_photo.id
        }
    except Exception as e:
        logger.error(e)
        return {
            "err_msg": "Save photo with string fail.",
            "obj": None,
            "op_status": False
        }
Beispiel #18
0
def save_mediatype(name, parent):
    try:
        new_mediatype = MediaType(name=name, parent=parent)
        db.session.add(new_mediatype)
        db.session.commit()
        return {
            "err_msg": "Save media type success.",
            "obj": None,
            "op_status": True,
            "new_id": new_mediatype.id
        }
    except Exception as e:
        logger.error(e)
        return {
            "err_msg": "Save media type fail.",
            "obj": None,
            "op_status": False
        }
Beispiel #19
0
def save_user(username, password):
    try:
        new_user = User(username=username,
                        password=password,
                        create_at=datetime.datetime.now(),
                        update_at=datetime.datetime.now())
        new_user.set_password(password)
        db.session.add(new_user)
        db.session.commit()
        return {
            "err_mst": "Save user success.",
            "obj": None,
            "op_status": True,
            "new_id": new_user.id
        }
    except Exception as e:
        logger.error(e)
        return {"err_mst": "Save user fail.", "obj": None, "op_status": False}
Beispiel #20
0
def save_actor(name, sex, country, description, thumb, types):
    try:
        new_actor = Actor(name=name,
                          sex=sex,
                          country=country,
                          description=description,
                          thumb=thumb,
                          type=types)
        db.session.add(new_actor)
        db.session.commit()
        return {
            "err_msg": "Save actor success.",
            "obj": None,
            "op_status": True,
            "new_id": new_actor.id
        }
    except Exception as e:
        logger.error(e)
        return {"err_msg": "Save actor fail.", "obj": None, "op_status": False}
Beispiel #21
0
    def validate(self):
        super(StorageForm, self).validate()

        if self.name.data.strip() == "":
            self.name.errors.append("Storage name can not be empty.")
            return False

        if self.size.data.strip() == "":
            self.size.errors.append("Storage size can not be empty.")
            return False

        try:
            s_size = float(self.size.data)
        except ValueError as e:
            self.size.errors.append("Storage size must be digital.")
            logger.error("The storage size is not digital.")
            return False

        return True
Beispiel #22
0
def update_user(user_id):

    usereditform = UserEditForm()
    user = dbmanager.find_user_by_id(user_id)
    if usereditform.validate_on_submit():

        op_result = dbmanager.update_user(user_id, user.username, usereditform.password.data)

        if op_result["op_status"]:
            logger.info(op_result["err_msg"])
        else:
            logger.error(op_result["err_msg"])

        user_list = dbmanager.find_all_users()
        if user_list is None:
            return render_template("users.html", pagename="Users", logon_user=session['username'])
        else:
            return render_template("users.html", pagename="Users", logon_user=session['username'], users=user_list)

    return render_template("/user_edit.html", usereditform=usereditform, user=user, logon_user=session['username'])
Beispiel #23
0
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)
Beispiel #24
0
def edit_actor(actor_id):
    if 'username' not in session:
        return render_template('login.html', form=LoginForm())

    db_actor = dbmanager.find_actor_by_id(actor_id)
    if db_actor is None:
        logger.error("There is not any actor match id %d." % actor_id)
        return redirect("/actor/all/1")
    else:
        db_photo = dbmanager.find_photo_by_id(db_actor.thumb)
        actorform = ActorForm(name=db_actor.name,
                              country=db_actor.country,
                              sex=db_actor.sex,
                              thumb_path=db_photo.path,
                              description=db_actor.description)
        return render_template("edit_actor.html",
                               pagename="Edit Actor",
                               search_form=SearchForm(),
                               logon_user=session['username'],
                               actorform=actorform,
                               actor_id=actor_id)
Beispiel #25
0
def save_movie(name, actors, snapshots, cover, types, provider, storage,
               file_path):
    try:
        new_movie = Movie(name=name,
                          actors=actors,
                          cover=cover,
                          snapshots=snapshots,
                          types=types,
                          provider=provider,
                          storage=storage,
                          file_path=file_path)
        db.session.add(new_movie)
        db.session.commit()
        return {
            "err_msg": "Save Movie sucess.",
            "obj": None,
            "op_status": True,
            "new_id": new_movie.id
        }
    except Exception as e:
        logger.error(e)
        return {"err_msg": "Save Movie fail.", "obj": None, "op_status": False}
Beispiel #26
0
def delete_movie(movie_id):
    if 'username' not in session:
        return render_template('login.html', form=LoginForm())

    cur_movie = dbmanager.find_movie_by_id(movie_id)
    if cur_movie is None:
        logger.error("There is not any movie match id %d." % movie_id)
        return redirect("/movie/all/1")
    else:
        op_cover_delete = dbmanager.delete_photo(cur_movie.cover)
        if op_cover_delete["op_status"]:
            logger.info("Delete cover with id %d is success." %
                        cur_movie.cover)
        else:
            logger.error("Delete cover with id %d is fail." % cur_movie.cover)

        # snapshot_list = splitStrIdToInteger(cur_movie.snapshots)
        snapshot_list = dbmanager.find_movie_photo_by_movie_id(movie_id)
        for sid in snapshot_list:
            op_snapshots_delete = dbmanager.delete_photo(sid.photo_id)
            if op_snapshots_delete["op_status"]:
                logger.info("Delete snapshot with id %d is success." %
                            sid.photo_id)
            else:
                logger.error("Delete snapshot with id %d is fail." %
                             sid.photo_id)

        # Clear the mapping between movie and actor
        for m_a_map in dbmanager.find_movie_actor_by_movie_id(movie_id):
            op_m_a_result = dbmanager.delete_movie_actor(m_a_map.id)

        # Clear the mapping between movie and type
        for m_t_map in dbmanager.find_movie_type_by_movie_id(movie_id):
            op_m_t_result = dbmanager.delete_movie_type(m_t_map.id)

        # Clear the mapping between movie and photo
        for m_p_map in dbmanager.find_movie_photo_by_movie_id(movie_id):
            op_m_p_result = dbmanager.delete_movie_photo(m_p_map.id)

        op_movie_delete = dbmanager.delete_movie(movie_id)
        if op_movie_delete["op_status"]:
            logger.info("Delete movie with id %d is success." % movie_id)
        else:
            logger.error("Delete movie with id %d fail." % movie_id)
    return redirect("/movie/all/1")
Beispiel #27
0
def create_actor():
    if 'username' not in session:
        return render_template('login.html', form=LoginForm())

    actorform = ActorForm()
    if actorform.validate_on_submit():
        actors = dbmanager.find_actor_by_name(actorform.name.data.strip())
        if len(actors) == 0:
            logger.info("Saving new actor to db.")
            if actorform.thumb.data.filename.strip() != "":
                if MEDIA_SAVE_TO_DB:
                    pass
                else:
                    upload_file = actorform.thumb.data.filename
                    logger.info("Upload file %s" % upload_file)
                    upload_filename = os.path.splitext(upload_file)[0]
                    upload_suffix = os.path.splitext(upload_file)[1]
                    save_filename = str(
                        uuid.uuid3(uuid.NAMESPACE_URL,
                                   upload_filename.encode('utf-8')))
                    save_fullfilename = save_filename + upload_suffix
                    save_path = MEDIA_LOCAL_PATH + save_fullfilename
                    logger.info("Save path is %s" % save_path)
                    actorform.thumb.data.save(save_path)
                    op_photo_result = dbmanager.save_photo_with_string(
                        save_filename, upload_suffix, PHOTO_TYPE["NORMAL"],
                        MEDIA_URL + save_fullfilename)
                    type_list = combineIntegerToStr(actorform.types.data)
                    op_result = dbmanager.save_actor(
                        actorform.name.data.strip(), actorform.sex.data,
                        actorform.country.data.strip(),
                        actorform.description.data.strip(),
                        op_photo_result["new_id"], type_list)
                    # save mapping of actor and mediatype
                    for type_id in actorform.types.data:
                        op_a_type_result = dbmanager.save_actor_type(
                            op_result["new_id"], type_id)

                    logger.info("Save new actor complete, status: %s." %
                                op_result["op_status"])
                    return redirect("/actor/all/1")
            else:
                thumb_url = actorform.thumb_path.data.strip()
                logger.info("Upload file path is %s" % thumb_url)
                thumb_url_name = os.path.splitext(thumb_url.split("/")[-1])[0]
                thumb_url_suffix = os.path.splitext(
                    thumb_url.split("/")[-1])[1]
                op_photo_result = dbmanager.save_photo_with_string(
                    thumb_url_name, thumb_url_suffix, PHOTO_TYPE["NORMAL"],
                    thumb_url)
                type_list = combineIntegerToStr(actorform.types.data)
                op_result = dbmanager.save_actor(
                    actorform.name.data.strip(), actorform.sex.data,
                    actorform.country.data.strip(),
                    actorform.description.data.strip(),
                    op_photo_result["new_id"], type_list)

                # save mapping of actor and mediatype
                for type_id in actorform.types.data:
                    op_a_type_result = dbmanager.save_actor_type(
                        op_result["new_id"], type_id)

                logger.info(
                    "Save new actor with url thumb complete, status is %s: " %
                    op_result["op_status"])
                return redirect("/actor/all/1")
        else:
            logger.info("The actor with name %s is existed." %
                        actorform.name.data.strip())
            actorform.name.errors.append("Actor with name '%s' is existed." %
                                         actorform.name.data.strip())
            return render_template("create_actor.html",
                                   pagename="Create Actor",
                                   search_form=SearchForm(),
                                   logon_user=session['username'],
                                   actorform=actorform)

    logger.error("Create new actor fail.")
    return render_template("create_actor.html",
                           pagename="Create Actor",
                           search_form=SearchForm(),
                           logon_user=session['username'],
                           actorform=actorform)
Beispiel #28
0
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)