def displaySummary(self): # Load the settings for this user allowedStartTime, displayStartTime = Settings.getUserStartTime(self.userId) allowedEndTime, displayEndTime = Settings.getUserEndTime(self.userId) viewingLimit = Settings.getUserViewingLimit(self.userId) usersName = Settings.getUserName(self.userId) # Work out how much time is remaining displayRemainingTime = viewingLimit - self.usedViewingLimit if displayRemainingTime < 0: displayRemainingTime = 0 # Do a notification to let the user know how long they have left today summaryUserName = "******" % (__addon__.getLocalizedString(32035), usersName) summaryLimit = "%s: %d" % (__addon__.getLocalizedString(32033), viewingLimit) summaryLimitRemaining = "%s: %d" % (__addon__.getLocalizedString(32131), displayRemainingTime) summaryAccess = "%s: %s - %s" % (__addon__.getLocalizedString(32132), displayStartTime, displayEndTime) fullSummary = "%s\n%s\n%s\n%s" % (summaryUserName, summaryLimit, summaryLimitRemaining, summaryAccess) xbmcgui.Dialog().ok(__addon__.getLocalizedString(32001).encode('utf-8'), fullSummary)
def startupCheck(self): # When the system starts up we need to check to see if User restriction is enabled if Settings.getNumberOfLimitedUsers() < 1: log("UserPinControl: No Limited users configured") self.isEnabled = False return self.isEnabled = True # Set the background background = Background.createBackground() if background is not None: background.show() preventAccess = False tryAgain = True while tryAgain: tryAgain = False # Need to find out which user this is, so prompt them for a pin numberpad = NumberPad.createNumberPad() numberpad.doModal() # Get the code that the user entered enteredPin = numberpad.getPin() del numberpad # Find out which user owns this pin self.userId = Settings.getUserForPin(enteredPin) # Check for the unrestricted user if self.userId == "unrestrictedUserPin": log("UserPinControl: Unrestricted user pin entered") self.isEnabled = False break if self.userId in [None, ""]: log("UserPinControl: Unknown pin entered, offering retry") # This is not a valid user, so display the error message and work out # if we should prompt the user again or shutdown the system tryAgain = xbmcgui.Dialog().yesno(__addon__.getLocalizedString(32001).encode('utf-8'), __addon__.getLocalizedString(32104).encode('utf-8'), __addon__.getLocalizedString(32129).encode('utf-8')) if not tryAgain: # Need to stop this user accessing the system preventAccess = True # Remove the background if we had one if background is not None: background.close() del background if preventAccess: log("UserPinControl: Shutting down as unknown user pin entered") self.shutdown() elif self.isEnabled: log("UserPinControl: User logged in is %s" % self.userId) # Load the settings for this user self.allowedStartTime, displayStartTime = Settings.getUserStartTime(self.userId) self.allowedEndTime, displayEndTime = Settings.getUserEndTime(self.userId) self.usedViewingLimit = Settings.getUserViewingUsedTime(self.userId) self.displaySummary() # Now we can record when this user started viewing in this session localTime = time.localtime() self.startedViewing = (localTime.tm_hour * 60) + localTime.tm_min # We actually want to also record how many minutes have already been viewed in previous # sessions, so roll the clock back by that much self.startedViewing = self.startedViewing - self.usedViewingLimit log("UserPinControl: Time already used for user is %d" % self.usedViewingLimit) # Record that we are running as a restricted user so that the default script # can display the status of how long is left when it is selected xbmcgui.Window(10000).setProperty("PinSentry_RestrictedUser", self.userId)