예제 #1
0
 def switch_camera(self, module):
     self.logger.info('Changing camera module to %s due to server request' %
                      module)
     printer_interface = self.find_parent_printer_interface()
     if printer_interface:
         config.get_app().camera_controller.switch_camera(
             module, printer_interface.printer_token)
         return True
예제 #2
0
 def wait_for_prints_end(self):
     self.logger.info('Waiting for prints to end to install update...')
     last_non_idle_time = time.time()
     while not config.get_app().stop_flag:
         for printer_interface in config.get_app().printer_interfaces:
             if printer_interface.get_printer_state() != 'ready':
                 last_non_idle_time = time.time()
         if time.time() - last_non_idle_time > self.IDLE_TIMEOUT_FOR_AUTOUPDATE:
             self.logger.info('...all prints are finished. Rebooting client...')
             config.get_app().stop_flag = True
         time.sleep(3)
예제 #3
0
 def wait_for_prints_end(self):
     self.logger.info('Waiting for prints to end to install update...')
     last_non_idle_time = time.time()
     while not config.get_app().stop_flag:
         for printer_interface in config.get_app().printer_interfaces:
             if printer_interface.get_printer_state() != 'ready':
                 last_non_idle_time = time.time()
         if time.time(
         ) - last_non_idle_time > self.IDLE_TIMEOUT_FOR_AUTOUPDATE:
             self.logger.info(
                 '...all prints are finished. Rebooting client...')
             config.get_app().stop_flag = True
         time.sleep(3)
 def check_camera_name(self):
     camera_name = config.get_app(
     ).camera_controller.get_current_camera_name()
     if self.current_camera != camera_name:
         self.logger.info("Camera change detected")
         self.camera_update = camera_name
         self.current_camera = camera_name
 def __init__(self, usb_info, user_login):
     self.logger = logging.getLogger(__name__)
     self.creation_time = time.time()
     self.stop_flag = False
     self.usb_info = usb_info
     self.user_login = user_login
     self.user_token = user_login.user_token
     self.printer = None
     self.printer_token = None
     self.error_state = "connecting"
     self.last_errors = []
     self.last_error = None
     self.groups = []
     self.printer_name = ""
     self.printer_profile = {}
     self.possible_printer_types = self.get_possible_printer_types()
     self.show_printer_type_selector = False
     self.printer_type_selection_request = None
     self.printer_type_reset_request = False
     self.printer_groups_change_request = None
     self.printer_rename_request = False
     self.camera_update = False
     self.current_camera = config.get_app(
     ).camera_controller.get_current_camera_name()
     self.logger.info('New printer interface for %s' % str(usb_info))
     super(PrinterInterface,
           self).__init__(name="PrinterInterface%s" % self.usb_info)
 def pack(self, target, *args, **kwargs):
     if target == 'user_login':
         data = { 'login': {'user': args[0], 'password': args[1]}, "platform": sys.platform,
                  'host_mac': self.MACHINE_ID, "version": version.version }
         path = self.user_login_path
     elif target == 'printer_login':
         data = { 'user_token': args[0], 'printer': args[1], "version": version.version,
                  "data_time": time.ctime(), "camera": config.get_app().camera_controller.get_current_camera_name()}
         path = self.printer_login_path
     elif target == 'command':
         data = { 'printer_token': args[0], 'report': args[1], 'command_ack': args[2] }
         if not data['command_ack']:
             data.pop('command_ack')
         path = self.command_path
     elif target == 'camera':
         data = { 'user_token': args[0], 'camera_number': args[1], 'camera_name': args[2],
                  'file_data': args[3], 'host_mac': self.MACHINE_ID }
         path = self.camera_path
     elif target == 'cloudsync':
         data = { 'user_token': args[0], 'file_data': args[1] }
         path = self.cloudsync_path
     else:
         config.create_error_report(4, 'No such target for packaging: ' + target, None,
                                    self.logger, is_blocking=False)
         data, path = None, None
     for key, value in kwargs.items():
         data[key] = value
     return path, json.dumps(data)
 def __init__(self, usb_info, user_login):
     self.logger = logging.getLogger(__name__)
     self.creation_time = time.time()
     self.stop_flag = False
     self.usb_info = usb_info
     self.user_login = user_login
     self.user_token = user_login.user_token
     self.printer = None
     self.printer_token = None
     self.error_state = "connecting"
     self.last_errors = []
     self.last_error = None
     self.groups = []
     self.printer_name = ""
     self.printer_profile = {}
     self.possible_printer_types = self.get_possible_printer_types()
     self.show_printer_type_selector = False
     self.printer_type_selection_request = None
     self.printer_type_reset_request = False
     self.printer_groups_change_request = None
     self.printer_rename_request = False
     self.camera_update = False
     self.current_camera = config.get_app().camera_controller.get_current_camera_name()
     self.logger.info('New printer interface for %s' % str(usb_info))
     super(PrinterInterface, self).__init__(name="PrinterInterface%s" % self.usb_info)
예제 #8
0
def upload_compressed_logs(zip_file_path):
    logger = logging.getLogger(__name__)
    url = 'https://' + http_client.HTTPClient.URL + http_client.HTTPClient.token_send_logs_path
    data = {'user_token': config.get_app().user_login.user_token}
    logger.info('Sending logs to %s' % url)
    with open(zip_file_path, 'rb') as zip_file:
        files = {'file_data': zip_file}
        report_file = None
        if os.path.exists(REPORT_FILE_PATH):
            report_file = open(REPORT_FILE_PATH, 'rb')
            files['report_file'] = report_file
        try:
            response = requests.post(url, data=data, files=files)
        except Exception as e:
            return 'Error while sending logs: ' + str(e)
        finally:
            if report_file:
                report_file.close()
                os.remove(REPORT_FILE_PATH)
    if response:
        result = response.text
        logger.debug("Log sending response: " + result)
        if response.status_code != 200:
            return 'Error while uploading logs: response code is not 200 (OK)'
        try:
            answer = json.loads(result)
        except Exception as e:
            return 'Error while uploading logs: ' + str(e)
        if not answer.get('success'):
            return result
예제 #9
0
 def pack(self, target, *args, **kwargs):
     if target == 'user_login':
         data = { 'login': {'user': args[0], 'password': args[1]},
                  'platform': platforms.PLATFORM, 'host_mac': self.mac,
                  'local_ip' : self.local_ip, 'version': version.version}
         if 'disposable_token' in kwargs:
             data['login']['disposable_token'] = kwargs['disposable_token']
         path = self.user_login_path
         #self.logger.debug(data)
     elif target == 'printer_login':
         data = { 'user_token': args[0], 'printer': args[1], "version": version.version,
                  "data_time": time.ctime(), "camera": config.get_app().camera_controller.get_current_camera_name() }
         path = self.printer_login_path
     elif target == 'command':
         data = { 'printer_token': args[0], 'report': args[1], 'command_ack': args[2] }
         if not data['command_ack']:
             data.pop('command_ack')
         path = self.command_path
     elif target == 'camera':
         data = { 'user_token': args[0], 'camera_number': args[1], 'camera_name': args[2],
                  'file_data': args[3], 'host_mac': self.mac}
         path = self.camera_path
     elif target == 'cloudsync':
         data = { 'user_token': args[0], 'file_data': args[1]}
         path = self.cloudsync_path
     else:
         config.create_error_report(4, 'No such target for packaging: ' + target, None,
                                    self.logger, is_blocking=False)
         data, path = None, None
     for key, value in kwargs.items():
         data[key] = value
     return path, json.dumps(data)
예제 #10
0
def upload_compressed_logs(zip_file_path):
    logger = logging.getLogger(__name__)
    url = 'https://' + http_client.HTTPClient.URL + http_client.HTTPClient.token_send_logs_path
    data = {'user_token': config.get_app().user_login.user_token}
    logger.info('Sending logs to %s' % url)
    with open(zip_file_path, 'rb') as zip_file:
        files = {'file_data': zip_file}
        report_file = None
        if os.path.exists(REPORT_FILE_PATH):
            report_file = open(REPORT_FILE_PATH, 'rb')
            files['report_file'] = report_file
        try:
            response = requests.post(url, data=data, files=files)
        except Exception as e:
            return 'Error while sending logs: ' + str(e)
        finally:
            if report_file:
                report_file.close()
                os.remove(REPORT_FILE_PATH)
    if response:
        result = response.text
        logger.debug("Log sending response: " + result)
        if response.status_code != 200:
            return 'Error while uploading logs: response code is not 200 (OK)'
        try:
            answer = json.loads(result)
        except Exception as e:
            return 'Error while uploading logs: ' + str(e)
        if not answer.get('success'):
            return result
 def switch_camera(self, new_camera_name, token):
     if new_camera_name != self.HD_CAMERA_NAME:  #for starting camera by command from base sender
         token = config.get_app().user_login.user_token
     self.logger.info('Switching camera module from %s to %s' %
                      (self.current_camera_name, new_camera_name))
     self.stop_camera_process()
     return self.start_camera_process(camera_name=new_camera_name,
                                      token=token)
예제 #12
0
def send_logs():
    logger = logging.getLogger('app.' + __name__)
    prepare_logs_to_send()
    try:
        snapshot_files = os.listdir(LOG_SNAPSHOTS_DIR)
    except OSError:
        logging.info("No logs snapshots to send")
    else:
        #print '\n\n%s\n\n' % str(file_name)
        error = compress_and_send(config.get_app().user_login.user_token, get_paths_to_logs_snapshots(snapshot_files))
        if error:
            logger.warning('Error while sending logs: ' + error)
            return error
        logger.debug('Logs successfully sent')
 def select_baudrate_and_connect(self):
     baudrates = self.profile['baudrate']
     self.logger.info('Baudrates list for %s : %s' %
                      (self.profile['name'], str(baudrates)))
     for baudrate in baudrates:
         self.error_code = 0
         self.error_message = ""
         self.online_flag = False
         self.logger.info("Connecting at baudrate %i" % baudrate)
         self.printcore = printcore()
         self.printcore.onlinecb = self.onlinecb
         self.printcore.errorcb = self.errorcb
         self.printcore.tempcb = self.tempcb
         self.printcore.recvcb = self.recvcb
         self.printcore.sendcb = self.sendcb
         self.printcore.endcb = self.endcb
         self.printcore.connect(self.profile['COM'], baudrate)
         time.sleep(0.1)
         if not self.printcore.printer:
             self.logger.warning("Error connecting to printer at %i" %
                                 baudrate)
             self.disconnect_printcore()
         else:
             wait_start_time = time.time()
             self.logger.info("Waiting for printer online")
             while time.time() < (wait_start_time +
                                  self.DEFAULT_TIMEOUT_FOR_PRINTER_ONLINE):
                 if config.get_app().stop_flag:
                     self.disconnect_printcore()
                     raise RuntimeError(
                         "Connection to printer interrupted by closing")
                 if self.online_flag:
                     self.logger.info(
                         "Successful connection to printer %s:%i" %
                         (self.profile['COM'], baudrate))
                     time.sleep(0.1)
                     self.logger.info("Sending homing gcodes...")
                     for gcode in self.profile["end_gcodes"]:
                         self.printcore.send_now(gcode)
                     self.logger.info("...done homing")
                     return True
             self.logger.warning(
                 "Timeout while waiting for printer online. Reseting and reconnecting..."
             )
             self.reset()
             time.sleep(2)
             self.logger.warning("...done reseting.")
     raise RuntimeError("No more baudrates to try")
 def select_baudrate_and_connect(self):
     baudrates = self.profile['baudrate']
     self.logger.info('Baudrates list for %s : %s' % (self.profile['name'], str(baudrates)))
     for baudrate in baudrates:
         self.error_code = 0
         self.error_message = ""
         self.online_flag = False
         self.logger.info("Connecting at baudrate %i" % baudrate)
         self.printcore = printcore()
         self.printcore.onlinecb = self.onlinecb
         self.printcore.errorcb = self.errorcb
         self.printcore.tempcb = self.tempcb
         self.printcore.recvcb = self.recvcb
         self.printcore.sendcb = self.sendcb
         self.printcore.endcb = self.endcb
         self.printcore.connect(self.profile['COM'], baudrate)
         time.sleep(0.1)
         if not self.printcore.printer:
             self.logger.warning("Error connecting to printer at %i" % baudrate)
             self.disconnect_printcore()
         else:
             wait_start_time = time.time()
             self.logger.info("Waiting for printer online")
             while time.time() < (wait_start_time + self.DEFAULT_TIMEOUT_FOR_PRINTER_ONLINE):
                 if config.get_app().stop_flag:
                     self.disconnect_printcore()
                     raise RuntimeError("Connection to printer interrupted by closing")
                 if self.online_flag:
                     self.logger.info("Successful connection to printer %s:%i" % (self.profile['COM'], baudrate))
                     time.sleep(0.1)
                     self.logger.info("Sending homing gcodes...")
                     for gcode in self.profile["end_gcodes"]:
                         self.printcore.send_now(gcode)
                     self.logger.info("...done homing")
                     return True
             self.logger.warning("Timeout while waiting for printer online. Reseting and reconnecting...")
             self.reset()
             time.sleep(2)
             self.logger.warning("...done reseting.")
     raise RuntimeError("No more baudrates to try")
예제 #15
0
 def find_parent_printer_interface(self):
     for printer_interface in config.get_app().printer_interfaces:
         if printer_interface.usb_info == self.usb_info:
             return printer_interface
예제 #16
0
 def quit_application(self):
     self.logger.info('Received quit command from server!')
     config.get_app().stop_flag = True
예제 #17
0
 def update_software(self):
     self.logger.info('Executing update command from server')
     config.get_app().updater.update()
예제 #18
0
 def restart_camera(self):
     self.logger.info('Executing camera restart command from server')
     config.get_app().camera_controller.restart_camera()
예제 #19
0
#-*- coding:utf-8 -*-

import flask
from config import get_app

app = get_app()

def render_template(url, **data):
    if not "debug" in data.keys():
        data["debug"] = app.config["DEBUG"]

    return flask.render_template(url, **data)
 def find_parent_printer_interface(self):
     for printer_interface in config.get_app().printer_interfaces:
         if printer_interface.usb_info == self.usb_info:
             return printer_interface
 def check_camera_name(self):
     camera_name = config.get_app().camera_controller.get_current_camera_name()
     if self.current_camera != camera_name:
        self.logger.info("Camera change detected")
        self.camera_update = camera_name
        self.current_camera = camera_name
예제 #22
0
import os

from flask import Flask, redirect, url_for, session, request, abort, make_response, jsonify, json
from config import get_app, facebook, MAIN_QUESTIONS, project_root, BANDAS_CAMISAS, BANDAS_CAMISAS_HOME
from helpers import need_to_be_logged, need_to_be_admin, get_current_user, get_slug, render_template, get_client_ip, \
    has_cookie_login, set_cookie_login, delete_cookie_login, user_logged, make_login, get_cookie_login, random_insert
from controllers import get_or_create_user, validate_answers, random_top_bands, get_user_bands, \
    get_or_create_band, like_band, unlike_band, get_top_bands, get_all_users, get_related_bands, get_band, \
    get_answers_and_counters_from_question, get_shows_from_bands, get_shows_from_bands_by_city, set_user_tipo,\
    newsletter_exists, get_or_create_newsletter, get_all_bands, get_all_newsletters, get_or_create_band_question,\
    get_random_bands_from_a_slug_list
from pagseguropy.pagseguro import Pagseguro
from config import cache

app = get_app(
)  #  Explicitando uma variável app nesse arquivo para o Heroku achar

carrinho = Pagseguro(email_cobranca="*****@*****.**",
                     tipo='CP',
                     frete=16.0)  # CP é para poder usar o método cliente
formulario_pag_seguro = carrinho.mostra(imprime=False,
                                        imgBotao="/static/img/pagseguro.png")
range_tamanhos = ['Baby Look', 'P', 'M', 'G', 'GG']
sem_estoque = ''


def __make_response_plain_text__(response_text, type_of_response="text/plain"):
    response = make_response(response_text)
    response.headers["Content-type"] = type_of_response
    return response
예제 #23
0
 def setUp(self):
     self.app = get_app()
예제 #24
0
#! /usr/bin/env python

import config
from views import views

conf = config.get_config()
log = config.configure_logging()
app = config.get_app()
bind_ip = conf.get('server', 'bind_ip')
bind_port = conf.getint('server', 'bind_port')
debug_mode = conf.get('general', 'debug_mode')
log.debug('Binding to ' + bind_ip + ':' + str(bind_port))

app.register_blueprint(views)

if __name__ == "__main__":
    app.run(debug=debug_mode, host=bind_ip, port=bind_port)
예제 #25
0
 def setUp(self):
     self.app = get_app()
예제 #26
0
from flask import jsonify, Response
from peewee import CharField, DateTimeField, IntegerField, Model

import config

#-------------------------------------------------------------------------------
# Constants
#-------------------------------------------------------------------------------
MAX_TOP_DREAMS = 8
EXTERNAL_RESOURCE_REFRESH_FREQ = 30

#-------------------------------------------------------------------------------
# Config
#-------------------------------------------------------------------------------
app = config.get_app()
db = config.get_database()

#-------------------------------------------------------------------------------
# Models
#-------------------------------------------------------------------------------
class Dream(Model):
    """" Dream model. """
    name = CharField()
    count = IntegerField(default=0)

    picURL = CharField(null=True)
    picURLthn = CharField(null=True)
    definition = CharField(null=True)

    created_on = DateTimeField(default=datetime.datetime.now)
 def restart_camera(self):
     self.logger.info("Executing camera restart command from server")
     config.get_app().camera_controller.restart_camera()
 def create_app(self):
     from config import get_app
     return get_app()
 def switch_camera(self, new_camera_name, token):
     if new_camera_name != self.HD_CAMERA_NAME:  # for starting camera by command from base sender
         token = config.get_app().user_login.user_token
     self.logger.info("Switching camera module from %s to %s" % (self.current_camera_name, new_camera_name))
     self.stop_camera_process()
     return self.start_camera_process(camera_name=new_camera_name, token=token)
예제 #30
0
 def update_software(self):
     self.logger.info('Executing update command from server')
     config.get_app().updater.update()
예제 #31
0
#-*- coding:utf-8 -*-

import unicodedata
import re
import flask
import json
import urllib2
import random

from flask import session, render_template, request
from config import get_app

app = get_app()
facebook_module = None
controllers_module = None

def render_template(url, **data):
    if not "debug" in data.keys():
        data["debug"] = app.config["DEBUG"]

    return flask.render_template(url, **data)

def get_client_ip():
    if not request.headers.getlist("X-Forwarded-For"):
        ip = request.remote_addr
    else:
        ip = request.headers.getlist("X-Forwarded-For")[0]
    return ip

def get_slug(title):
    slug = unicodedata.normalize('NFKD', unicode(title))
예제 #32
0
 def quit_application(self):
     self.logger.info('Received quit command from server!')
     config.get_app().stop_flag = True
 def switch_camera(self, module):
     self.logger.info("Changing camera module to %s due to server request" % module)
     printer_interface = self.find_parent_printer_interface()
     if printer_interface:
         config.get_app().camera_controller.switch_camera(module, printer_interface.printer_token)
         return True
예제 #34
0
 def upload_logs(self):
     self.logger.info("Sending logs")
     log.send_logs(config.get_app().user_login.user_token)
     self.logger.info("Done")
예제 #35
0
 def switch_camera(self, module):
     self.logger.info('Changing camera module to %s due to server request' % module)
     config.get_app().switch_camera(module)
예제 #36
0
#!/usr/bin/python
# -*- coding: utf-8 -*-

import os

from flask import Flask, redirect, url_for, session, request, abort, make_response

from config import get_app, facebook, BAIRROS, cache
from helpers import render_template, need_to_be_logged, get_current_user, assinar_com_fb, assinar_com_dados
from controllers import get_all_users_by_datetime, set_maximo_meta, get_maximo_meta, get_redis_count, incr_redis_count
from forms import UserCaptchaForm, UserForm

app = get_app() #  Explicitando uma variável app nesse arquivo para o Heroku achar
user_form_default = UserForm()
user_captcha_form_default = UserCaptchaForm()


@cache.cached(timeout=18000)
def pagina_principal():
    return render_template("index.html", BAIRROS=BAIRROS, msg=None, form=user_form_default)

def get_form():
    count = get_redis_count(request)

    if count:
        count = int(count)
    else:
        count = 0

    if request.method == 'POST':
        form = UserForm(request.form) if count <= 2 else UserCaptchaForm(request.form)
예제 #37
0
파일: __main__.py 프로젝트: stphivos/fnval
def validate():
    app = get_app(options.input)
    app.validate()
    display(app.results)