Changeset - 341231366b02
[Not reviewed]
default
0 3 1
Dennis Fink - 9 years ago 2016-03-14 21:47:06
dennis.fink@c3l.lu
Added open form
4 files changed with 51 insertions and 25 deletions:
0 comments (0 inline, 0 general)
spaceapi/sensors.py
Show inline comments
 
@@ -8,7 +8,7 @@ import jsonschema
 
from flask import Blueprint, jsonify, request, abort, current_app
 

	
 
from .auth import httpauth
 
from .active import save_last_state
 
#from .active import save_last_state
 
from .utils import first, fuzzy_list_find, ActiveStatus
 

	
 
sensors_views = Blueprint('sensors', __name__)
spaceapi/state.py
Show inline comments
 
@@ -4,7 +4,7 @@ from time import time
 

	
 
from flask import Blueprint, jsonify, request, current_app, abort
 

	
 
import twitter
 
#import twitter
 

	
 
from .utils import ActiveStatus
 
from .auth import httpauth
 
@@ -14,38 +14,41 @@ state_views = Blueprint('state', __name_
 
ALLOWED_STATE_KEYS = frozenset(('open', 'lastchange',
 
                                'trigger_person', 'message'))
 

	
 
twitter_api = twitter.Api()
 

	
 
#twitter_api = twitter.Api()
 

	
 
@state_views.route('/set/<key>', methods=['POST'])
 
@httpauth.login_required
 
def set_state(key):
 

	
 
def set_new_state(key, value):
 
    active = ActiveStatus()
 
    value = json.loads(request.data.decode('utf-8'))['value']
 
    current_app.logger.info(value)
 
    current_app.logger.info(type(value))
 

	
 
    if key in ALLOWED_STATE_KEYS:
 
        active['state'][key] = value
 

	
 
        if key == 'open':
 
            active['state']['lastchange'] = int(time())
 

	
 
            if 'twitter_consumer_key' in current_app.config:
 
                twitter_api.SetCredentials(
 
                    consumer_key=current_app.config['twitter_consumer_key'],
 
                    consumer_secret=current_app.config['twitter_consumer_secret'],
 
                    access_token_key=current_app.config['twitter_access_token_key'],
 
                    access_token_secret=current_app.config['twitter_access_token_secret']
 
                )
 

	
 
                if value:
 
                    twitter_api.PostUpdate('The space is now open!')
 
                else:
 
                    twitter_api.PostUpdate('The space is now closed!')
 
            # if 'twitter_consumer_key' in current_app.config:
 
            #     twitter_api.SetCredentials(
 
            #         consumer_key=current_app.config['twitter_consumer_key'],
 
            #         consumer_secret=current_app.config['twitter_consumer_secret'],
 
            #         access_token_key=current_app.config['twitter_access_token_key'],
 
            #         access_token_secret=current_app.config['twitter_access_token_secret']
 
            #     )
 
            #
 
            #     if value:
 
            #         twitter_api.PostUpdate('The space is now open!')
 
            #     else:
 
            #         twitter_api.PostUpdate('The space is now closed!')
 

	
 
        active.save_last_state()
 
        return jsonify(active)
 
    else:
 
        return abort(400)
 

	
 

	
 
@state_views.route('/set/<key>', methods=['POST'])
 
@httpauth.login_required
 
def set_state(key):
 

	
 
    value = json.loads(request.data.decode('utf-8'))['value']
 
    current_app.logger.info(value)
 
    current_app.logger.info(type(value))
 

	
 
    return set_new_state(key, value)
spaceapi/templates/open.html
Show inline comments
 
new file 100644
 
{% extends "base.html" %}
 

	
 
{% block content %}
 
  <form method="POST">
 
    <div class="form-group">
 
      <input type="submit" name="open" value="open">
 
      <input type="submit" name="close" value="close">
 
    </div>
 
  </form>
 
{% endblock %}
spaceapi/views.py
Show inline comments
 
from flask import Blueprint, jsonify, render_template, abort
 
from flask import Blueprint, jsonify, render_template, abort, request, redirect, url_for
 

	
 
from .utils import request_wants_json, ActiveStatus
 
from .auth import httpauth
 
from .state import set_new_state
 

	
 
root_views = Blueprint('root', __name__)
 

	
 
@@ -24,3 +25,15 @@ def reload():
 
    active = ActiveStatus()
 
    active.reload()
 
    return jsonify(active)
 

	
 

	
 
@root_views.route('/open', methods=('GET', 'POST'))
 
@httpauth.login_required
 
def open():
 
    if request.method == 'POST':
 
        if 'close' in request.form:
 
            return set_new_state('open', False)
 
        elif 'open' in request.form:
 
            return set_new_state('open', True)
 

	
 
    return render_template('open.html')
0 comments (0 inline, 0 general)