File: movies_elixir.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 (51 lines) | stat: -rw-r--r-- 1,678 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
# DISCLAIMER: this file is not mantained. I don't use elixir

import elixir
from sqlkit.db import proxy

from model import engine

db = proxy.DbProxy(engine=engine)
__metadata__ = db.metadata
#__session__ = db.get_session()

class Director(elixir.Entity):
    last_name = elixir.Field(elixir.String(60))
    first_name = elixir.Field(elixir.String(60))
    nation = elixir.Field(elixir.String(6))
    
    movies = elixir.OneToMany('Movie', inverse='director')
    elixir.using_options(tablename='director')
    elixir.using_options(metadata=__metadata__)

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

class Movie(elixir.Entity):
    title = elixir.Field(elixir.String(60))
    description = elixir.Field(elixir.String(512))
    year = elixir.Field(elixir.Integer())
    date_release = elixir.Field(elixir.Date())
    director = elixir.ManyToOne('Director', inverse='movies')
    actors = elixir.ManyToMany('Actor', inverse='movies', tablename='movie_casting')
    genres = elixir.ManyToMany('Genre', inverse='movies', tablename='movie_genre')   
    elixir.using_options(tablename='movie')

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

class Genre(elixir.Entity):
    name = elixir.Field(elixir.Unicode(15), primary_key=True)
    movies = elixir.ManyToMany('Movie')
    elixir.using_options(tablename='genre')
    
    def __repr__(self):
        return u'<Genre "%s">' % self.name

class Actor(elixir.Entity):
    name = elixir.Field(elixir.String(60))
    movies = elixir.ManyToMany('Movie', inverse='actors', tablename='movie_casting')
    elixir.using_options(tablename='actor')

elixir.setup_all()