コード例 #1
0
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})
コード例 #2
0
ファイル: frame.py プロジェクト: hpheuer/PhotoFrameVariation
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})
コード例 #3
0
ファイル: frame.py プロジェクト: merlynkline/photoframe
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)
コード例 #4
0
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)