Пример #1
0
def getJsonFromConfig(cnf):
    if cnf.__class__.__name__ == "ConfigSelection" or cnf.__class__.__name__ == "ConfigSelectionNumber":
        if type(cnf.choices.choices) == dict:
            choices = []
            for choice in cnf.choices.choices:
                choices.append((choice, _(cnf.choices.choices[choice])))
        elif type(cnf.choices.choices[0]) == tuple:
            choices = []
            for choice_tuple in cnf.choices.choices:
                choices.append((choice_tuple[0], _(choice_tuple[1])))
        else:
            choices = []
            for choice in cnf.choices.choices:
                choices.append((choice, _(choice)))

        return {"result": True, "type": "select", "choices": choices, "current": cnf.value}
    elif (
        cnf.__class__.__name__ == "ConfigBoolean"
        or cnf.__class__.__name__ == "ConfigEnableDisable"
        or cnf.__class__.__name__ == "ConfigYesNo"
    ):
        return {"result": True, "type": "checkbox", "current": cnf.value}
    elif cnf.__class__.__name__ == "ConfigSet":
        return {"result": True, "type": "multicheckbox", "choices": cnf.choices.choices, "current": cnf.value}

    elif cnf.__class__.__name__ == "ConfigNumber":
        return {"result": True, "type": "number", "current": cnf.value}
    elif cnf.__class__.__name__ == "ConfigInteger":
        return {"result": True, "type": "number", "current": cnf.value, "limits": (cnf.limits[0][0], cnf.limits[0][1])}

    elif cnf.__class__.__name__ == "ConfigText":
        return {"result": True, "type": "text", "current": cnf.value}

    print "[ModernWebif] Unknown class ", cnf.__class__.__name__
    return {"result": False, "type": "unknown"}
Пример #2
0
def setSleepTimer(session, time, action, enabled):
	if action not in ["shutdown", "standby"]:
		action = "standby"

	if hasattr(session.nav, "SleepTimer"):
		try:
			ret = getSleepTimer(session)
			from Screens.Standby import inStandby
			if inStandby is not None:
				ret["message"] = _("ERROR: Cannot set SleepTimer while device is in Standby-Mode")
				return ret
			if enabled == False:
				session.nav.SleepTimer.clear()
				ret = getSleepTimer(session)
				ret["message"] = _("Sleeptimer has been disabled")
				return ret
			config.SleepTimer.action.value = action
			config.SleepTimer.action.save()
			session.nav.SleepTimer.setSleepTime(time)
			ret = getSleepTimer(session)
			ret["message"] = _("Sleeptimer set to %d minutes") % time
			return ret
		except Exception, e:
			return {
				"result": False,
				"message": _("SleepTimer Error")
			}
Пример #3
0
def setSleepTimer(session, time, action, enabled):
    if action not in ["shutdown", "standby"]:
        action = "standby"

    if hasattr(session.nav, "SleepTimer"):
        try:
            ret = getSleepTimer(session)
            from Screens.Standby import inStandby
            if inStandby is not None:
                ret["message"] = _(
                    "ERROR: Cannot set SleepTimer while device is in Standby-Mode"
                )
                return ret
            if enabled == False:
                session.nav.SleepTimer.clear()
                ret = getSleepTimer(session)
                ret["message"] = _("Sleeptimer has been disabled")
                return ret
            config.SleepTimer.action.value = action
            config.SleepTimer.action.save()
            session.nav.SleepTimer.setSleepTime(time)
            ret = getSleepTimer(session)
            ret["message"] = _("Sleeptimer set to %d minutes") % time
            return ret
        except Exception, e:
            return {"result": False, "message": _("SleepTimer Error")}
Пример #4
0
def editTimer(session, serviceref, begin, end, name, description, disabled, justplay, afterEvent, dirname, tags, repeated, channelOld, beginOld, endOld, vpsinfo, always_zap):
	# TODO: exception handling
	channelOld_str =  ':'.join(str(channelOld).split(':')[:11])
	rt = session.nav.RecordTimer
	for timer in rt.timer_list + rt.processed_timers:
		needed_ref = ':'.join(timer.service_ref.ref.toString().split(':')[:11]) == channelOld_str
		if needed_ref and int(timer.begin) == beginOld and int(timer.end) == endOld:
			timer.service_ref = ServiceReference(serviceref)
			# TODO: start end time check
			timer.begin = int(float(begin))
			timer.end = int(float(end))
			timer.name = name
			timer.description = description
			# TODO : EIT
			#timer.eit = eit
			timer.disabled = disabled
			timer.justplay = justplay
			timer.afterEvent = afterEvent
			timer.dirname = dirname
			timer.tags = tags
			timer.repeated = repeated
			timer.processRepeated()
			if vpsinfo is not None:
				timer.vpsplugin_enabled = vpsinfo["vpsplugin_enabled"]
				timer.vpsplugin_overwrite = vpsinfo["vpsplugin_overwrite"]
				timer.vpsplugin_time = vpsinfo["vpsplugin_time"]

			if always_zap <> -1:
				if hasattr(timer,"always_zap"):
					timer.always_zap = always_zap == 1

			# TODO: multi tuner test
			sanity = TimerSanityCheck(rt.timer_list, timer)
			conflicts = None
			if not sanity.check():
				conflicts = sanity.getSimulTimerList()
				if conflicts is not None:
					for conflict in conflicts:
						if conflict.setAutoincreaseEnd(entry):
							rt.timeChanged(conflict)
							if not sanity.check():
								conflicts = sanity.getSimulTimerList()
			if conflicts is None:
				rt.timeChanged(timer)
				return {
					"result": True,
					"message": _("Timer '%s' changed") % name
				}
			else:
				return {
					"result": False,
					"message": _("Timer '%s' not saved while Conflict") % name
				}

	return {
		"result": False,
		"message": _("Could not find timer '%s' with given start and end time!") % name
	}
Пример #5
0
def addTimer(session, serviceref, begin, end, name, description, disabled, justplay, afterevent, dirname, tags, repeated, vpsinfo=None, logentries=None, eit=0, always_zap=-1):
	rt = session.nav.RecordTimer

	print "mao1", dirname

	if not dirname:
		dirname = preferredTimerPath()

	print "mao2", dirname

	try:
		timer = RecordTimerEntry(
			ServiceReference(serviceref),
			begin,
			end,
			name,
			description,
			eit,
			disabled,
			justplay,
			afterevent,
			dirname=dirname,
			tags=tags)

		timer.repeated = repeated

		if logentries:
			timer.log_entries = logentries

		conflicts = rt.record(timer)
		if conflicts:
			errors = []
			for conflict in conflicts:
				errors.append(conflict.name)

			return {
				"result": False,
				"message": _("Conflicting Timer(s) detected! %s") % " / ".join(errors)
			}
		#VPS
		if vpsinfo is not None:
			timer.vpsplugin_enabled = vpsinfo["vpsplugin_enabled"]
			timer.vpsplugin_overwrite = vpsinfo["vpsplugin_overwrite"]
			timer.vpsplugin_time = vpsinfo["vpsplugin_time"]

		if always_zap <> -1:
			if hasattr(timer,"always_zap"):
				timer.always_zap = always_zap == 1

	except Exception, e:
		print e
		return {
			"result": False,
			"message": _("Could not add timer '%s'!") % name
		}
Пример #6
0
def getMessageAnswer():
    global lastreply
    reply = lastreply

    if reply is None:
        return {"result": False, "message": _('No answer in time')}

    return {
        "result": True,
        "message": _('Answer is YES!') if reply else _('Answer is NO!')
    }
Пример #7
0
def toggleTimerStatus(session, serviceref, begin, end):
    serviceref = unquote(serviceref)
    serviceref_str = ':'.join(str(serviceref).split(':')[:11])
    rt = session.nav.RecordTimer
    for timer in rt.timer_list + rt.processed_timers:
        needed_ref = ':'.join(
            timer.service_ref.ref.toString().split(':')[:11]) == serviceref_str
        if needed_ref and int(timer.begin) == begin and int(timer.end) == end:
            if timer.disabled:
                timer.enable()
                effect = "enabled"
                sanity = TimerSanityCheck(rt.timer_list, timer)
                if not sanity.check():
                    timer.disable()
                    return {
                        "result":
                        False,
                        "message":
                        _("Timer '%s' not enabled while Conflict") %
                        (timer.name)
                    }
                elif sanity.doubleCheck():
                    timer.disable()
                    return {
                        "result": False,
                        "message":
                        _("Timer '%s' already exists!") % (timer.name)
                    }
            else:
                if timer.isRunning():
                    return {
                        "result":
                        False,
                        "message":
                        _("The timer '%s' now recorded! Not disabled!") %
                        (timer.name)
                    }
                else:
                    timer.disable()
                    effect = "disabled"
            rt.timeChanged(timer)
            return {
                "result":
                True,
                "message":
                _("The timer '%s' has been %s successfully") %
                (timer.name, effect),
                "disabled":
                timer.disabled
            }

    return {"result": False, "message": _("No matching Timer found")}
Пример #8
0
def getSleepTimer(session):
	if hasattr(session.nav, "SleepTimer"):
		try:
			return {
				"enabled": session.nav.SleepTimer.isActive(),
				"minutes": session.nav.SleepTimer.getCurrentSleepTime(),
				"action": config.SleepTimer.action.value,
				"message": _("Sleeptimer is enabled") if session.nav.SleepTimer.isActive() else _("Sleeptimer is disabled")
			}
		except Exception, e:
			return {
				"result": False,
				"message": _("SleepTimer error")
			}
Пример #9
0
def getMessageAnswer():
	global lastreply
	reply = lastreply

	if reply is None:
		return {
			"result": False,
			"message": _('No answer in time')
		}

	return {
		"result": True,
		"message": _('Answer is YES!') if reply else _('Answer is NO!')
	}
Пример #10
0
    def testMandatoryArguments(self, request, keys):
        for key in keys:
            if key not in request.args.keys():
                return {
                    "result": False,
                    "message": _("Missing mandatory parameter '%s'") % key
                }

            if len(request.args[key][0]) == 0:
                return {
                    "result": False,
                    "message": _("The parameter '%s' can't be empty") % key
                }

        return None
Пример #11
0
    def testMandatoryArguments(self, request, keys):
        for key in keys:
            if key not in request.args.keys():
                return {
                    "result": False,
                    "message": _("Missing mandatory parameter '%s'") % key
                }

            if len(request.args[key][0]) == 0:
                return {
                    "result": False,
                    "message": _("The parameter '%s' can't be empty") % key
                }

        return None
Пример #12
0
def addTimerByEventId(session, eventid, serviceref, justplay, dirname, tags, vpsinfo, always_zap):
	event = eEPGCache.getInstance().lookupEventId(eServiceReference(serviceref), eventid)
	if event is None:
		return {
			"result": False,
			"message": _("EventId not found")
		}

	(begin, end, name, description, eit) = parseEvent(event)
	return addTimer(
		session,
		serviceref,
		begin,
		end,
		name,
		description,
		False,
		justplay,
		AFTEREVENT.AUTO,
		dirname,
		tags,
		False,
		vpsinfo,
		None,
		eit,
		always_zap
	)
Пример #13
0
def getVPSChannels(session):
	vpsfile="/etc/enigma2/vps.xml"
	from Tools.Directories import fileExists
	if fileExists(vpsfile):
		try:
			import xml.etree.cElementTree
			vpsfile = file(vpsfile, 'r')
			vpsdom = xml.etree.cElementTree.parse(vpsfile)
			vpsfile.close()
			xmldata = vpsdom.getroot()
			channels = []
			for ch in xmldata.findall("channel"):
				channels.append({
					"serviceref": ch.attrib["serviceref"],
					"has_pdc": ch.attrib["has_pdc"],
					"last_check": ch.attrib["last_check"],
					"default_vps": ch.attrib["default_vps"]
				})
			return {
				"result": True,
				"channels": channels
			}
		except Exception, e:
			return {
				"result": False,
				"message": _("Error parsing vps.xml")
			}
Пример #14
0
def removeTimer(session, serviceref, begin, end):
	serviceref_str = ':'.join(str(serviceref).split(':')[:11])
	rt = session.nav.RecordTimer
	for timer in rt.timer_list + rt.processed_timers:
		needed_ref = ':'.join(timer.service_ref.ref.toString().split(':')[:11]) == serviceref_str
		if needed_ref and int(timer.begin) == begin and int(timer.end) == end:
			rt.removeEntry(timer)
			return {
				"result": True,
				"message": _("The timer '%s' has been deleted successfully") % timer.name
			}

	return {
		"result": False,
		"message": _("No matching Timer found")
	}
Пример #15
0
def removeTimer(session, serviceref, begin, end):
    serviceref_str = ':'.join(str(serviceref).split(':')[:11])
    rt = session.nav.RecordTimer
    for timer in rt.timer_list + rt.processed_timers:
        needed_ref = ':'.join(
            timer.service_ref.ref.toString().split(':')[:11]) == serviceref_str
        if needed_ref and int(timer.begin) == begin and int(timer.end) == end:
            rt.removeEntry(timer)
            return {
                "result":
                True,
                "message":
                _("The timer '%s' has been deleted successfully") % timer.name
            }

    return {"result": False, "message": _("No matching Timer found")}
Пример #16
0
def getJsonFromConfig(cnf):
    if cnf.__class__.__name__ == "ConfigSelection" or cnf.__class__.__name__ == "ConfigSelectionNumber":
        if type(cnf.choices.choices) == dict:
            choices = []
            for choice in cnf.choices.choices:
                choices.append((choice, _(cnf.choices.choices[choice])))
        elif type(cnf.choices.choices[0]) == tuple:
            choices = []
            for choice_tuple in cnf.choices.choices:
                choices.append((choice_tuple[0], _(choice_tuple[1])))
        else:
            choices = []
            for choice in cnf.choices.choices:
                choices.append((choice, _(choice)))

        return {
            "result": True,
            "type": "select",
            "choices": choices,
            "current": cnf.value
        }
    elif cnf.__class__.__name__ == "ConfigBoolean" or cnf.__class__.__name__ == "ConfigEnableDisable" or cnf.__class__.__name__ == "ConfigYesNo":
        return {"result": True, "type": "checkbox", "current": cnf.value}
    elif cnf.__class__.__name__ == "ConfigSet":
        return {
            "result": True,
            "type": "multicheckbox",
            "choices": cnf.choices.choices,
            "current": cnf.value
        }

    elif cnf.__class__.__name__ == "ConfigNumber":
        return {"result": True, "type": "number", "current": cnf.value}
    elif cnf.__class__.__name__ == "ConfigInteger":
        return {
            "result": True,
            "type": "number",
            "current": cnf.value,
            "limits": (cnf.limits[0][0], cnf.limits[0][1])
        }

    elif cnf.__class__.__name__ == "ConfigText":
        return {"result": True, "type": "text", "current": cnf.value}

    print "[ModernWebif] Unknown class ", cnf.__class__.__name__
    return {"result": False, "type": "unknown"}
Пример #17
0
def getSleepTimer(session):
    if hasattr(session.nav, "SleepTimer"):
        try:
            return {
                "enabled":
                session.nav.SleepTimer.isActive(),
                "minutes":
                session.nav.SleepTimer.getCurrentSleepTime(),
                "action":
                config.SleepTimer.action.value,
                "message":
                _("Sleeptimer is enabled")
                if session.nav.SleepTimer.isActive() else
                _("Sleeptimer is disabled")
            }
        except Exception, e:
            return {"result": False, "message": _("SleepTimer error")}
Пример #18
0
def getPowerTimer(session):
	
	try:
		from PowerTimer import TIMERTYPE ,AFTEREVENT

		timers = []
		timer_list  = session.nav.PowerTimer.timer_list
		processed_timers  = session.nav.PowerTimer.processed_timers

		for timer in timer_list + processed_timers:
			list = []
			for time, code, msg in timer.log_entries:
				list.append({
					"code": str(code),
					"time": str(time),
					"msg": str(msg)
					})
			timers.append({
			"timertype": str(timer.timerType),
			"timertypename": str({
				TIMERTYPE.WAKEUP: "wakeup",
				TIMERTYPE.WAKEUPTOSTANDBY: "wakeuptostandby",
				TIMERTYPE.AUTOSTANDBY: "autostandby",
				TIMERTYPE.AUTODEEPSTANDBY: "autodeepstandby",
				TIMERTYPE.STANDBY: "standby",
				TIMERTYPE.DEEPSTANDBY: "deepstandby",
				TIMERTYPE.REBOOT: "reboot",
				TIMERTYPE.RESTART: "restart"
				}[timer.timerType]),
			"begin": str(int(timer.begin)),
			"end": str(int(timer.end)),
			"repeated": str(int(timer.repeated)),
			"afterevent": str(timer.afterEvent),
			"aftereventname": str({
				AFTEREVENT.NONE: "nothing",
				AFTEREVENT.WAKEUPTOSTANDBY: "wakeuptostandby",
				AFTEREVENT.STANDBY: "standby",
				AFTEREVENT.DEEPSTANDBY: "deepstandby"
				}[timer.afterEvent]),
			"disabled": str(int(timer.disabled)),
			"autosleepinstandbyonly": str(timer.autosleepinstandbyonly),
			"autosleepdelay": str(timer.autosleepdelay),
			"autosleeprepeat": str(timer.autosleeprepeat),
			"logentries" : list
			})

		return {
			"result": True,
			"timers": timers
		}
	except Exception, e:
		print e
		return {
			"result": False,
			"message": _("PowerTimer feature not available")
		}
Пример #19
0
def toggleTimerStatus(session, serviceref, begin, end):
	serviceref = unquote(serviceref)
	serviceref_str = ':'.join(str(serviceref).split(':')[:11])
	rt = session.nav.RecordTimer
	for timer in rt.timer_list + rt.processed_timers:
		needed_ref = ':'.join(timer.service_ref.ref.toString().split(':')[:11]) == serviceref_str
		if needed_ref and int(timer.begin) == begin and int(timer.end) == end:
			if timer.disabled:
				timer.enable()
				effect = "enabled"
				sanity = TimerSanityCheck(rt.timer_list, timer)
				if not sanity.check():
					timer.disable()
					return {
						"result": False,
						"message": _("Timer '%s' not enabled while Conflict") % (timer.name)
					}
				elif sanity.doubleCheck():
					timer.disable()
					return {
						"result": False,
						"message": _("Timer '%s' already exists!") % (timer.name)
					}
			else:
				if timer.isRunning():
					return {
						"result": False,
						"message": _("The timer '%s' now recorded! Not disabled!") % (timer.name)
					}
				else:
					timer.disable()
					effect = "disabled"
			rt.timeChanged(timer)
			return {
				"result": True,
				"message": _("The timer '%s' has been %s successfully") % (timer.name, effect),
				"disabled": timer.disabled
			}

	return {
		"result": False,
		"message": _("No matching Timer found")
	}
Пример #20
0
    def parseConfigFiles(self):
        sections = []
        for setupfile in self.setupfiles:
            #			print "[ModernWebif] loading configuration file :", setupfile
            setupfile = file(setupfile, 'r')
            setupdom = xml.etree.cElementTree.parse(setupfile)
            setupfile.close()
            xmldata = setupdom.getroot()
            for section in xmldata.findall("setup"):
                configs = []
                requires = section.get("requires")
                if requires and not SystemInfo.get(requires, False):
                    continue
                key = section.get("key")
                if key not in self.allowedsections:
                    showModernWebif = section.get("showModernWebif")
                    if showModernWebif == "1":
                        self.allowedsections.append(key)
                    else:
                        continue


#				print "[ModernWebif] loading configuration section :", key
                for entry in section:
                    if entry.tag == "item":
                        requires = entry.get("requires")
                        if requires and not SystemInfo.get(requires, False):
                            continue

                        if int(entry.get("level",
                                         0)) > config.usage.setup_level.index:
                            continue
                        configs.append(entry)
                if len(configs):
                    sections.append({
                        "key": key,
                        "description": _(section.get("title"))
                    })
                    title = _(section.get("title", ""))
                    self.section_config[key] = (title, configs)
        sections = sorted(sections, key=lambda k: k['description'])
        self.sections = sections
Пример #21
0
def addTimerByEventId(session, eventid, serviceref, justplay, dirname, tags,
                      vpsinfo, always_zap):
    event = eEPGCache.getInstance().lookupEventId(
        eServiceReference(serviceref), eventid)
    if event is None:
        return {"result": False, "message": _("EventId not found")}

    (begin, end, name, description, eit) = parseEvent(event)
    return addTimer(session, serviceref, begin, end, name, description, False,
                    justplay, AFTEREVENT.AUTO, dirname, tags, False, vpsinfo,
                    None, eit, always_zap)
Пример #22
0
    def P_message(self, request):
        res = self.testMandatoryArguments(request, ["text", "type"])
        if res:
            return res

        try:
            ttype = int(request.args["type"][0])
        except Exception, e:
            return {
                "result": False,
                "message": _("type %s is not a number") % request.args["type"][0]
            }
Пример #23
0
def getAdapterIPv6(ifname):
    addr = _("IPv4-only kernel")
    firstpublic = None

    if fileExists('/proc/net/if_inet6'):
        addr = _("IPv4-only Python/Twisted")

        if has_ipv6 and version.major >= 12:
            proc = '/proc/net/if_inet6'
            tempaddrs = []
            for line in file(proc).readlines():
                if line.startswith('fe80'):
                    continue

                tmpaddr = ""
                tmp = line.split()
                if ifname == tmp[5]:
                    tmpaddr = ":".join(
                        [tmp[0][i:i + 4] for i in range(0, len(tmp[0]), 4)])

                    if firstpublic is None and (tmpaddr.startswith('2')
                                                or tmpaddr.startswith('3')):
                        firstpublic = normalize_ipv6(tmpaddr)

                    if tmp[2].lower() != "ff":
                        tmpaddr = "%s/%s" % (tmpaddr, int(tmp[2].lower(), 16))

                    tmpaddr = normalize_ipv6(tmpaddr)
                    tempaddrs.append(tmpaddr)

            if len(tempaddrs) > 1:
                tempaddrs.sort()
                addr = ', '.join(tempaddrs)
            elif len(tempaddrs) == 1:
                addr = tempaddrs[0]
            elif len(tempaddrs) == 0:
                addr = _("none/IPv4-only network")

    return {'addr': addr, 'firstpublic': firstpublic}
Пример #24
0
    def P_remotecontrol(self, request):
        res = self.testMandatoryArguments(request, ["command"])
        if res:
            return res

        id = -1
        try:
            id = int(request.args["command"][0])
        except Exception, e:
            return {
                "result": False,
                "message": _("The parameter 'command' must be a number")
            }
Пример #25
0
    def P_message(self, request):
        res = self.testMandatoryArguments(request, ["text", "type"])
        if res:
            return res

        try:
            ttype = int(request.args["type"][0])
        except Exception, e:
            return {
                "result": False,
                "message":
                _("type %s is not a number") % request.args["type"][0]
            }
Пример #26
0
    def P_remotecontrol(self, request):
        res = self.testMandatoryArguments(request, ["command"])
        if res:
            return res

        id = -1
        try:
            id = int(request.args["command"][0])
        except Exception, e:
            return {
                "result": False,
                "message": _("The parameter 'command' must be a number")
            }
Пример #27
0
def getAdapterIPv6(ifname):
    addr = _("IPv4-only kernel")
    firstpublic = None

    if fileExists("/proc/net/if_inet6"):
        addr = _("IPv4-only Python/Twisted")

        if has_ipv6 and version.major >= 12:
            proc = "/proc/net/if_inet6"
            tempaddrs = []
            for line in file(proc).readlines():
                if line.startswith("fe80"):
                    continue

                tmpaddr = ""
                tmp = line.split()
                if ifname == tmp[5]:
                    tmpaddr = ":".join([tmp[0][i : i + 4] for i in range(0, len(tmp[0]), 4)])

                    if firstpublic is None and (tmpaddr.startswith("2") or tmpaddr.startswith("3")):
                        firstpublic = normalize_ipv6(tmpaddr)

                    if tmp[2].lower() != "ff":
                        tmpaddr = "%s/%s" % (tmpaddr, int(tmp[2].lower(), 16))

                    tmpaddr = normalize_ipv6(tmpaddr)
                    tempaddrs.append(tmpaddr)

            if len(tempaddrs) > 1:
                tempaddrs.sort()
                addr = ", ".join(tempaddrs)
            elif len(tempaddrs) == 1:
                addr = tempaddrs[0]
            elif len(tempaddrs) == 0:
                addr = _("none/IPv4-only network")

    return {"addr": addr, "firstpublic": firstpublic}
Пример #28
0
    def parseConfigFiles(self):
        sections = []
        for setupfile in self.setupfiles:
            # 			print "[ModernWebif] loading configuration file :", setupfile
            setupfile = file(setupfile, "r")
            setupdom = xml.etree.cElementTree.parse(setupfile)
            setupfile.close()
            xmldata = setupdom.getroot()
            for section in xmldata.findall("setup"):
                configs = []
                requires = section.get("requires")
                if requires and not SystemInfo.get(requires, False):
                    continue
                key = section.get("key")
                if key not in self.allowedsections:
                    showModernWebif = section.get("showModernWebif")
                    if showModernWebif == "1":
                        self.allowedsections.append(key)
                    else:
                        continue
                # 				print "[ModernWebif] loading configuration section :", key
                for entry in section:
                    if entry.tag == "item":
                        requires = entry.get("requires")
                        if requires and not SystemInfo.get(requires, False):
                            continue

                        if int(entry.get("level", 0)) > config.usage.setup_level.index:
                            continue
                        configs.append(entry)
                if len(configs):
                    sections.append({"key": key, "description": _(section.get("title"))})
                    title = _(section.get("title", ""))
                    self.section_config[key] = (title, configs)
        sections = sorted(sections, key=lambda k: k["description"])
        self.sections = sections
Пример #29
0
def sendMessage(session, message, ttype, timeout):
	global lastreply
	if ttype not in [MessageBox.TYPE_YESNO, MessageBox.TYPE_INFO, MessageBox.TYPE_WARNING, MessageBox.TYPE_ERROR]:
		ttype = MessageBox.TYPE_INFO

	if ttype == MessageBox.TYPE_YESNO:
		lastreply = None
		session.openWithCallback(messageReply, MessageBox, message, type=ttype, timeout=timeout)
	else:
		session.open(MessageBox, message, type=ttype, timeout=timeout)

	return {
		"result": True,
		"message": _('Message sent successfully!')
	}
Пример #30
0
 def P_vol(self, request):
     if "set" not in request.args.keys() or request.args["set"][0] == "state":
         return getVolumeStatus()
     elif request.args["set"][0] == "up":
         return setVolumeUp()
     elif request.args["set"][0] == "down":
         return setVolumeDown()
     elif request.args["set"][0] == "mute":
         return setVolumeMute()
     elif request.args["set"][0][:3] == "set":
         try:
             return setVolume(int(request.args["set"][0][3:]))
         except Exception, e:
             res = getVolumeStatus()
             res["result"] = False
             res["message"] = _("Wrong parameter format 'set=%s'. Use set=set15 ") % request.args["set"][0]
             return rets
Пример #31
0
def getConfigs(key):
    configs = []
    title = None
    if not len(configfiles.sections):
        configfiles.getConfigs()
    if key in configfiles.section_config:
        config_entries = configfiles.section_config[key][1]
        title = configfiles.section_config[key][0]
    if config_entries:
        for entry in config_entries:
            try:
                data = getJsonFromConfig(eval(entry.text or ""))
                text = _(entry.get("text", ""))
                if "limits" in data:
                    text = "%s (%d - %d)" % (text, data["limits"][0], data["limits"][1])
                configs.append({"description": text, "path": entry.text or "", "data": data})
            except Exception, e:
                pass
Пример #32
0
def sendMessage(session, message, ttype, timeout):
    global lastreply
    if ttype not in [
            MessageBox.TYPE_YESNO, MessageBox.TYPE_INFO,
            MessageBox.TYPE_WARNING, MessageBox.TYPE_ERROR
    ]:
        ttype = MessageBox.TYPE_INFO

    if ttype == MessageBox.TYPE_YESNO:
        lastreply = None
        session.openWithCallback(messageReply,
                                 MessageBox,
                                 message,
                                 type=ttype,
                                 timeout=timeout)
    else:
        session.open(MessageBox, message, type=ttype, timeout=timeout)

    return {"result": True, "message": _('Message sent successfully!')}
Пример #33
0
 def P_vol(self, request):
     if "set" not in request.args.keys(
     ) or request.args["set"][0] == "state":
         return getVolumeStatus()
     elif request.args["set"][0] == "up":
         return setVolumeUp()
     elif request.args["set"][0] == "down":
         return setVolumeDown()
     elif request.args["set"][0] == "mute":
         return setVolumeMute()
     elif request.args["set"][0][:3] == "set":
         try:
             return setVolume(int(request.args["set"][0][3:]))
         except Exception, e:
             res = getVolumeStatus()
             res["result"] = False
             res["message"] = _(
                 "Wrong parameter format 'set=%s'. Use set=set15 "
             ) % request.args["set"][0]
             return rets
Пример #34
0
def getVPSChannels(session):
    vpsfile = "/etc/enigma2/vps.xml"
    from Tools.Directories import fileExists
    if fileExists(vpsfile):
        try:
            import xml.etree.cElementTree
            vpsfile = file(vpsfile, 'r')
            vpsdom = xml.etree.cElementTree.parse(vpsfile)
            vpsfile.close()
            xmldata = vpsdom.getroot()
            channels = []
            for ch in xmldata.findall("channel"):
                channels.append({
                    "serviceref": ch.attrib["serviceref"],
                    "has_pdc": ch.attrib["has_pdc"],
                    "last_check": ch.attrib["last_check"],
                    "default_vps": ch.attrib["default_vps"]
                })
            return {"result": True, "channels": channels}
        except Exception, e:
            return {"result": False, "message": _("Error parsing vps.xml")}
Пример #35
0
def getConfigs(key):
    configs = []
    title = None
    if not len(configfiles.sections):
        configfiles.getConfigs()
    if key in configfiles.section_config:
        config_entries = configfiles.section_config[key][1]
        title = configfiles.section_config[key][0]
    if config_entries:
        for entry in config_entries:
            try:
                data = getJsonFromConfig(eval(entry.text or ""))
                text = _(entry.get("text", ""))
                if "limits" in data:
                    text = "%s (%d - %d)" % (text, data["limits"][0],
                                             data["limits"][1])
                configs.append({
                    "description": text,
                    "path": entry.text or "",
                    "data": data
                })
            except Exception, e:
                pass
Пример #36
0
def cleanupTimer(session):
	session.nav.RecordTimer.cleanup()
	return {
		"result": True,
		"message": _("List of Timers has been cleaned")
	}
Пример #37
0
	def prepareMainTemplate(self):
		from Components.Network import iNetwork
		ifaces = iNetwork.getConfiguredAdapters()
		if len(ifaces):
				ip_list = iNetwork.getAdapterAttribute(ifaces[0], "ip") # use only the first configured interface
				ip = "%d.%d.%d.%d" % (ip_list[0], ip_list[1], ip_list[2], ip_list[3])
			
		ret = getCollapsedMenus()
		ret['remotegrabscreenshot'] = getRemoteGrabScreenshot()['remotegrabscreenshot']
		ret['configsections'] = getConfigsSections()['sections']
		ret['zapstream'] = getZapStream()['zapstream']
		ret['showname'] = getShowName()['showname']
		ret['customname'] = getCustomName()['customname']
		ret['boxname'] = getBoxName()['boxname']
		if not ret['boxname'] or not ret['customname']:
			ret['boxname'] = getInfo()['brand']+" "+getInfo()['model']
		ret['box'] = getBoxType()
		ret["remote"] = remote
		from Components.config import config
		if hasattr(eEPGCache, 'FULL_DESCRIPTION_SEARCH'):
			ret['epgsearchcaps'] = True
		else:
			ret['epgsearchcaps'] = False
			if config.ModernWebif.webcache.epg_desc_search.value:
				config.ModernWebif.webcache.epg_desc_search.value = False
				config.ModernWebif.webcache.epg_desc_search.save()
		ret['epgsearchtype'] = getEPGSearchType()['epgsearchtype']
		extras = []
		extras.append({ 'key': 'ajax/settings','description': _("Settings")})
		if fileExists(resolveFilename(SCOPE_PLUGINS, "Extensions/LCD4linux/WebSite.pyo")):
			lcd4linux_key = "lcd4linux/config"
			if fileExists(resolveFilename(SCOPE_PLUGINS, "Extensions/WebInterface/plugin.pyo")):
				try:
					lcd4linux_port = "http://" + ip + ":" + str(config.plugins.Webinterface.http.port.value) + "/"
					lcd4linux_key = lcd4linux_port + 'lcd4linux/config'
				except KeyError:
					lcd4linux_key = None
			if lcd4linux_key:
				extras.append({ 'key': lcd4linux_key, 'description': _("LCD4Linux Setup")})
		
		if fileExists("/usr/keys/oscam_atv/oscam.conf"):
				oscam_atv_config = ConfigParser.ConfigParser()
				oscam_atv_config.readfp(open('/usr/keys/oscam_atv/oscam.conf'))
				oscam_port = oscam_atv_config.get("webif","httpport");
				oscam_link = "http://" + ip + ":" + oscam_port + "/"
				extras.append({ 'key': oscam_link, 'description': _("OSCam Webinterface")})
		
		try:
			from Plugins.Extensions.AutoTimer.AutoTimer import AutoTimer
			extras.append({ 'key': 'ajax/at','description': _('AutoTimer')})
		except ImportError:
			pass
		if fileExists(resolveFilename(SCOPE_PLUGINS, "Extensions/ModernWebif/controllers/views/ajax/bqe.tmpl")):
			extras.append({ 'key': 'ajax/bqe','description': _('BouquetEditor')})
		
		try:
			from Plugins.Extensions.EPGRefresh.EPGRefresh import epgrefresh
			extras.append({ 'key': 'ajax/epgr','description': _('EPGRefresh')})
		except ImportError:
			pass
		ret['extras'] = extras

		return ret
Пример #38
0
def editTimer(session, serviceref, begin, end, name, description, disabled,
              justplay, afterEvent, dirname, tags, repeated, channelOld,
              beginOld, endOld, vpsinfo, always_zap):
    # TODO: exception handling
    channelOld_str = ':'.join(str(channelOld).split(':')[:11])
    rt = session.nav.RecordTimer
    for timer in rt.timer_list + rt.processed_timers:
        needed_ref = ':'.join(
            timer.service_ref.ref.toString().split(':')[:11]) == channelOld_str
        if needed_ref and int(timer.begin) == beginOld and int(
                timer.end) == endOld:
            timer.service_ref = ServiceReference(serviceref)
            # TODO: start end time check
            timer.begin = int(float(begin))
            timer.end = int(float(end))
            timer.name = name
            timer.description = description
            # TODO : EIT
            #timer.eit = eit
            timer.disabled = disabled
            timer.justplay = justplay
            timer.afterEvent = afterEvent
            timer.dirname = dirname
            timer.tags = tags
            timer.repeated = repeated
            timer.processRepeated()
            if vpsinfo is not None:
                timer.vpsplugin_enabled = vpsinfo["vpsplugin_enabled"]
                timer.vpsplugin_overwrite = vpsinfo["vpsplugin_overwrite"]
                timer.vpsplugin_time = vpsinfo["vpsplugin_time"]

            if always_zap <> -1:
                if hasattr(timer, "always_zap"):
                    timer.always_zap = always_zap == 1

            # TODO: multi tuner test
            sanity = TimerSanityCheck(rt.timer_list, timer)
            conflicts = None
            if not sanity.check():
                conflicts = sanity.getSimulTimerList()
                if conflicts is not None:
                    for conflict in conflicts:
                        if conflict.setAutoincreaseEnd(entry):
                            rt.timeChanged(conflict)
                            if not sanity.check():
                                conflicts = sanity.getSimulTimerList()
            if conflicts is None:
                rt.timeChanged(timer)
                return {
                    "result": True,
                    "message": _("Timer '%s' changed") % name
                }
            else:
                return {
                    "result": False,
                    "message": _("Timer '%s' not saved while Conflict") % name
                }

    return {
        "result":
        False,
        "message":
        _("Could not find timer '%s' with given start and end time!") % name
    }
Пример #39
0
def tvbrowser(session, request):
	if "name" in request.args:
		name = request.args['name'][0]
	else:
		name = "Unknown"

	if "description" in request.args:
		description = "".join(request.args['description'][0])
		description = description.replace("\n", " ")
	else:
		description = ""

	disabled = False
	if "disabled" in request.args:
		if (request.args['disabled'][0] == "1"):
			disabled = True

	justplay = False 
	if 'justplay' in request.args:
		if (request.args['justplay'][0] == "1"):
			justplay = True

	afterevent = 3
	if 'afterevent' in request.args:
		if (request.args['afterevent'][0] == "0") or (request.args['afterevent'][0] == "1") or (request.args['afterevent'][0] == "2"):
			afterevent = int(request.args['afterevent'][0])


	location = preferredTimerPath()
	if "dirname" in request.args:
		location = request.args['dirname'][0]

	if not location:
		location = "/hdd/movie/"

	begin = int(mktime((int(request.args['syear'][0]), int(request.args['smonth'][0]), int(request.args['sday'][0]), int(request.args['shour'][0]), int(request.args['smin'][0]), 0, 0, 0, -1)))
	end = int(mktime((int(request.args['syear'][0]), int(request.args['smonth'][0]), int(request.args['sday'][0]), int(request.args['ehour'][0]), int(request.args['emin'][0]), 0, 0, 0, -1)))	

	if end < begin:
		end += 86400

	repeated = int(request.args['repeated'][0])
	if repeated == 0:
		for element in ("mo", "tu", "we", "th", "fr", "sa", "su", "ms", "mf"):
			if element in request.args:
				number = request.args[element][0] or 0
				del request.args[element][0]
				repeated = repeated + int(number)
		if repeated > 127:
			repeated = 127
	repeated = repeated

	if request.args['sRef'][0] is None:
		return {
		 "result": False, 
		 "message": _("Missing requesteter: sRef") 
		}
	else:
		takeApart = unquote(request.args['sRef'][0]).decode('utf-8', 'ignore').encode('utf-8').split('|')
		sRef = takeApart[1]

	tags = []
	if 'tags' in request.args and request.args['tags'][0]:
		tags = unescape(request.args['tags'][0]).split(' ')

	if request.args['command'][0] == "add":
		del request.args['command'][0]
		return addTimer(session, sRef, begin, end, name, description, disabled, justplay, afterevent, location , tags , repeated)
	elif request.args['command'][0] == "del":
		del request.args['command'][0]
		return removeTimer(session, sRef, begin, end)
	elif request.args['command'][0] == "change":
		del request.args['command'][0]
		return editTimer(session, sRef, begin, end, name, description, disabled, justplay, afterevent, location, tags, repeated, begin, end, serviceref)
	else:
		return {
		 "result": False,
		 "message": _("Unknown command: '%s'") % request.args['command'][0]
		}
Пример #40
0
def recordNow(session, infinite):
	rt = session.nav.RecordTimer
	serviceref = session.nav.getCurrentlyPlayingServiceReference().toString()

	try:
		event = session.nav.getCurrentService().info().getEvent(0)
	except Exception:
		event = None

	if not event and not infinite:
		return {
			"result": False,
			"message": _("No event found! Not recording!")
		}

	if event:
		(begin, end, name, description, eit) = parseEvent(event)
		begin = time()
		msg = _("Instant record for current Event started")
	else:
		name = "instant record"
		description = ""
		eit = 0

	if infinite:
		begin = time()
		end = begin + 3600 * 10
		msg = _("Infinite Instant recording started")

	timer = RecordTimerEntry(
		ServiceReference(serviceref),
		begin,
		end,
		name,
		description, 
		eit,
		False,
		False,
		0,
		dirname=preferredInstantRecordPath()
	)
	timer.dontSave = True

	if rt.record(timer):
		return {
			"result": False,
			"message": _("Timer conflict detected! Not recording!")
		}
	nt = {
		"serviceref": str(timer.service_ref),
		"servicename": timer.service_ref.getServiceName().replace('\xc2\x86', '').replace('\xc2\x87', ''),
		"eit": timer.eit,
		"name": timer.name,
		"begin": timer.begin,
		"end": timer.end,
		"duration": timer.end - timer.begin
	}

	return {
		"result": True,
		"message": msg,
		"newtimer": nt
	}
Пример #41
0
class WebController(BaseController):
    def __init__(self, session, path=""):
        BaseController.__init__(self, path)
        self.session = session
        self.putChild("stream", StreamController(session))

    def prePageLoad(self, request):
        request.setHeader("content-type", "text/xml")

    def testMandatoryArguments(self, request, keys):
        for key in keys:
            if key not in request.args.keys():
                return {
                    "result": False,
                    "message": _("Missing mandatory parameter '%s'") % key
                }

            if len(request.args[key][0]) == 0:
                return {
                    "result": False,
                    "message": _("The parameter '%s' can't be empty") % key
                }

        return None

    def P_about(self, request):
        return {"info": getInfo(), "service": getCurrentService(self.session)}

    def P_statusinfo(self, request):
        # we don't need to fill logs with this api (it's called too many times)
        self.suppresslog = True
        return getStatusInfo(self)

    def P_tunersignal(self, request):
        return getFrontendStatus(self.session)

    def P_vol(self, request):
        if "set" not in request.args.keys(
        ) or request.args["set"][0] == "state":
            return getVolumeStatus()
        elif request.args["set"][0] == "up":
            return setVolumeUp()
        elif request.args["set"][0] == "down":
            return setVolumeDown()
        elif request.args["set"][0] == "mute":
            return setVolumeMute()
        elif request.args["set"][0][:3] == "set":
            try:
                return setVolume(int(request.args["set"][0][3:]))
            except Exception, e:
                res = getVolumeStatus()
                res["result"] = False
                res["message"] = _(
                    "Wrong parameter format 'set=%s'. Use set=set15 "
                ) % request.args["set"][0]
                return rets

        res = getVolumeStatus()
        res["result"] = False
        res["message"] = _(
            "Unknown Volume command %s") % request.args["set"][0]
        return res
Пример #42
0
			timer.vpsplugin_time = vpsinfo["vpsplugin_time"]

		if always_zap <> -1:
			if hasattr(timer,"always_zap"):
				timer.always_zap = always_zap == 1

	except Exception, e:
		print e
		return {
			"result": False,
			"message": _("Could not add timer '%s'!") % name
		}

	return {
		"result": True,
		"message": _("Timer '%s' added") % name
	}

def addTimerByEventId(session, eventid, serviceref, justplay, dirname, tags, vpsinfo, always_zap):
	event = eEPGCache.getInstance().lookupEventId(eServiceReference(serviceref), eventid)
	if event is None:
		return {
			"result": False,
			"message": _("EventId not found")
		}

	(begin, end, name, description, eit) = parseEvent(event)
	return addTimer(
		session,
		serviceref,
		begin,
Пример #43
0
def cleanupTimer(session):
    session.nav.RecordTimer.cleanup()
    return {"result": True, "message": _("List of Timers has been cleaned")}
Пример #44
0
def writeTimerList(session):
    session.nav.RecordTimer.saveTimer()
    return {"result": True, "message": _("TimerList has been saved")}
Пример #45
0
def recordNow(session, infinite):
    rt = session.nav.RecordTimer
    serviceref = session.nav.getCurrentlyPlayingServiceReference().toString()

    try:
        event = session.nav.getCurrentService().info().getEvent(0)
    except Exception:
        event = None

    if not event and not infinite:
        return {
            "result": False,
            "message": _("No event found! Not recording!")
        }

    if event:
        (begin, end, name, description, eit) = parseEvent(event)
        begin = time()
        msg = _("Instant record for current Event started")
    else:
        name = "instant record"
        description = ""
        eit = 0

    if infinite:
        begin = time()
        end = begin + 3600 * 10
        msg = _("Infinite Instant recording started")

    timer = RecordTimerEntry(ServiceReference(serviceref),
                             begin,
                             end,
                             name,
                             description,
                             eit,
                             False,
                             False,
                             0,
                             dirname=preferredInstantRecordPath())
    timer.dontSave = True

    if rt.record(timer):
        return {
            "result": False,
            "message": _("Timer conflict detected! Not recording!")
        }
    nt = {
        "serviceref":
        str(timer.service_ref),
        "servicename":
        timer.service_ref.getServiceName().replace('\xc2\x86',
                                                   '').replace('\xc2\x87', ''),
        "eit":
        timer.eit,
        "name":
        timer.name,
        "begin":
        timer.begin,
        "end":
        timer.end,
        "duration":
        timer.end - timer.begin
    }

    return {"result": True, "message": msg, "newtimer": nt}
Пример #46
0
def tvbrowser(session, request):
    if "name" in request.args:
        name = request.args['name'][0]
    else:
        name = "Unknown"

    if "description" in request.args:
        description = "".join(request.args['description'][0])
        description = description.replace("\n", " ")
    else:
        description = ""

    disabled = False
    if "disabled" in request.args:
        if (request.args['disabled'][0] == "1"):
            disabled = True

    justplay = False
    if 'justplay' in request.args:
        if (request.args['justplay'][0] == "1"):
            justplay = True

    afterevent = 3
    if 'afterevent' in request.args:
        if (request.args['afterevent'][0]
                == "0") or (request.args['afterevent'][0]
                            == "1") or (request.args['afterevent'][0] == "2"):
            afterevent = int(request.args['afterevent'][0])

    location = preferredTimerPath()
    if "dirname" in request.args:
        location = request.args['dirname'][0]

    if not location:
        location = "/hdd/movie/"

    begin = int(
        mktime((int(request.args['syear'][0]), int(request.args['smonth'][0]),
                int(request.args['sday'][0]), int(request.args['shour'][0]),
                int(request.args['smin'][0]), 0, 0, 0, -1)))
    end = int(
        mktime((int(request.args['syear'][0]), int(request.args['smonth'][0]),
                int(request.args['sday'][0]), int(request.args['ehour'][0]),
                int(request.args['emin'][0]), 0, 0, 0, -1)))

    if end < begin:
        end += 86400

    repeated = int(request.args['repeated'][0])
    if repeated == 0:
        for element in ("mo", "tu", "we", "th", "fr", "sa", "su", "ms", "mf"):
            if element in request.args:
                number = request.args[element][0] or 0
                del request.args[element][0]
                repeated = repeated + int(number)
        if repeated > 127:
            repeated = 127
    repeated = repeated

    if request.args['sRef'][0] is None:
        return {"result": False, "message": _("Missing requesteter: sRef")}
    else:
        takeApart = unquote(request.args['sRef'][0]).decode(
            'utf-8', 'ignore').encode('utf-8').split('|')
        sRef = takeApart[1]

    tags = []
    if 'tags' in request.args and request.args['tags'][0]:
        tags = unescape(request.args['tags'][0]).split(' ')

    if request.args['command'][0] == "add":
        del request.args['command'][0]
        return addTimer(session, sRef, begin, end, name, description, disabled,
                        justplay, afterevent, location, tags, repeated)
    elif request.args['command'][0] == "del":
        del request.args['command'][0]
        return removeTimer(session, sRef, begin, end)
    elif request.args['command'][0] == "change":
        del request.args['command'][0]
        return editTimer(session, sRef, begin, end, name, description,
                         disabled, justplay, afterevent, location, tags,
                         repeated, begin, end, serviceref)
    else:
        return {
            "result": False,
            "message": _("Unknown command: '%s'") % request.args['command'][0]
        }
Пример #47
0
def writeTimerList(session):
	session.nav.RecordTimer.saveTimer()
	return {
		"result": True,
		"message": _("TimerList has been saved")
	}
Пример #48
0
def getPowerTimer(session):

    try:
        from PowerTimer import TIMERTYPE, AFTEREVENT

        timers = []
        timer_list = session.nav.PowerTimer.timer_list
        processed_timers = session.nav.PowerTimer.processed_timers

        for timer in timer_list + processed_timers:
            list = []
            for time, code, msg in timer.log_entries:
                list.append({
                    "code": str(code),
                    "time": str(time),
                    "msg": str(msg)
                })
            timers.append({
                "timertype":
                str(timer.timerType),
                "timertypename":
                str({
                    TIMERTYPE.WAKEUP: "wakeup",
                    TIMERTYPE.WAKEUPTOSTANDBY: "wakeuptostandby",
                    TIMERTYPE.AUTOSTANDBY: "autostandby",
                    TIMERTYPE.AUTODEEPSTANDBY: "autodeepstandby",
                    TIMERTYPE.STANDBY: "standby",
                    TIMERTYPE.DEEPSTANDBY: "deepstandby",
                    TIMERTYPE.REBOOT: "reboot",
                    TIMERTYPE.RESTART: "restart"
                }[timer.timerType]),
                "begin":
                str(int(timer.begin)),
                "end":
                str(int(timer.end)),
                "repeated":
                str(int(timer.repeated)),
                "afterevent":
                str(timer.afterEvent),
                "aftereventname":
                str({
                    AFTEREVENT.NONE: "nothing",
                    AFTEREVENT.WAKEUPTOSTANDBY: "wakeuptostandby",
                    AFTEREVENT.STANDBY: "standby",
                    AFTEREVENT.DEEPSTANDBY: "deepstandby"
                }[timer.afterEvent]),
                "disabled":
                str(int(timer.disabled)),
                "autosleepinstandbyonly":
                str(timer.autosleepinstandbyonly),
                "autosleepdelay":
                str(timer.autosleepdelay),
                "autosleeprepeat":
                str(timer.autosleeprepeat),
                "logentries":
                list
            })

        return {"result": True, "timers": timers}
    except Exception, e:
        print e
        return {
            "result": False,
            "message": _("PowerTimer feature not available")
        }
Пример #49
0
def addTimer(session,
             serviceref,
             begin,
             end,
             name,
             description,
             disabled,
             justplay,
             afterevent,
             dirname,
             tags,
             repeated,
             vpsinfo=None,
             logentries=None,
             eit=0,
             always_zap=-1):
    rt = session.nav.RecordTimer

    print "mao1", dirname

    if not dirname:
        dirname = preferredTimerPath()

    print "mao2", dirname

    try:
        timer = RecordTimerEntry(ServiceReference(serviceref),
                                 begin,
                                 end,
                                 name,
                                 description,
                                 eit,
                                 disabled,
                                 justplay,
                                 afterevent,
                                 dirname=dirname,
                                 tags=tags)

        timer.repeated = repeated

        if logentries:
            timer.log_entries = logentries

        conflicts = rt.record(timer)
        if conflicts:
            errors = []
            for conflict in conflicts:
                errors.append(conflict.name)

            return {
                "result":
                False,
                "message":
                _("Conflicting Timer(s) detected! %s") % " / ".join(errors)
            }
        #VPS
        if vpsinfo is not None:
            timer.vpsplugin_enabled = vpsinfo["vpsplugin_enabled"]
            timer.vpsplugin_overwrite = vpsinfo["vpsplugin_overwrite"]
            timer.vpsplugin_time = vpsinfo["vpsplugin_time"]

        if always_zap <> -1:
            if hasattr(timer, "always_zap"):
                timer.always_zap = always_zap == 1

    except Exception, e:
        print e
        return {
            "result": False,
            "message": _("Could not add timer '%s'!") % name
        }
Пример #50
0
            timer.vpsplugin_enabled = vpsinfo["vpsplugin_enabled"]
            timer.vpsplugin_overwrite = vpsinfo["vpsplugin_overwrite"]
            timer.vpsplugin_time = vpsinfo["vpsplugin_time"]

        if always_zap <> -1:
            if hasattr(timer, "always_zap"):
                timer.always_zap = always_zap == 1

    except Exception, e:
        print e
        return {
            "result": False,
            "message": _("Could not add timer '%s'!") % name
        }

    return {"result": True, "message": _("Timer '%s' added") % name}


def addTimerByEventId(session, eventid, serviceref, justplay, dirname, tags,
                      vpsinfo, always_zap):
    event = eEPGCache.getInstance().lookupEventId(
        eServiceReference(serviceref), eventid)
    if event is None:
        return {"result": False, "message": _("EventId not found")}

    (begin, end, name, description, eit) = parseEvent(event)
    return addTimer(session, serviceref, begin, end, name, description, False,
                    justplay, AFTEREVENT.AUTO, dirname, tags, False, vpsinfo,
                    None, eit, always_zap)