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()
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)
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
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()
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)