blob: 45e9296782ea3f2e39ff3a23bb395262504b1a91 (
plain)
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
|
import elixir
from elixir import Field, ManyToOne, ColumnProperty, using_options, using_options_defaults
from sqlalchemy import types as T
from functools import partial
elixir.metadata.bind = "sqlite:///test.sqlite"
elixir.metadata.bind.echo = True
ReqField = partial(Field, required = True)
class Entity (elixir.Entity):
using_options(abstract = True)
using_options_defaults(shortnames = True)
class Category (Entity):
name = Field(T.String(50), unique = True)
def __repr__ (self):
return '<Category "%s">' % self.name
class Expense (Entity):
using_options(abstract = True)
description = Field(T.String(50))
expense = ReqField(T.Numeric(scale = 2))
category = ManyToOne('Category', required = True, innerjoin = True)
class SingleExpense (Expense):
date = ReqField(T.Date)
class ConstExpense (Expense):
months = ReqField(T.Integer)
start = ReqField(T.Date)
end = ReqField(T.Date)
monthly = ColumnProperty(lambda c: c.expense / c.months)
elixir.setup_all()
session = elixir.session
if __name__ == "__main__":
elixir.create_all()
|