def cfg_reset(cmd): if cmd == 'reset': # Remove driver if active drivers.activate(None) # Delete configuration data if os.path.exists(settings.CONFIGFOLDER): shutil.rmtree(settings.CONFIGFOLDER, True) # Reboot subprocess.call(['/sbin/reboot'], stderr=void) return jsonify({'reset': True}) elif cmd == 'reboot': subprocess.call(['/sbin/reboot'], stderr=void) return jsonify({'reboot': True}) elif cmd == 'shutdown': subprocess.call(['/sbin/poweroff'], stderr=void) return jsonify({'shutdown': True}) elif cmd == 'update': if os.path.exists('/root/photoframe/update.sh'): p = subprocess.Popen( '/bin/bash /root/photoframe/update.sh 2>&1 | logger -t forced_update', shell=True) return 'Update in process', 200 else: return 'Cannot find update tool', 404 elif cmd == 'clearCache': slideshow.createEvent("clearCache") return jsonify({'clearCache': True}) elif cmd == 'forgetMemory': slideshow.createEvent("memoryForget") return jsonify({'forgetMemory': True})
def cfg_reset(): # Remove driver if active drivers.activate(None) # Delete configuration data if os.path.exists(settings.CONFIGFOLDER): shutil.rmtree(settings.CONFIGFOLDER, True) # Reboot subprocess.call(['/sbin/reboot'], stderr=void); return jsonify({'reset': True})
def cfg_keyvalue(key, value): global powermanagement # Depending on PUT/GET we will either change or read # values. If key is unknown, then this call fails with 404 if key is not None: if settings.getUser(key) is None: abort(404) return if request.method == 'PUT': status = True if key == "keywords": # Keywords has its own API abort(404) return settings.setUser(key, value) if key in ['display-driver']: drv = settings.getUser('display-driver') if drv == 'none': drv = None special = drivers.activate(drv) if special is None: settings.setUser('display-driver', 'none') settings.setUser('display-special', None) status = False else: settings.setUser('display-special', special) if key in ['timezone']: # Make sure we convert + to / settings.setUser('timezone', value.replace('+', '/')) helper.timezoneSet(settings.getUser('timezone')) if key in ['resolution', 'tvservice']: width, height, tvservice = display.setConfiguration( value, settings.getUser('display-special')) settings.setUser('tvservice', tvservice) settings.setUser('width', width) settings.setUser('height', height) display.enable(True, True) if key in ['display-on', 'display-off']: timekeeper.setConfiguration(settings.getUser('display-on'), settings.getUser('display-off')) if key in ['autooff-lux', 'autooff-time']: timekeeper.setAmbientSensitivity(settings.getUser('autooff-lux'), settings.getUser('autooff-time')) if key in ['powersave']: timekeeper.setPowermode(settings.getUser('powersave')) if key in ['shutdown-pin']: powermanagement.stopmonitor() powermanagement = shutdown(settings.getUser('shutdown-pin')) settings.save() return jsonify({'status': status}) elif request.method == 'GET': if key is None: return jsonify(settings.getUser()) else: return jsonify({key: settings.getUser(key)}) abort(404)
def upload(item): retval = {'status': 200, 'return': {}} if request.method == 'POST': # check if the post request has the file part if 'filename' not in request.files: logging.error('No file part') abort(405) file = request.files['filename'] if item == 'driver': # if user does not select file, browser also # submit an empty part without filename if file.filename == '' or not file.filename.lower().endswith( '.zip'): logging.error('No filename or invalid filename') abort(405) filename = os.path.join('/tmp/', secure_filename(file.filename)) file.save(filename) if item == 'driver': result = drivers.install(filename) if result is not False: # Check and see if this is the driver we're using if result['driver'] == settings.getUser('display-driver'): # Yes it is, we need to activate it and return info about restarting special = drivers.activate(result['driver']) if special is None: settings.setUser('display-driver', 'none') settings.setUser('display-special', None) retval['status'] = 500 else: settings.setUser('display-special', special) retval['return'] = {'reboot': True} else: retval['return'] = {'reboot': False} try: os.remove(filename) except: pass if retval['status'] == 200: return jsonify(retval['return']) abort(retval['status']) abort(405)