File: m2o.py

package info (click to toggle)
sqlkit 0.9.5-1
  • links: PTS, VCS
  • area: main
  • in suites: wheezy
  • size: 8,184 kB
  • sloc: python: 17,477; sql: 166; makefile: 95; xml: 23; sh: 11
file content (57 lines) | stat: -rw-r--r-- 1,671 bytes parent folder | download | duplicates (2)
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
#!/usr/bin/python 

import sys
import gtk

sys.path.insert(0, '../..')
import dbg
# dbg.debug(True, gtk=True)  # uncommenti this to get gtk debug treeview

dbg.trace_class(ok='SqlTable|SqlWidget|SqlMask')
but = 'set_fkey_descr|(lookup|get)_value|[el]ne_cb|match_func' + \
       '|cell_default_cb|cell_bool_cb|lookup_value|is_fkey|instance2'
dbg.trace_function(exclude=but)

import elixir
from datetime import datetime, timedelta

import time
import sqlkit 
from sqlkit.db import proxy
from sqlkit import completion

elixir.metadata.bind = "sqlite:///movies.sqlite"
db = proxy.DbProxy(engine="sqlite:///movies.sqlite")
__metadata__ = db.metadata

class Director(elixir.Entity):
    last_name = elixir.Field(elixir.String(60))
    first_name = elixir.Field(elixir.String(60))
    movies = elixir.OneToMany('Movie', inverse='director', lazy="False")
#    movies = elixir.OneToMany('Movie', inverse='director', lazy="False", cascade="all, delete-orphan" )
    elixir.using_options(tablename='director')

    def __repr__(self):
        return u'<Director: %s>' %self.last_name

class Movie(elixir.Entity):
    title = elixir.Field(elixir.String(60))
    description = elixir.Field(elixir.String(512))
    year = elixir.Field(elixir.Integer())
    director = elixir.ManyToOne('Director', inverse='movies' , lazy="False")
    elixir.using_options(tablename='movie')

    def __repr__(self):
        return u'<Movie: %s>' % self.title


elixir.setup_all()

lay = """first_name last_name
         o2m=movies      - - -
         """
tm = sqlkit.SqlMask(Director.mapper, metadata=__metadata__, session=elixir.session,layout=lay)
t = tm.vfields['movies'].widget.table


gtk.main()