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
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 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)
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 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)
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)
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")
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 quit_application(self): self.logger.info('Received quit command from server!') config.get_app().stop_flag = True
def update_software(self): self.logger.info('Executing update command from server') config.get_app().updater.update()
def restart_camera(self): self.logger.info('Executing camera restart command from server') config.get_app().camera_controller.restart_camera()
#-*- 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 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
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
def setUp(self): self.app = get_app()
#! /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)
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)
#-*- 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))
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
def upload_logs(self): self.logger.info("Sending logs") log.send_logs(config.get_app().user_login.user_token) self.logger.info("Done")
def switch_camera(self, module): self.logger.info('Changing camera module to %s due to server request' % module) config.get_app().switch_camera(module)
#!/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)
def validate(): app = get_app(options.input) app.validate() display(app.results)