Beispiel #1
0
 def __init__(self, conn, addr):
     Thread.__init__(self)
     print_flush("Pixels :", Mesh.pixels)
     #Manage adressing procedures
     Mesh.addressed = not (Mesh.pixels == {})
     self.ama_check = 0
     self.previous_state = 1
     self.model = Model(SchedulerState.get_rows(),
                        SchedulerState.get_cols())
     #Communication with mesh network config
     self.msg = Frame()
     self.mesh_conn = conn
     self.mesh_addr = addr
     self.l = Listen(conn)
     self.l.start()
     self.stopped = False
     #Communication with RabbitMQ config
     self.channel = None
     self.connection = None
     credentials = pika.PlainCredentials(
         os.environ['RABBITMQ_DEFAULT_USER'],
         os.environ['RABBITMQ_DEFAULT_PASS'])
     self.params = pika.ConnectionParameters(host='rabbit',
                                             credentials=credentials,
                                             heartbeat=0)
Beispiel #2
0
def start_forced_fap(fap):
    SchedulerState.clear_user_app_queue()
    SchedulerState.set_app_started_at()
    name = fap['name']
    params = fap['params']

    app = {
        'name': name,
        'username': '******',
        'userid': '>>>>FORCED<<<<',
        'params': fap['params'],
        'task_id': start_forced_fap.request.id,
        'last_alive': time.time(),
        'started_at': datetime.datetime.utcnow().isoformat(),
        'is_default': False,
        'is_forced': True,
        'expire_at':
        str(datetime.datetime.utcnow() + datetime.timedelta(weeks=52))
    }
    SchedulerState.set_current_app(app)
    SchedulerState.set_event_lock(False)
    fap = globals()[name](app['username'], app['userid'])
    try:
        fap.run(params=params)
        return True
    finally:
        fap.close()
        redis.set(SchedulerState.KEY_FORCED_APP, 'False')
        SchedulerState.set_current_app({})
Beispiel #3
0
 def vietnam(self):  # scalable
     cols = SchedulerState.get_cols()
     rows = SchedulerState.get_rows()
     self.model.set_all('red')
     for c in range(cols // 2, cols // 2 + 2):
         self.model.set_pixel(rows // 2, c, name_to_rgb('yellow'))
         self.model.set_pixel(rows // 2 + 1, c, name_to_rgb('yellow'))
Beispiel #4
0
 def liechtenstein(self):  # scalable
     rows = SchedulerState.get_rows()
     cols = SchedulerState.get_cols()
     for i in range(0, rows // 2):
         self.model.set_line(i, (0, 0.16, 0.5))
     for i in range(rows // 2, rows):
         self.model.set_line(i, (0.8, 0.05, 0.13))
Beispiel #5
0
 def ukraine(self):  # scalable
     cols = SchedulerState.get_cols()
     rows = SchedulerState.get_rows()
     for i in range(0, rows // 2):
         self.model.set_line(i, (1, 0.83, 0))
     for i in range(rows // 2, rows):
         self.model.set_line(i, (0, 0.35, 0.74))
Beispiel #6
0
def admin_clear_queue(user):
    if is_admin(user):
        SchedulerState.stop_app_request(user)
        SchedulerState.clear_user_app_queue()
    else:
        abort(403, "Forbidden Bru")
    return '', 204
Beispiel #7
0
def quit_user_app(user):
    c_app = SchedulerState.get_current_app()
    removed = False
    if is_admin(user) or c_app.get('userid', False) == user['userid']:
        SchedulerState.stop_app_request(user)
        removed = True
    return jsonify(removed=removed)
Beispiel #8
0
 def tunisia(self):  # scalable
     cols = SchedulerState.get_cols()
     rows = SchedulerState.get_rows()
     self.model.set_all('red')
     for c in range(int(cols / 8 * 3), int(cols / 8 * 6)):
         self.model.set_pixel(rows // 2, c, (1, 1, 1))
         self.model.set_pixel(rows // 2 + 1, c, (1, 1, 1))
Beispiel #9
0
 def poland(self):  # scalable
     cols = SchedulerState.get_cols()
     rows = SchedulerState.get_rows()
     for i in range(0, rows // 2):
         self.model.set_line(0, name_to_rgb('white'))
     for i in range(rows // 2, rows):
         self.model.set_line(i, name_to_rgb('red'))
Beispiel #10
0
 def morocco(self):  # scalable
     cols = SchedulerState.get_cols()
     rows = SchedulerState.get_rows()
     self.model.set_all((0.73, 0.13, 0.16))
     for c in range(int(cols / 10 * 5), int(cols / 10 * 6)):
         for r in range(int(rows / 6 * 3), int(rows / 6 * 4)):
             self.model.set_pixel(r, c, (0, 0.4, 0.2))
Beispiel #11
0
def load_fapps_config(user):
    # Configure id and name of the apps.
    if is_admin(user):
        SchedulerState.set_activated(g.data.get('apps'));
        return jsonify(success=True)
    else:
        return jsonify(success=False)
Beispiel #12
0
 def disable_frontage(self):
     SchedulerState.clear_user_app_queue()
     c_app = SchedulerState.get_current_app()
     if c_app:
         self.stop_app(c_app,
                     Fap.CODE_CLOSE_APP,
                     'The admin disabled Arbalet Frontage')
Beispiel #13
0
 def japan(self):  # scalable
     rows = SchedulerState.get_rows()
     cols = SchedulerState.get_cols()
     self.model.set_all((1, 1, 1))
     for r in range(max(1, rows // 4), max(3, int(rows / 4 * 3))):
         for c in range(max(1, cols // 3), max(3, int(cols / 3 * 2))):
             self.model.set_pixel(r, c, name_to_rgb('red'))
Beispiel #14
0
 def china(self):  # scalable
     cols = SchedulerState.get_cols()
     rows = SchedulerState.get_rows()
     self.model.set_all('red')
     for r in range(0, min(2, rows)):
         for c in map(lambda x: min(x, cols), [1, 2, 4]):
             self.model.set_pixel(r, c, name_to_rgb('yellow'))
Beispiel #15
0
 def sweden(self):  # scalable
     cols = SchedulerState.get_cols()
     rows = SchedulerState.get_rows()
     self.model.set_all((0, 0.41, 0.66))
     for i in range(rows // 2, rows // 2 + 1):
         self.model.set_line(i, name_to_rgb('yellow'))
     for i in range(cols // 3, cols // 3 + 2):
         self.model.set_column(i, name_to_rgb('yellow'))
Beispiel #16
0
    def post(self, user):
        name = request.get_json()['name']
        params = request.get_json().get('params', {})
        expires = SchedulerState.get_expires_value()

        queued, removed_previous = SchedulerState.start_user_app_request(user['username'], user['userid'], name, params, expires)
        return jsonify(queued=queued, removed_previous=removed_previous,
                       keep_alive_delay=SchedulerState.DEFAULT_KEEP_ALIVE_DELAY)
Beispiel #17
0
 def libya(self):  # scalable
     rows = SchedulerState.get_rows()
     cols = SchedulerState.get_cols()
     self.model.set_all((0, 0, 0))
     for i in range(rows // 3):
         self.model.set_line(i, (1, 0, 0))
     for i in range(int(rows / 3 * 2), rows):
         self.model.set_line(i, name_to_rgb('darkgreen'))
Beispiel #18
0
 def stop_current_app_start_next(self, queue, c_app, next_app):
     SchedulerState.set_event_lock(True)
     print_flush('## Revoking app [stop_current_app_start_next]')
     self.stop_app(c_app, Fap.CODE_EXPIRE, 'Someone else turn')
     # Start app
     print_flush("## Starting {} [stop_current_app_start_next]".format(next_app['name']))
     start_fap.apply_async(args=[next_app], queue='userapp')
     SchedulerState.wait_task_to_start()
Beispiel #19
0
def load_sunrise_config(user):
    # Configure id and name of the apps.
    if is_admin(user):
        SchedulerState.set_day_table(g.data.get('dates'));
        SchedulerState.get_day_table();
        return jsonify(success=True)
    else:
        return jsonify(success=False)
Beispiel #20
0
def load_general_config(user):
    # Configure id and name of the apps.
    if is_admin(user):
        SchedulerState.set_id(g.data.get('id', ''))
        SchedulerState.set_name(g.data.get('name', ''))
        return jsonify(success=True)
    else:
        return jsonify(success=False)
Beispiel #21
0
def admin_set_settings(user):
    try:
        lifetime = int(request.get_json().get('default_lifetime'))
    except (ValueError, KeyError):
        return jsonify(done=False)
    else:
        SchedulerState.set_default_fap_lifetime(lifetime)
        return jsonify(done=True)
Beispiel #22
0
    def post(self, user):
        if not is_admin(user):
            abort(403, "Forbidden Bru")

        app_state_bool = request.get_json().get('app_state', False)
        SchedulerState.set_default_scheduled_app_state(request.get_json().get('app_name'), app_state_bool)

        return SchedulerState.get_default_scheduled_apps(serialized=True)
Beispiel #23
0
 def lituania(self):  # scalable
     rows = SchedulerState.get_rows()
     cols = SchedulerState.get_cols()
     for i in range(rows // 3):
         self.model.set_line(i, name_to_rgb('yellow'))
     for i in range(rows // 3, int(rows / 3 * 2)):
         self.model.set_line(i, name_to_rgb('darkgreen'))
     for i in range(int(rows / 3 * 2), rows):
         self.model.set_line(i, name_to_rgb('red'))
Beispiel #24
0
 def luxembourg(self):  # scalable
     rows = SchedulerState.get_rows()
     cols = SchedulerState.get_cols()
     for i in range(rows // 3):
         self.model.set_line(i, name_to_rgb('red'))
     for i in range(rows // 3, int(rows / 3 * 2)):
         self.model.set_line(i, name_to_rgb('white'))
     for i in range(int(rows / 3 * 2), rows):
         self.model.set_line(i, name_to_rgb('skyblue'))
Beispiel #25
0
 def netherlands(self):  # scalable
     cols = SchedulerState.get_cols()
     rows = SchedulerState.get_rows()
     for i in range(0, rows // 3):
         self.model.set_line(i, name_to_rgb('firebrick'))
     for i in range(rows // 3, int(rows / 3 * 2)):
         self.model.set_line(i, name_to_rgb('white'))
     for i in range(int(rows / 3 * 2), rows):
         self.model.set_line(i, name_to_rgb('navy'))
Beispiel #26
0
def admin_app_quit(user):
    if is_admin(user):
        if (SchedulerState.get_current_app()['name'] == "Snap"):
            Websock.set_grantUser({'id': "turnoff", 'username': "******"})
        removed = SchedulerState.stop_forced_app_request(user)
        return jsonify(removed=removed)
    else:
        abort(403, "Forbidden Bru")
    return '', 204
Beispiel #27
0
 def venezuela(self):  # scalable
     cols = SchedulerState.get_cols()
     rows = SchedulerState.get_rows()
     for i in range(0, rows // 3):
         self.model.set_line(i, name_to_rgb('yellow'))
     for i in range(rows // 3, int(rows / 3 * 2)):
         self.model.set_line(i, name_to_rgb('navy'))
     for i in range(int(rows / 3 * 2), rows):
         self.model.set_line(i, name_to_rgb('firebrick'))
Beispiel #28
0
def status():
    c_app = SchedulerState.get_current_app()
    c_app_name = c_app.get('name', '') if c_app else ''
    return jsonify(is_usable=SchedulerState.usable(),
                   is_forced=SchedulerState.get_forced_app(),
                   current_app=c_app_name,
                   next_on_time=SchedulerState.get_scheduled_on_time().isoformat(),
                   state=SchedulerState.get_enable_state(),
                   current_time=datetime.datetime.now().isoformat())
Beispiel #29
0
 def yemen(self):  # scalable
     cols = SchedulerState.get_cols()
     rows = SchedulerState.get_rows()
     for i in range(0, rows // 3):
         self.model.set_line(i, name_to_rgb('red'))
     for i in range(rows // 3, int(rows / 3 * 2)):
         self.model.set_line(i, name_to_rgb('white'))
     for i in range(int(rows / 3 * 2), rows):
         self.model.set_line(i, (0, 0, 0))
Beispiel #30
0
def admin_enabled_scheduler(user):
    state = g.data.get('state', 'on')
    if state not in ['on', 'off', 'scheduled']:
        abort(415, "Incorrect state")

    SchedulerState.set_enable_state(state)
    return jsonify(is_usable=SchedulerState.usable(),
                   is_forced=SchedulerState.get_forced_app(),
                   state=SchedulerState.get_enable_state(),
                   current_time=datetime.datetime.utcnow().isoformat())