/
nowe_zakupy.py
executable file
·68 lines (61 loc) · 2.14 KB
/
nowe_zakupy.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
#!/usr/bin/env python
# vim: set fileencoding=utf-8
import models as m
import shared
import string
from decimal import Decimal
from datetime import date, datetime
def get_date_and_shop(session):
d = shared.get_answer(
'Data zakupów DD-MM-YYYY',
date.today().strftime('%d-%m-%Y'),
'^[0-4][0-9]-[0-1][0-9]-[0-9]{4}'
)
sklep = shared.choice('Wybierz sklep', session, m.Sklep, shared.enter_new(m.Sklep, session))
return datetime.strptime(d, '%d-%m-%Y'), sklep
if __name__ == '__main__':
m.init_model()
m.meta.create_all(m.meta.engine)
session = m.Session()
(data, sklep) = get_date_and_shop(session)
while True:
try:
kategoria = shared.choice('Wybierz kategorię: ', session, m.Kategoria, shared.enter_new(m.Kategoria))
podkategoria = shared.choice(
'Wybierz podkategorię: ',
session,
m.Podkategoria,
shared.enter_new(m.Podkategoria, kategoria),
query_processor = lambda x: x.filter(m.Podkategoria.kategoria_id == kategoria.id)
)
produkt = shared.choice(
'Wybierz produkt: ',
session,
m.Produkt,
shared.enter_new(m.Produkt, podkategoria),
query_processor = lambda x: x.filter(m.Produkt.podkategoria_id == podkategoria.id).order_by(m.Produkt.nazwa)
)
cena = shared.get_answer(
'Cena: ',
None,
'[0-9]{0,5}(\.|,)[0-9]{0,2}'
)
cena = string.replace(cena, ',', '.')
ilosc = shared.get_answer(
'Ilosc',
'1',
'([1-9][0-9]*)?(\.|,)?[0-9]*'
)
ilosc = string.replace(ilosc, ',', '.')
zakup = m.Zakup(data, sklep, produkt, Decimal(cena), Decimal(ilosc))
session.add(zakup)
moar = shared.get_answer(
'Dalej?',
't',
't|n'
)
if moar is 'n':
break
except KeyboardInterrupt:
break
session.commit()