Esempio n. 1
0
    def parseFilesAndSave(self, path):

        files = [
            f for f in listdir(path)
            if isfile(join(path, f)) and f.endswith('csv')
        ]
        files.sort()
        fundDict = {}
        lastDayInfosOfCurrentMonth = {}
        lastDayInfosOfLastMonth = {}
        db = Database()
        db.recreateDatabase()

        for file in files:
            try:

                fundDict, lastDayInfosOfCurrentMonth = self.parseFile(
                    path, file)
                self.calculateReturns(fundDict, lastDayInfosOfLastMonth,
                                      lastDayInfosOfCurrentMonth)
                db.insertData(fundDict)

            except (Exception):
                print('Error reading file:' + path + file)
                traceback.print_exc()
                raise
Esempio n. 2
0
def test_save_msg(msg='hahah', tag='test tag', talker='admin',
                  expiry=None, time=None, force_create=True):
    """test save a message"""
    interface = DataTransfer(Database(PATH))
    msg = MsgWithTag(msg, tag, talker, expiry, time)
    interface.save_msg(msg, force_create=force_create)
    assert interface.get_msg_by_id(1) is not None
Esempio n. 3
0
def test_del_by_time():
    """test delete by time stamp"""
    interface = DataTransfer(Database(PATH))
    data_num = len(interface.get_all_msgs())
    test_save_msg(time=datetime.now() - timedelta(days=3))
    interface.del_msg_by_timedelta(timedelta(days=3))
    assert len(interface.get_all_msgs()) == data_num
Esempio n. 4
0
def test_get_all_id_and_tags():
    """test get all id and tags"""
    interface = DataTransfer(Database(PATH))
    all_data = interface.get_all_id_and_tags()
    assert len(all_data) == 2
    assert all_data[0][1] == 'test 2'
    assert all_data[1][1] == 'test 3'
Esempio n. 5
0
def test_not_reply():
    """not saying to the bot"""
    controller = TagController(DataTransfer(Database(PATH, CONFIG)))
    reply = controller.handle_msg(quoted='null',
                                  msg='null',
                                  talker='me',
                                  to_bot=False)
    assert not reply
Esempio n. 6
0
def test_get_msgs_by_time_range():
    """test get msgs by time range"""
    interface = DataTransfer(Database(PATH))
    start = datetime.now() + timedelta(days=10)
    end = start + timedelta(days=20)
    for i in range(10):
        test_save_msg(time=start + timedelta(days=i))
    assert len(interface.get_msgs_by_time_range(start, end)) == 10
Esempio n. 7
0
def test_create():
    """create table"""
    for path in [PATH, 'database_config.pkl']:
        try:
            os.remove(path)
        except FileNotFoundError:
            pass
    interface = DataTransfer(Database(PATH))
Esempio n. 8
0
def test_create():
    """create tag_controller"""
    for path in [PATH, CONFIG]:
        try:
            os.remove(path)
        except FileNotFoundError:
            pass
    controller = TagController(DataTransfer(Database(PATH, CONFIG)))
Esempio n. 9
0
def test_wrong_cron_format():
    """test timed delete with wrong format"""
    controller = TagController(DataTransfer(Database(PATH)))
    ifreply = controller.handle_msg(quoted=None,
                                    msg=f'{KEY_DELETE} {KEY_SPLIT}*-*-0-0-0-1',
                                    talker='me',
                                    to_bot=True)
    assert ifreply
    assert controller.reply == reply.parse_datetime_error()
Esempio n. 10
0
def test_get_all_msgs():
    """test get all messages"""
    test_save_msg('second', 'test 2', 'admin2', datetime(2020, 3, 26))
    test_save_msg('third', 'test 3')
    interface = DataTransfer(Database(PATH))
    all_msg = interface.get_all_msgs()
    _, msg = all_msg[0]
    assert len(all_msg) == 2
    assert msg.expiry == datetime(2020, 3, 26)
Esempio n. 11
0
def total_water(db_file, table):
    database = Database(db_file)
    if not database.table_exists(table):
        database.close()
        return None
    query_response = database.query("SELECT total FROM " + table +
                                    " ORDER BY total DESC;")
    database.close()
    return query_response[0][0]
Esempio n. 12
0
def test_update():
    """test insert duplicated message with different tag"""
    interface = DataTransfer(Database(PATH))
    test_save_msg(msg='update message', tag='test update')
    data_num = len(interface.get_all_msgs())
    test_save_msg(msg='update message', tag='test update 2', force_create=False)
    all_msg = interface.get_all_msgs()
    assert len(all_msg) == data_num
    assert all_msg[-1][1].msg == 'update message'
    assert all_msg[-1][1].tags == 'test update 2'
Esempio n. 13
0
def test_insert():
    """insert data"""
    database = Database(PATH)
    database.insert(TABLE, ["msg", "tags"], ["hehe", "no use"])
    database.insert(TABLE, ["msg", "tags"],
                    ["meeting at 9:00", "meeting time"])
    database.insert(TABLE, ["msg", "tags"], ["what?", "meeting time"])
    assert database.search(TABLE, 'id', 2) is not None
    assert len(database.search(TABLE, 'tags', 'meeting time')) == 2
    database.close()
Esempio n. 14
0
def test_expiry():
    """test expiry of messages"""
    interface = DataTransfer(Database(PATH))
    controller = TagController(interface)
    data_num = len(interface.get_all_msgs())
    expiry = datetime.now() + timedelta(seconds=1)
    msg = f'test expiry, {KEY_EXPIRY}{KEY_SPLIT}{str(expiry)}'
    controller.handle_msg(quoted='second', msg=msg, talker='me', to_bot=True)
    sleep(1)
    assert data_num == len(interface.get_all_msgs())
Esempio n. 15
0
 def __init__(self, data_path='database.db', config_path='config.pkl'):
     """params:
         data_path: path of database file,
         config_path: path of database config file, which
                      contains auto-created information"""
     self.data_path = data_path
     self.config_path = config_path
     self.interface = DataTransfer(Database(data_path, config_path))
     self.question_answering = QuestionAnswering(self.interface)
     self.tag_controller = TagController(self.interface)
     self.display = Display(self.interface)
Esempio n. 16
0
def test_save_msg():
    """test save messaga"""
    interface = DataTransfer(Database(PATH))
    controller = TagController(interface)
    ifreply = controller.handle_msg(quoted='first',
                                    msg='test save msg',
                                    talker='me',
                                    to_bot=True)
    assert ifreply
    assert controller.reply == reply.save_msg_success()
    assert len(interface.get_all_msgs()) == 1
Esempio n. 17
0
def test_delete_by_time():
    """test delete by time range"""
    database = Database(PATH)
    data_num = len(database.select(TABLE))
    start = datetime.now()
    database.insert(
        TABLE, ["msg", "tags", 'time'],
        ["delete by time", "create time", f'{str(datetime.now())}'])
    end = datetime.now()
    database.delete_by_time(TABLE, 'time', start, end)
    assert len(database.select(TABLE)) == data_num
Esempio n. 18
0
def init_data():
    """create tag_controller"""
    for path in [PATH, CONFIG]:
        try:
            os.remove(path)
        except FileNotFoundError:
            pass
    interface = DataTransfer(Database(PATH, CONFIG))
    for quoted, tag, in MSG_CONTENTS:
        msg = MsgWithTag(quoted, tag, 'me')  # talker is not important here
        interface.save_msg(msg)
    return interface
Esempio n. 19
0
def test_delete():
    """test delete message"""
    interface = DataTransfer(Database(PATH))
    controller = TagController(interface)
    data_num = len(interface.get_all_msgs())
    ifreply = controller.handle_msg(quoted=None,
                                    msg=f'{KEY_DELETE} {KEY_SPLIT}1',
                                    talker='me',
                                    to_bot=True)
    assert ifreply
    assert controller.reply == reply.del_msg_success(1)
    assert len(interface.get_all_msgs()) == data_num - 1
Esempio n. 20
0
    def _mw_update(self, db, query, vals, etha=1e-4):

        # directed query value
        y = query.value(db)
        r = (vals < y) * y + (vals >= y) * (1 - y)

        # next Database
        new_xp = np.multiply(np.exp(-etha * r), db.data)
        new_x = normalize(new_xp, ord=1)
        new_db = Database(new_x, 'probability', db.uni)
        new_db._norm = db.norm

        return new_db
Esempio n. 21
0
def action(name):
    """
    determines whether to use password or facial
    recognition for authenticating, or unlock via Bluetooth and make repairs
    """
    if name == 'UserPass':
        print("\nAuthenticating {}\n".format(name))
        username = Screen().input('Enter in Username: '******'Enter in Password: '******'FaceRecog':
        print("\nAuthenticating with Face Recognition")
        username = Screen().input('Enter in Username: '******'The car has been unlocked, ' +
                           'press [enter] to continue.')
    elif name == 'EngineerBT':
        #publish request to MP, requesting for engineers' Bluetooth MAC addr
        pub = Publisher()
        pub.publish("Requesting engineers' Bluetooth MAC addresses", 'MAC')
        if BluetoothUnlocker().search_and_unlock():
            Screen().input('The car has been unlocked, ' +
                           'press [enter] to scan QR code.')
            auth = Authenticator()
            if auth.id_engineer():
                Screen().input(
                    'Engineer profile verified!\n' +
                    'Issue will be marked as fixed if verified. ' +
                    'Please visit carshare.com\nPress [enter] to continue.')
            else:
                Screen().input('Engineer profile verification failed, ' +
                               'press [enter] to continue.')
        else:
            Screen().input('The car failed to unlock, ' +
                           'press [enter] to continue.')
    elif name == 'Return':
        print("\nReturning the car")
        username = Screen().input('Enter in Username: '******'username': username,
            'timestamp': now_time,
            'location': Geolocation().run(),
            'agentid': agent_id
        }
        pub = Publisher()
        pub.publish(payload, 'RETURN')
Esempio n. 22
0
def test_timed_delete():
    """test timed delete"""
    controller = TagController(DataTransfer(Database(PATH)))
    ifreply = controller.handle_msg(quoted=None,
                                    msg=f'{KEY_DELETE} {KEY_SPLIT}*-*-2-0-0-1',
                                    talker='me',
                                    to_bot=True)
    assert ifreply
    # substitute former plan
    ifreply = controller.handle_msg(quoted=None,
                                    msg=f'{KEY_DELETE} {KEY_SPLIT}*-*-*-*-*-1',
                                    talker='me',
                                    to_bot=True)
    assert ifreply
Esempio n. 23
0
def total_week_water(db_file, table, timestamp):
    database = Database(db_file)
    if not database.table_exists(table):
        database.close()
        return None
    query_response = database.query("SELECT timestamp, total FROM " + table +
                                    " ORDER BY timestamp ASC;")
    database.close()
    for i in range(len(query_response)):
        if is_same_week(query_response[i][0], timestamp):
            if i == 0:
                return query_response[-1][1]
            return query_response[-1][1] - query_response[i][1]
    return 0
Esempio n. 24
0
def setup_database():
    # intialize empty database
    db = Database()

    # create 'Team' table
    db.create_team_table()

    # create 'Player' table
    # db.create_player_table()

    # create 'GameStats' table
    # db.create_gamestats_table()

    return db
Esempio n. 25
0
def test_display_msg():
    """test display message function"""
    start = datetime.now()
    init_data()
    end = datetime.now()
    interface = DataTransfer(Database(PATH, CONFIG))
    display = Display(interface)
    assert display.handle_msg(KEY_DISPLAY, True)
    assert len(display.reply.split('\n')) == len(MSG_CONTENTS)
    assert display.handle_msg(
        f'{KEY_DISPLAY}{KEY_SPLIT}'
        f'{start.year}.{start.month}.{start.day}'
        f'-{end.year}.{end.month}.{end.day}', True)
    assert len(display.reply.split('\n')) == len(MSG_CONTENTS)
    assert display.handle_msg(f'{KEY_DISPLAY}{KEY_SPLIT}aaaa-aaaaa', True)
    assert display.reply == reply.parse_datetime_error()
Esempio n. 26
0
    def __init__(self):
        # datapath = str(os.path.dirname(__file__))
        # path = datapath + "/data/hilde_data.json"
        # if not os.path.isfile(path):
        #     path = str(os.getcwd() + "/data/hilde_data.json")

        # with open(path, 'r') as file:
        #     self.data = json.load(file)

        # if "tfidf" not in data:
        #     print("[tfidfbot] tfidf not found in data...")
        #     self.corrected = { "test test": "Test?" }
        # else:
        #     self.corrected = self.data["tfidf"]

        self.db = Database()
        self.tokenize_cache = {}
    def load(cls, folder: str) -> Competition:
        """Laden der Veranstaltung

        Args:
            folder (str): Ordner der Veranstaltung

        Returns:
            Competition: Veranstaltung
        """
        errors = ErrorCollector()

        # Ordner überprüfen
        if not os.path.isdir(folder):
            logging.error("Angegebner Ordner %s existiert nicht.", folder)
            return None

        # Einstellungen lesen
        settings = SettingsTable(folder)
        settings.open()
        if errors.has_error():
            errors.remove()
            return None

        # Datenbank erstellen, Gruppen und Stationen auslesen
        database = Database(settings)
        settings.read_groups(database)
        settings.read_stations(database)
        settings.read_sclasses(database)
        if errors.has_error():
            errors.remove()
            return None

        # Meldung auslesen
        attendees_table = AttendeesTable(folder, settings, database)
        attendees_table.open()
        if errors.has_error():
            errors.remove()
            return None

        database.do_grouping()
        if errors.has_error():
            errors.remove()
            return None

        return Competition(folder, settings, database)
Esempio n. 28
0
def test_create():
    """create table"""
    try:
        os.remove(PATH)
    except FileNotFoundError:
        pass
    database = Database(PATH)
    primary_key = PrimaryKey.id_as_primary()
    fields = [
        Field("msg", "TEXT"),
        Field("tags", "CHAR(50)"),
        Field('time',
              'CHAR(30)',
              others=[f'DEFAULT (\'{str(datetime.now())}\')'])
    ]
    database.create_table(TABLE, primary_key, fields)
    assert TABLE in database.tables.keys()
    database.close()
Esempio n. 29
0
def highest_source(db_file, table):
    database = Database(db_file)
    if not database.table_exists(table):
        database.close()
        return None
    sources = [
        x[0]
        for x in database.query("SELECT DISTINCT source FROM " + table + ";")
    ]
    highest = 0
    highest_source = sources[0]
    for source in sources:
        source_total = database.query("SELECT total FROM " + table +
                                      " WHERE source='" + source +
                                      "' ORDER BY timestamp ASC;")[-1][0]
        if source_total > highest:
            highest_source = source
            highest = source_total
    return highest_source
Esempio n. 30
0
def test_stop_timed_delete():
    """test stop timed delete task"""
    controller = TagController(DataTransfer(Database(PATH)))
    controller.handle_msg(quoted=None,
                          msg=f'{KEY_DELETE} {KEY_SPLIT}*-*-2-0-0-1',
                          talker='me',
                          to_bot=True)
    ifreply = controller.handle_msg(quoted=None,
                                    msg=f'{KEY_DELETE}{KEY_SPLIT}{KEY_STOP}',
                                    talker='me',
                                    to_bot=True)
    assert ifreply
    assert controller.reply == reply.stop_timed_delete(True)
    ifreply = controller.handle_msg(quoted=None,
                                    msg=f'{KEY_DELETE}{KEY_SPLIT}{KEY_STOP}',
                                    talker='me',
                                    to_bot=True)
    assert ifreply
    assert controller.reply == reply.stop_timed_delete(False)