Пример #1
0
 def edit_categories(self):
     for item in self.db.query(Category):
         print(item.name)
     menu = list_choice(['add', 'edit', 'delete', 'back'])
     if menu == 'add':
         new = Category(name=str_input('Name'))
         self.db.add(new)
     elif menu == 'edit':
         edit = query_choice(self.db.query(Category))
         edit.name = str_input('New name')
     elif menu == 'delete':
         rm = query_choice(self.db.query(Category))
         self.db.delete(rm)
     self.db.commit()
Пример #2
0
    def end(self):
        if 'backup_dir' not in self.config:
            backup_dir = str_input('specify backup directory')
            self.config['backup_dir'] = backup_dir

        write_backup(self.db, self.config['backup_dir'])
        remove_old_backups(self.config['backup_dir'])
        db_disconnect(self.db)
Пример #3
0
    def __init__(self):
        try:
            self.config = load_config()
        except FileNotFoundError:
            print('No config found, please try python manage.py')
            backup_dir = str_input('backup directory', default='backup')
            self.config = {'backup_dir': backup_dir}

        if 'db' not in self.config:
            file_valid = False
            while not file_valid:  # test if file exists
                db_name = str_input('datenbank', default='test') + '.db'
                file_valid = exists(db_name)
                if not file_valid:
                    print('File not found :(')
        else:
            db_name = self.config['db']

        success = False
        if 'password' in self.config:
            database = db_connect(db_name, password=self.config['password'])
            try:
                database.query(Currency).all()
                success = True
            except DatabaseError:
                success = False
                # now user can still input

        while not success:
            db_password = str_input('passwort', default='123456')
            database = db_connect(db_name, password=db_password)
            # try if password was correct
            try:
                database.query(Currency).all()
                success = True
            except DatabaseError:
                success = False

        # FINALLY
        self.db = database
Пример #4
0
    def track_expense(self):
        price = type_input('price', float)
        price = int(price * 100)

        currency = query_choice(self.db.query(Currency))

        cat = query_choice(self.db.query(Category))

        advanced = bool_question('advanced options?', default=False)
        # initialize with simple setup
        issued = dt.datetime.now()
        note = None
        end = None
        repeat = None
        if advanced:
            if bool_question('Not issued right now?', default=False):
                issued = dt_input('Date if issue')

            if bool_question('Do you want to add a note?', default=False):
                note = str_input('Note')

            if bool_question('long term expense?', default=False):
                end = dt_input('End if expense')

            if bool_question('repeat?', default=False):
                repeat = type_input('Repeat this expense every _ months', int,
                                    default=-1)
                if repeat == -1:
                    repeat = None

        eur = to_eur(price, currency.identifier, issued)
        print('That was an expense of {:.2f}€'.format(eur / 100.0))

        expense = Expense(issued=issued,
                          price=price,
                          in_eur=eur,
                          note=note,
                          end=end,
                          repeat_interval=repeat,
                          currency=currency,
                          category=cat)
        self.db.add(expense)
        self.db.commit()

        if bool_question('another expense?', default=True):
            self.track_expense()
Пример #5
0
from expenses.data_connector import db_create, write_config
from command_line.user_input import str_input, bool_question


if __name__ == '__main__':

    db_name = str_input('database name', default='test')
    db_name += '.db'

    db_password = str_input('database password', default='123456')
    while len(db_password) < 6:
        print('Password too short, min. 6 characters')
        db_password = str_input('database password', default='123456')

    db_create(db_name, password=db_password)

    config = {}
    if bool_question('store login in config?', default=True):
        config['db'] = db_name
        config['password'] = db_password

    config['backup_dir'] = str_input('backup directory', default='backup')

    write_config(config)