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)
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)
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)
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")
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 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}
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 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")
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}
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)
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_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")
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 }
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}
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 }
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 }
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 }
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}
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}
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
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'])
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 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)
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}
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")
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)
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)