""" 1. In extract() function, after 'if request.method ', replace the way web_class and attr are collected from the user by web_cls_select(). that way, the UI is much more user friendly and the user can select. 2. In retrieve_resutls() function, put the results in a CSV document and set up a link for the user to download the results. you can use export() function, at the end 3. In submit review, ask user to upload a CSV document, and then add this to the database """ app = create_app() @app.route('/') def index(): return render_template('index.html') @app.route('/get_attrs', methods=["GET"]) def get_attrs(): web_class = request.args.get('web_class') attrs = PyramidPool.query.with_entities( PyramidPool.attr_nm).distinct().filter( PyramidPool.web_cls_num == web_class).all() res = []
def main(): app = create_app() window = MainWindow() window.startBut.clicked.connect(functools.partial(startRl, window=window)) window.show() app.exec_()
def __init__(self, pin: str = '123456'): # system starts disarmed, the '_' in front on the name indicates that this variable is supposed to be private # python does not have any other way to differentiate between public and private. This same annotation is also # used for private functions # The 'self' indicates that this variable is an instance variable much like 'this' is used in other languages. self.is_armed = False self.is_sensing = False # is sensing is used to tell the system start looking for intruders # When arming a system, the system needs to give a delay in order to for the home owner to leave the house # without tripping the alarm system self._arm_time_delay = 5 # 1 * 60 # setting to a default pin self._pin = pin self._user_pin_entry = "" self._user_first_key_entry_time = 0 self._invalid_entry_count = 0 # When user incorrectly enters in the pass code 4 times the system gets locked for 5min self.system_locked = False self._lock_time = 0 self._lockout_duration = 10 # * 60 # currently set to 5 min but might consider less for testing self._pin_entry_max_timeout = 10 # Unit in seconds self._max_invalid_entry_before_system_lock = 4 self.alarm_active = False # variable that tracks if a user modified the current state of the system # System needs to be running self._running = False # list to keep track of worker threads # DO NOT Create or start threads here!! Do it in the run method. self._threads = [] # Setup logging for this module. self._logger = logging.getLogger('AlarmSystem') ch = logging.StreamHandler() ch.setLevel(logging.DEBUG) formatter = logging.Formatter( '%(asctime)s - %(name)s - %(threadName)s - %(levelname)s - %(message)s' ) ch.setFormatter(formatter) self._logger.addHandler(ch) self._logger.setLevel(logging.DEBUG) # setting up tcp socket to receive self._socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) self._socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) try: self._socket.bind(('127.0.0.1', 9090)) except socket.error as e: self._logger.fatal('{}'.format(e)) exit(1) # Create the sub system items that the main system will monitor and control self.keypad = Keypad() self.led = LED() self.event_queue = queue.Queue() # self.pir_sensor = PirSensor(self.event_queue) # Turned off for now due to interference self.ultra_sonic_distance_sensor = UltraSonicDistanceSensor( self.event_queue) self.calendar = Calendar() self.watson = Watson() self.notifications = Notifications() # The web UI self._web_client = ui.create_app() self._web_process = Process(target=self._web_client.run, args=('0.0.0.0', 1234))
from ui import create_app app = create_app('ui')