Exemplo n.º 1
0
    def __erp_update(self):
        """Sync registers.
        """

        # Update periodically bgERP.
        self.__erp_service_update_timer.update()
        if self.__erp_service_update_timer.expired:
            self.__erp_service_update_timer.clear()

            ztm_regs = self.__registers.by_scope(Scope.Device)
            ztm_regs = ztm_regs.new_then(60)
            ztm_regs_dict = ztm_regs.to_dict()

            update_state = self.__erp.sync(ztm_regs_dict)

            if update_state is not None: #  is not None

                if self.__registers is not None:
                    self.__registers.update(update_state)
                    # Clear the last atendies. (Eml6287)
                    self.__registers.write("ac.last_update_attendees", str([]))

                # (Eml6287)
                # (Request to stop the queue from MG @ 15.01.2021)
                # not_send_len = self.__registers_snapshot.qsize()
                # if not_send_len > 0:
                #     Get from the queue.
                #     snapshot = self.__registers_snapshot.get()
                #     Send the firs from the queue.
                #     self.__erp.sync(snapshot)

            else:

                GlobalErrorHandler.log_no_connection_erp(self.__logger)
                self.__erp_state_machine.set_state(ERPState.Login)
Exemplo n.º 2
0
    def login(self, credentials):
        """Log in to the service.

        Parameters
        ----------
        credentials : mixed
            Credentials of the device for the service.

        Returns
        -------
        bool
            Success
        """

        login_state = False

        uri = self.host + self.__api_login

        try:
            response = requests.post(uri,
                                     data=credentials,
                                     timeout=self.timeout)

            if response is not None:

                # Take new login session key.
                if response.status_code == 200:

                    data = response.json()
                    if data is not None:

                        # Authorization token.
                        if "token" in data:
                            self.__session.save(data["token"])
                            self.__session.load()
                            login_state = self.__session.session != ""

                        # ERP identity.
                        if "bgerp_id" in data:
                            self.__erp_id = data["bgerp_id"]

                # Use saved session key.
                elif response.status_code == 423:
                    self.__session.load()
                    login_state = self.__session.session != ""
                    self.__erp_id = credentials["bgerp_id"]

                # Not authorized.
                elif response.status_code == 403:
                    login_state = False

                else:
                    self.__logger.error("HTTP Error code: {}".format(
                        response.status_code))
                    login_state = False

        except Exception as ex:
            GlobalErrorHandler.log_no_connection_erp(self.__logger)
            self.__logger.error(traceback.format_exc())
            login_state = False

        return login_state