def execute():
    json_req = request.json
    name = json_req.get("name", "def_name").strip()
    pwd = json_req.get("pwd", "def_pwd").strip()

    # check if name duplicate
    # find = Consumer.query.filter_by(name=name).all()
    # if len(find) > 0:
    #     return BaseResp.err('all error')
    find = Consumer.query.filter_by(name=name).first()
    if find:
        return BaseResp.err('name already exist')

    consumer = Consumer(name=name, pwd=str_utils.md5_with_salt(pwd, name))
    db.session.add(consumer)
    db.session.flush()
    current_app.logger.debug(">>> insert consumer, id = {}".format(consumer.id))

    # Format: 20170709_184921
    data_time = time.strftime('%Y%m%d_%H%M%S', time.localtime(time.time()))
    api_key = str_utils.gen_uuid(name + data_time)
    secret_key = str_utils.gen_uuid(pwd + data_time)
    key = Key(consumer_id=consumer.id, api_key=api_key, secret_key=secret_key, name='default')
    db.session.add(key)
    db.session.flush()
    current_app.logger.debug(">>> insert key, id = {}".format(key.id))

    db.session.commit()
    return BaseResp.ok_with_data(ConsumerCreateResp(api_key=api_key, secret_key=secret_key))
 def delete_keys(self):
     keys = Key.get_all()
     if keys['data']:
         self.delete_keys_window = DeleteKeysWindow(keys['data'])
         self.delete_keys_window.show()
     elif keys['warnings']:
         self.info = InfoWindow(
             label_text=u"Немає ключів які можна видалити")
         self.info.show()
         QtCore.QTimer.singleShot(5000, self.info.close)
     else:
         self.info_error.show()
         QtCore.QTimer.singleShot(5000, self.info_error.close)
示例#3
0
 def get_the_keys(self):
     if User.get_all()['warnings']:
         self.info = InfoWindow(
             label_text=
             u"Перший запуск програми, будь ласка створіть користувача!")
         self.info.show()
         self.new_user = AddNewUser()
         QtCore.QTimer.singleShot(3000, self.info.close)
         QtCore.QTimer.singleShot(3000, self.new_user.show)
     else:
         # TODO: Open window with user auth
         user = User.get_by_rfid("12334")['data']
         #self.authenticate_user()
         username = user.firstname + u' ' + user.lastname
         self.welcome_window(username)
         keys = Key.get_all()
         if keys['errors']:
             self.info_error.show()
             QtCore.QTimer.singleShot(5000, self.info_error.close)
         elif keys['warnings']:
             self.get_key_window(keys=None, user=None)
         else:
             self.get_key_window(keys['data'], user=user)
示例#4
0
 def button_clicked(self):
     sender = self.sender()
     key = Key.get_by_rfid(str(sender.objectName()))
     if key['data']:
         if key['data'].status is True:
             self.choice = ChoiceWindow(
                 operation='get_key',
                 label_text=u'Ви дійсно хочете взяти ключ від кімнати {} ?'.
                 format(key['data'].room),
                 user=self.user,
                 key=key['data'].rfid_chip,
                 parent=self)
             self.choice.show()
             QtCore.QTimer.singleShot(10000, self.choice.close)
         else:
             taken_key = UserKeyLink.get_only_taken_keys(key['data'].id)
             if taken_key['data']:
                 taken_info = taken_key['data'].user.firstname + ' ' \
                              + taken_key['data'].user.lastname + ', ' \
                              + taken_key['data'].date_taken.strftime('%d %b %Y, %H:%M').decode('utf-8')
                 self.info = InfoWindow(
                     label_text=u'Ключ узяв: {}'.format(taken_info))
                 self.info.show()
                 QtCore.QTimer.singleShot(10000, self.info.close)
示例#5
0
 def press_yes_delete_key(self):
     key = Key.get_by_rfid(self.key)['data']
     status = key.status
     deleted = User.delete(key)
     if deleted['data'] is True:
         self.info = InfoWindow(label_text=u'Ключ видалено',
                                parent=self,
                                previous_parent=self.parent)
         self.info.show()
         if status is True:
             return True
             # TODO: start returning keys in keys in box
         QtCore.QTimer.singleShot(5000, self.info.close)
         QtCore.QTimer.singleShot(5000, self.close)
         QtCore.QTimer.singleShot(5000, self.parent.close)
     else:
         self.info = InfoWindow(
             label_text=
             u'Вибачте, сталася помилка,зверніться будь ласка до адміністратора'
         )
         self.info.show()
         QtCore.QTimer.singleShot(5000, self.info.close)
         QtCore.QTimer.singleShot(5000, self.close)
         QtCore.QTimer.singleShot(5000, self.parent.close)
示例#6
0
 def button_clicked(self):
     sender = self.sender()
     key = Key.get_by_rfid(str(sender.objectName()))
     if key['data']:
         self.choice = ChoiceWindow(
             operation='delete_key',
             label_text=u'Видалити ключ від кімнати {} ?'.format(
                 key['data'].room),
             key=key['data'].rfid_chip,
             parent=self)
         self.choice.show()
         QtCore.QTimer.singleShot(10000, self.choice.close)
     elif key['warnings']:
         self.info = InfoWindow(
             label_text=u'У системі незнадено такого ключа')
         self.info.show()
         QtCore.QTimer.singleShot(5000, self.info.close)
     else:
         self.info = InfoWindow(
             label_text=
             u'Вибачте, сталася помилка,зверніться будь ласка до адміністратора'
         )
         self.info.show()
         QtCore.QTimer.singleShot(5000, self.info.close)
    def setUp(self):
        self.app = app
        self.client = self.app.test_client
        self.database_name = "tunadex_local_db"
        # Local database for testing purposes
        self.database_path = ("postgresql://*****:*****@localhost:5432"
                              f"/{self.database_name}")
        setup_db(self.app, self.database_path)

        self.tune_data = [
            Tune(title='Lush Life', composer=1, key=6, mastery=4),
            Tune(title='Body and Soul', composer=2, key=6, mastery=5),
            Tune(title='Freddie the Freeloader', composer=3, key=3, mastery=5)
        ]

        self.composer_data = [
            Composer('Billy Strayhorn'),
            Composer('Johnny Green, Edward Heyman, Robert Sour, Frank Eyton'),
            Composer('Miles Davis')
        ]

        self.key_data = [
            Key(key='C Major'),
            Key(key='F Major'),
            Key(key='B-flat Major'),
            Key(key='E-flat Major'),
            Key(key='A-flat Major'),
            Key(key='D-flat Major'),
            Key(key='G-flat Major'),
            Key(key='C-flat Major'),
            Key(key='C-sharp Major'),
            Key(key='F-sharp Major'),
            Key(key='B Major'),
            Key(key='E Major'),
            Key(key='A Major'),
            Key(key='D Major'),
            Key(key='G Major'),
            Key(key='A Minor'),
            Key(key='D Minor'),
            Key(key='G Minor'),
            Key(key='C Minor'),
            Key(key='F Minor'),
            Key(key='B-flat Minor'),
            Key(key='E-flat Minor'),
            Key(key='A-flat Minor'),
            Key(key='A-sharp Minor'),
            Key(key='D-sharp Minor'),
            Key(key='G-sharp Minor'),
            Key(key='C-sharp Minor'),
            Key(key='F-sharp Minor'),
            Key(key='B Minor'),
            Key(key='E Minor')
        ]

        self.mastery_data = [
            Mastery(level="Don't know at all"),
            Mastery(level='Not in ear, but can read'),
            Mastery(level='In ear, but not memorized'),
            Mastery(level='Memorized, but actively thinking'),
            Mastery(level='Mastered, know it cold')
        ]

        self.tune_3_patch = {
            "title": "Lush Life",
            "composer": "Billy Strayhorn",
            "key": "D-flat Major",
            "mastery": 5
        }

        self.new_tune_4 = {
            "title": "Footprints",
            "composer": "Wayne Shorter",
            "key": "C Minor",
            "mastery": 5
        }

        with self.app.app_context():
            self.db = SQLAlchemy()
            self.db.reflect()
            self.db.drop_all()
            self.db.create_all()
            self.db.init_app(self.app)

        for composer in self.composer_data:
            composer.insert()
        for key in self.key_data:
            key.insert()
        for mastery in self.mastery_data:
            mastery.insert()
        for tune in self.tune_data:
            tune.insert()