Exemple #1
0
    def action(self, request):
        global Manager
        global utf8ToLatin
        global stringToUtf8
        global MediaInfo
        if Manager is None:
            from Plugins.Extensions.ProjectValerie.DMC_Plugins.DMC_SyncExtras.Manager import Manager
        if stringToUtf8 is None:
            from Plugins.Extensions.ProjectValerie.DMC_Plugins.DMC_SyncExtras.Utf8 import stringToUtf8
        if utf8ToLatin is None:
            from Plugins.Extensions.ProjectValerie.DMC_Plugins.DMC_SyncExtras.Utf8 import utf8ToLatin
        if MediaInfo is None:
            from Plugins.Extensions.ProjectValerie.DMC_Plugins.DMC_SyncExtras.MediaInfo import MediaInfo

        printl("request: " + str(request), self)
        printl("request.args: " + str(request.args), self)
        printl("request.args[mode]: " + str(request.args["mode"]), self)

        ##########################
        # ADD SECTION
        # Argument: 	request.args["mode"][0] 			== "addMediaToDb"
        # Subargument:  request.args["type"][0] 			== "isMovie" | "isTvShow" | "isEpisode"
        #				request.args["ParentId"][0] 		== Integer
        ##########################
        if request.args["mode"][0] == "addMediaToDb":
            printl("mode (addMediaToDb)", self, "I")

            manager = Manager("WebIf:SubActions:MediaActions")
            type = request.args["type"][0]
            if (type == "isEpisode"):
                parentId = request.args["ParentId"][0]

            key_value_dict = {}
            for key in request.args.keys():
                key_value_dict[key] = request.args[key][0]

            # add movies
            if type == "isMovie":
                printl("INSERT MOVIE : " + str(key_value_dict), self, "I")
                result = manager.insertMediaWithDict(Manager.MOVIES,
                                                     key_value_dict)
                if result["status"] > 0:
                    return WebHelper().redirectMeTo(
                        "/movies?mode=showDoneForm&showSave=true")
                else:
                    return WebHelper().redirectMeTo(
                        "/mediaForm?mode=showErrorForm&type=isMovie&" +
                        urlencode({'msg': result["message"]}))

            # add tvshows
            elif type == "isTvShow":
                printl("INSERT TVSHOW : " + str(key_value_dict), self, "I")
                result = manager.insertMediaWithDict(Manager.TVSHOWS,
                                                     key_value_dict)
                if result["status"] > 0:
                    return WebHelper().redirectMeTo(
                        "/tvshows?mode=showDoneForm&showSave=true")
                else:
                    return WebHelper().redirectMeTo(
                        "/mediaForm?mode=showErrorForm&type=isTvShow&" +
                        urlencode({'msg': result["message"]}))

            # add tvshowepisodes
            elif type == "isEpisode":
                printl("INSERT EPISODE: " + str(key_value_dict), self, "I")
                result = manager.insertMediaWithDict(Manager.TVSHOWSEPISODES,
                                                     key_value_dict)
                if result["status"] > 0:
                    return WebHelper().redirectMeTo(
                        "/episodes?mode=showDoneForm&ParentId=" + parentId +
                        "&showSave=true")
                else:
                    return WebHelper().redirectMeTo(
                        "/mediaForm?mode=showErrorForm&type=isEpisode&ParentId="
                        + parentId + "&" +
                        urlencode({'msg': result["message"]}))

        ##########################
        # EDIT SECTION
        # Argument: 	request.args["mode"][0] 		== "alterMediaInDb"
        # Subargument:  request.args["type"][0] 		== "isMovie" | "isTvShow" | "isEpisode"
        #				request.args["Id"][0]			== Integer
        #				request.args["ParentId"][0]		== Integer
        ##########################
        elif request.args["mode"][0] == "alterMediaInDb":
            printl("mode (alterMediaInDb)", self, "I")

            manager = Manager("WebIf:SubActions:MediaActions")
            type = stringToUtf8(request.args["type"][0])
            Id = request.args["Id"][0]
            if (type == "isEpisode"):
                parentId = request.args["ParentId"][0]

            key_value_dict = {}
            for key in request.args.keys():
                #	key_value_dict[key] = stringToUtf8(request.args[key][0])
                key_value_dict[key] = request.args[key][0]
                printl("Content: " + key + " => " + request.args[key][0], self,
                       "I")

            if not "Seen" in request.args:
                WebData().getData("MediaInfo_markUnseen", Id)
            else:
                if (request.args["Seen"][0] == "on"):
                    WebData().getData("MediaInfo_markSeen", Id)

            # edit movies
            if type == "isMovie":
                result = manager.updateMediaWithDict(Manager.MOVIES,
                                                     key_value_dict)
                printl("alter Movie in Db", self, "I")
                if result is True:
                    printl("TRUE", self, "I")
                    return WebHelper().redirectMeTo(
                        "/movies?mode=showDoneForm&Id=" + Id +
                        "&showSave=true")
                else:
                    printl("FALSE", self, "I")
                    return WebHelper().redirectMeTo(
                        "/mediaForm?mode=showErrorForm&type=isMovie&Id=" + Id)

            # edit tvshows
            elif type == "isTvShow":
                result = manager.updateMediaWithDict(Manager.TVSHOWS,
                                                     key_value_dict)
                if result:
                    return WebHelper().redirectMeTo(
                        "/tvshows?mode=showDoneForm&Id=" + Id +
                        "&showSave=true")
                else:
                    return WebHelper().redirectMeTo(
                        "/mediaForm?mode=showErrorForm&type=isTvShow&Id=" + Id)

            # edit tvsshowepisodes
            elif type == "isEpisode":
                result = manager.updateMediaWithDict(Manager.TVSHOWSEPISODES,
                                                     key_value_dict)
                if result:
                    return WebHelper().redirectMeTo(
                        "/episodes?mode=showDoneForm&Id=" + Id + "&ParentId=" +
                        parentId + "&showSave=true")
                else:
                    return WebHelper().redirectMeTo(
                        "/mediaForm?mode=showErrorForm&type=isEpisode&ParentId="
                        + parentId + "&Id=" + Id)

        ##########################
        # DELETE SECTION
        # Argument: 	request.args["mode"][0] 		== "deleteMediaFromDb"
        # Subargument:  request.args["Id"][0]		 	== Integer
        #				request.args["ParentId"][0] 	== Integer
        #				request.args["type"][0] 		== "isMovie" | "isTvShow" | "isEpisode"
        ##########################
        elif request.args["mode"][0] == "deleteMediaFromDb":
            printl("mode (deleteMediaFromDb)", self, "I")

            manager = Manager("WebIf:SubActions:MediaActions")
            id = request.args["Id"][0]
            type = request.args["type"][0]
            if (type == "isEpisode"):
                parentId = request.args["ParentId"][0]

            result = manager.deleteMedia(id)
            #delete movie
            if type == "isMovie":
                if result:
                    return WebHelper().redirectMeTo(
                        "/movies?mode=showDoneForm&showSave=true")
                else:
                    return WebHelper().redirectMeTo(
                        "/mediaForm?mode=showErrorForm&type=isMovie")

            # delete tvshowepisodes
            elif type == "isEpisode":
                if result:
                    return WebHelper().redirectMeTo(
                        "/episodes?mode=showDoneForm&ParentId=" + parentId +
                        "&showSave=true")
                else:
                    return WebHelper().redirectMeTo(
                        "/mediaForm?mode=showErrorForm&tpye=isEpisode&ParentId="
                        + parentId)

            # delete tvshow
            elif type == "isTvShow":
                if result:
                    return WebHelper().redirectMeTo(
                        "/tvshows?mode=showDoneForm&showSave=true")
                else:
                    return WebHelper().redirectMeTo(
                        "/mediaForm?mode=showErrorForm&type=isTvShow")

            # delete failed
            elif type == "isFailed":
                if result:
                    return WebHelper().redirectMeTo("/failed?showSave=true")
                else:
                    return WebHelper().redirectMeTo(
                        "/mediaForm?mode=showErrorForm&type=isTvShow")

        ##########################
        # CHANGE ARTS SECTION
        # Argument: 	request.args["mode"][0] == "changeMediaArts"
        # Subargument:  request.args["Id"][0] == Integer
        #				request.args["type"][0] == "isMovie" | "isTvShow" | "isEpisode"
        #				request.args["media_type"][0] == "poster" | "backdrop"
        #				request.args["media_source"][0] == String
        ##########################
        elif request.args["mode"][0] == "changeMediaArts":
            printl("mode (changeMediaArts)", self, "I")

            manager = Manager("WebIf:SubActions:MediaActions")
            type = request.args["type"][0]
            media_source = request.args["media_source"][0]
            media_type = request.args["media_type"][0]
            Id = request.args["Id"][0]

            printl("media_source => " + media_source + ")", self, "I")
            if (media_source[0:7] != "user://"):
                if (media_source[0:7] == "http://"
                        or media_source[0:8] == "https://"
                        or media_source[0:1] == "/"):
                    media_source = "user://" + media_source
                    printl(
                        "media_source without user:// found => correcting to new value = "
                        + media_source, self, "I")
                else:
                    printl(
                        "media_source seems to have bad format at all - trying it anyway without warranty ;-)",
                        self, "W")
            else:
                printl("media_source with user:// found => no changes needed",
                       self, "I")

            #change movie art
            if type == "isMovie":
                t = Manager.MOVIES

            #change tvshow art
            elif type == "isTvShow":
                t = Manager.TVSHOWS

            #change episode art
            elif type == "isEpisode":
                t = Manager.TVSHOWSEPISODES

            else:
                return utf8ToLatin("error")

            if media_type == "poster":
                result = manager.changeMediaArts(t, Id, True, None,
                                                 media_source)
                if result == True:
                    return utf8ToLatin("success")
                else:
                    return utf8ToLatin("error")

            elif media_type == "backdrop":
                result = manager.changeMediaArts(t, Id, True, media_source,
                                                 None)
                if result == True:
                    return utf8ToLatin("success")
                else:
                    return utf8ToLatin("error")
            else:
                printl("no media type found", self)
                return utf8ToLatin("error")

            return utf8ToLatin("error")

        ##########################
        # SAVE TO DB
        # Argument: 	request.args["mode"][0] == "saveChangesToDb"
        ##########################
        elif request.args["mode"][0] == "saveChangesToDb":
            printl("mode (saveChangesToDb)", self, "I")

            manager = Manager("WebIf:SubActions:MediaActions")
            manager.finish()

            if request.args["return_to"][0] == "movies":
                return WebHelper().redirectMeTo("/movies")

            elif request.args["return_to"][0] == "tvshows":
                return WebHelper().redirectMeTo("/tvshows")

            elif request.args["return_to"][0] == "episodes":
                return WebHelper().redirectMeTo("/episodes")

            elif request.args["return_to"][0] == "failed":
                return WebHelper().redirectMeTo("/failed")

        ##########################
        # MOVE TO FAILED SECTION
        # Argument: 	request.args["mode"][0] == "moveToFailedSection"
        # Subargument:  request.args["Id"][0] == Integer
        ##########################
        elif request.args["mode"][0] == "moveToFailedSection":
            manager = Manager("WebIf:SubActions:MediaActions")
            type = request.args["type"][0]
            Id = request.args["Id"][0]
            result = manager.moveToFailedSection(Id, type)
            if (type == "isEpisode"):
                parentId = request.args["ParentId"][0]

            #delete movie
            if type == "isMovie":
                if result:
                    return WebHelper().redirectMeTo(
                        "/movies?mode=showDoneForm&showSave=true")
                else:
                    return WebHelper().redirectMeTo(
                        "/mediaForm?mode=showErrorForm&type=isMovie")

            # delete tvshowepisodes
            elif type == "isEpisode":
                if result:
                    return WebHelper().redirectMeTo(
                        "/episodes?mode=showDoneForm&ParentId=" + parentId +
                        "&showSave=true")
                else:
                    return WebHelper().redirectMeTo(
                        "/mediaForm?mode=showErrorForm&tpye=isEpisode&ParentId="
                        + parentId)

            # delete tvshow
            elif type == "isTvShow":
                if result:
                    return WebHelper().redirectMeTo(
                        "/tvshows?mode=showDoneForm&showSave=true")
                else:
                    return WebHelper().redirectMeTo(
                        "/mediaForm?mode=showErrorForm&type=isTvShow")
	def action(self, request):
		global Manager
		global utf8ToLatin
		global stringToUtf8
		global MediaInfo
		if Manager is None:
			from Plugins.Extensions.ProjectValerie.DMC_Plugins.DMC_SyncExtras.Manager import Manager
		if stringToUtf8 is None:
			from Plugins.Extensions.ProjectValerie.DMC_Plugins.DMC_SyncExtras.Utf8 import stringToUtf8
		if utf8ToLatin is None:
			from Plugins.Extensions.ProjectValerie.DMC_Plugins.DMC_SyncExtras.Utf8 import utf8ToLatin
		if MediaInfo is None:
			from Plugins.Extensions.ProjectValerie.DMC_Plugins.DMC_SyncExtras.MediaInfo import MediaInfo
		
		printl("request: " + str(request), self)
		printl("request.args: " + str(request.args), self)
		printl("request.args[mode]: " + str(request.args["mode"]), self)	
		
		##########################
		# ADD SECTION
		# Argument: 	request.args["mode"][0] 			== "addMediaToDb"
		# Subargument:  request.args["type"][0] 			== "isMovie" | "isTvShow" | "isEpisode"
		#				request.args["ParentId"][0] 		== Integer
		##########################
		if request.args["mode"][0] == "addMediaToDb":
			printl("mode (addMediaToDb)", self, "I")
			
			manager = Manager("WebIf:SubActions:MediaActions")	
			type = request.args["type"][0]
			if (type == "isEpisode"):
				parentId = request.args["ParentId"][0]
			
			key_value_dict = {}				
			for key in request.args.keys():
				key_value_dict[key] = request.args[key][0]
			
			# add movies
			if type == "isMovie":
				printl ("INSERT MOVIE : " + str(key_value_dict), self, "I")
				result = manager.insertMediaWithDict(Manager.MOVIES, key_value_dict)
				if result["status"] > 0:
					return WebHelper().redirectMeTo("/movies?mode=showDoneForm&showSave=true")
				else:
					return WebHelper().redirectMeTo("/mediaForm?mode=showErrorForm&type=isMovie&"+urlencode({'msg':result["message"]}))
			
			# add tvshows
			elif type == "isTvShow":
				printl ("INSERT TVSHOW : " + str(key_value_dict), self, "I")
				result = manager.insertMediaWithDict(Manager.TVSHOWS, key_value_dict)
				if result["status"] > 0:
					return WebHelper().redirectMeTo("/tvshows?mode=showDoneForm&showSave=true")	
				else:
					return WebHelper().redirectMeTo("/mediaForm?mode=showErrorForm&type=isTvShow&"+urlencode({'msg':result["message"]}))	
			
			# add tvshowepisodes
			elif type == "isEpisode":
				printl ("INSERT EPISODE: " + str(key_value_dict), self, "I")
				result = manager.insertMediaWithDict(Manager.TVSHOWSEPISODES, key_value_dict)				
				if result["status"] > 0:
					return WebHelper().redirectMeTo("/episodes?mode=showDoneForm&ParentId=" + parentId + "&showSave=true")
				else:
					return WebHelper().redirectMeTo("/mediaForm?mode=showErrorForm&type=isEpisode&ParentId=" + parentId + "&"+urlencode({'msg':result["message"]}))
		
		##########################
		# EDIT SECTION	
		# Argument: 	request.args["mode"][0] 		== "alterMediaInDb"
		# Subargument:  request.args["type"][0] 		== "isMovie" | "isTvShow" | "isEpisode"
		#				request.args["Id"][0]			== Integer
		#				request.args["ParentId"][0]		== Integer
		##########################
		elif request.args["mode"][0] == "alterMediaInDb":
			printl("mode (alterMediaInDb)", self, "I")
			
			manager = Manager("WebIf:SubActions:MediaActions")
			type = stringToUtf8(request.args["type"][0])
			Id = request.args["Id"][0]
			if (type == "isEpisode"):
				parentId = request.args["ParentId"][0]
			
			key_value_dict = {}				
			for key in request.args.keys():
			#	key_value_dict[key] = stringToUtf8(request.args[key][0])
				key_value_dict[key] = request.args[key][0]
				printl("Content: " + key + " => " + request.args[key][0], self, "I")	
			
			if not "Seen" in request.args:
				WebData().getData("MediaInfo_markUnseen", Id)
			else:
				if (request.args["Seen"][0] == "on"):
					WebData().getData("MediaInfo_markSeen", Id)
			
			# edit movies		
			if type == "isMovie":
				result = manager.updateMediaWithDict(Manager.MOVIES, key_value_dict)
				printl("alter Movie in Db", self, "I")
				if result is True:
					printl("TRUE", self, "I")
					return WebHelper().redirectMeTo("/movies?mode=showDoneForm&Id=" + Id + "&showSave=true")
				else:
					printl("FALSE", self, "I")
					return WebHelper().redirectMeTo("/mediaForm?mode=showErrorForm&type=isMovie&Id=" + Id)
			
			# edit tvshows
			elif type == "isTvShow":
				result = manager.updateMediaWithDict(Manager.TVSHOWS, key_value_dict)
				if result:
					return WebHelper().redirectMeTo("/tvshows?mode=showDoneForm&Id=" + Id + "&showSave=true")
				else:
					return WebHelper().redirectMeTo("/mediaForm?mode=showErrorForm&type=isTvShow&Id=" + Id)
			
			# edit tvsshowepisodes
			elif type == "isEpisode":
				result = manager.updateMediaWithDict(Manager.TVSHOWSEPISODES, key_value_dict)
				if result:
					return WebHelper().redirectMeTo("/episodes?mode=showDoneForm&Id=" + Id + "&ParentId=" + parentId + "&showSave=true")
				else:
					return WebHelper().redirectMeTo("/mediaForm?mode=showErrorForm&type=isEpisode&ParentId="+  parentId + "&Id=" + Id)
		
		##########################
		# DELETE SECTION
		# Argument: 	request.args["mode"][0] 		== "deleteMediaFromDb"
		# Subargument:  request.args["Id"][0]		 	== Integer
		#				request.args["ParentId"][0] 	== Integer
		#				request.args["type"][0] 		== "isMovie" | "isTvShow" | "isEpisode"
		##########################
		elif request.args["mode"][0] == "deleteMediaFromDb":
			printl("mode (deleteMediaFromDb)", self, "I")
			
			manager = Manager("WebIf:SubActions:MediaActions")
			id = request.args["Id"][0]
			type = request.args["type"][0]
			if (type == "isEpisode"):
				parentId = request.args["ParentId"][0]

			result = manager.deleteMedia(id)
			#delete movie
			if type == "isMovie":
				if result:
					return WebHelper().redirectMeTo("/movies?mode=showDoneForm&showSave=true")
				else:
					return WebHelper().redirectMeTo("/mediaForm?mode=showErrorForm&type=isMovie")
				
			# delete tvshowepisodes
			elif type == "isEpisode":
				if result:
					return WebHelper().redirectMeTo("/episodes?mode=showDoneForm&ParentId=" + parentId + "&showSave=true")
				else:
					return WebHelper().redirectMeTo("/mediaForm?mode=showErrorForm&tpye=isEpisode&ParentId=" + parentId)
				
			# delete tvshow		
			elif type == "isTvShow":
				if result:
					return WebHelper().redirectMeTo("/tvshows?mode=showDoneForm&showSave=true")
				else:
					return WebHelper().redirectMeTo("/mediaForm?mode=showErrorForm&type=isTvShow")
					
			# delete failed		
			elif type == "isFailed":
				if result:
					return WebHelper().redirectMeTo("/failed?showSave=true")
				else:
					return WebHelper().redirectMeTo("/mediaForm?mode=showErrorForm&type=isTvShow")

		##########################
		# CHANGE ARTS SECTION
		# Argument: 	request.args["mode"][0] == "changeMediaArts"
		# Subargument:  request.args["Id"][0] == Integer
		#				request.args["type"][0] == "isMovie" | "isTvShow" | "isEpisode"
		#				request.args["media_type"][0] == "poster" | "backdrop"
		#				request.args["media_source"][0] == String
		##########################
		elif request.args["mode"][0] == "changeMediaArts":
			printl("mode (changeMediaArts)", self, "I")
			
			manager = Manager("WebIf:SubActions:MediaActions")
			type = request.args["type"][0]
			media_source = request.args["media_source"][0]
			media_type = request.args["media_type"][0]
			Id = request.args["Id"][0]
			
			printl("media_source => " + media_source + ")", self, "I")
			if (media_source[0:7] != "user://"):
				if(media_source[0:7] == "http://" or media_source[0:8] == "https://" or media_source[0:1] == "/"):
					media_source = "user://" + media_source
					printl("media_source without user:// found => correcting to new value = " + media_source, self, "I")
				else:
					printl("media_source seems to have bad format at all - trying it anyway without warranty ;-)", self, "W")
			else:
				printl("media_source with user:// found => no changes needed", self, "I")	
			
			#change movie art
			if type == "isMovie":
				t = Manager.MOVIES
			
			#change tvshow art
			elif type == "isTvShow":
				t = Manager.TVSHOWS
			
			#change episode art
			elif type == "isEpisode":
				t = Manager.TVSHOWSEPISODES
			
			else:
				return utf8ToLatin("error")
			
			if media_type == "poster":
				result = manager.changeMediaArts(t, Id, True, None, media_source)
				if result == True:
					return utf8ToLatin("success")
				else:
					return utf8ToLatin("error")
			
			elif media_type == "backdrop":
				result = manager.changeMediaArts(t, Id, True, media_source, None)
				if result == True:
					return utf8ToLatin("success")
				else:
					return utf8ToLatin("error")
			else:
				printl("no media type found", self)
				return utf8ToLatin("error")
			
			return utf8ToLatin("error")

		##########################
		# SAVE TO DB
		# Argument: 	request.args["mode"][0] == "saveChangesToDb"
		##########################
		elif request.args["mode"][0] == "saveChangesToDb":
			printl("mode (saveChangesToDb)", self, "I")
			
			manager = Manager("WebIf:SubActions:MediaActions")
			manager.finish()
			
			if request.args["return_to"][0] == "movies":
				return WebHelper().redirectMeTo("/movies")
			
			elif request.args["return_to"][0] == "tvshows":
				return WebHelper().redirectMeTo("/tvshows")
			
			elif request.args["return_to"][0] == "episodes":
				return WebHelper().redirectMeTo("/episodes")
			
			elif request.args["return_to"][0] == "failed":
				return WebHelper().redirectMeTo("/failed")

		##########################
		# MOVE TO FAILED SECTION
		# Argument: 	request.args["mode"][0] == "moveToFailedSection"
		# Subargument:  request.args["Id"][0] == Integer
		##########################			
		elif request.args["mode"][0] == "moveToFailedSection":
			manager = Manager("WebIf:SubActions:MediaActions")
			type = request.args["type"][0]
			Id = request.args["Id"][0]
			result = manager.moveToFailedSection(Id, type)
			if (type == "isEpisode"):
				parentId = request.args["ParentId"][0]
			
			#delete movie
			if type == "isMovie":
				if result:
					return WebHelper().redirectMeTo("/movies?mode=showDoneForm&showSave=true")
				else:
					return WebHelper().redirectMeTo("/mediaForm?mode=showErrorForm&type=isMovie")
				
			# delete tvshowepisodes
			elif type == "isEpisode":
				if result:
					return WebHelper().redirectMeTo("/episodes?mode=showDoneForm&ParentId=" + parentId + "&showSave=true")
				else:
					return WebHelper().redirectMeTo("/mediaForm?mode=showErrorForm&tpye=isEpisode&ParentId=" + parentId)
				
			# delete tvshow		
			elif type == "isTvShow":
				if result:
					return WebHelper().redirectMeTo("/tvshows?mode=showDoneForm&showSave=true")
				else:
					return WebHelper().redirectMeTo("/mediaForm?mode=showErrorForm&type=isTvShow")