Browse Source

Removing model. Restructuring.

pull/1/merge
alshain 14 years ago
parent
commit
aa0c2f471a
  1. 0
      couchpotato/__init__.py
  2. 0
      couchpotato/cli.py
  3. 0
      couchpotato/db.py
  4. 1
      setup.py
  5. 129
      src/couchpotato/model.py

0
src/couchpotato/__init__.py → couchpotato/__init__.py

0
src/couchpotato/cli.py → couchpotato/cli.py

0
src/couchpotato/db.py → couchpotato/db.py

1
setup.py

@ -17,7 +17,6 @@ from setuptools import setup
setup(name="couchpotato",
packages=['couchpotato'],
package_dir={'': 'src'},
install_requires=[
'argparse',
'elixir',

129
src/couchpotato/model.py

@ -1,129 +0,0 @@
from sqlalchemy.orm import scoped_session, sessionmaker
from sqlalchemy import create_engine
from sqlalchemy.schema import ThreadLocalMetaData
from elixir import *
engine = None
session = scoped_session(sessionmaker(autoflush=True, transactional=True))
metadata
class Language(Entity):
name = OneToMany("LanguageName")
class LanguageName(Entity):
translation_id = Field(Integer, primary_key=True)
language = ManyToOne('Language', primary_key=True)
text = Field(Unicode(20), unique=True)
class Provider(Entity):
url = Field(String(20), unique=True)
class ExternalMovieId(Entity):
provider = ManyToOne('Provider')
value = Field(Unicode(40))
movie = ManyToOne('Movie')
# such as IMDB's, maybe some use text -> long
class MovieTitle(Entity):
language = ManyToOne('Language')
movie = ManyToOne('Movie')
title = Field(UnicodeText)
def __init__(self, title, movie=None):
self.title = unicode(title)
self.movie = movie
class Movie(Entity):
titles = OneToMany('MovieTitle', lazy=False)
plot = Field(UnicodeText)
year = Field(Integer)
tagline = Field(UnicodeText(255))
genres = ManyToMany('Genre')
identifiers = OneToMany('ExternalMovieId')
characters = ManyToMany('Character')
def __init__(self, title, year):
try:
title = unicode(title)
self.titles.append(MovieTitle(title))
except TypeError:
pass
class Character(Entity):
names = OneToMany('CharacterName', required=True)
movies = ManyToMany('Movie')
class CharacterName(Entity):
language = ManyToOne('Language')
character = ManyToOne('Character')
class AssociatedPeople(Entity):
directors = ManyToMany('Person')
screenwriters = ManyToMany('Person')
actors = ManyToMany('Person')
class AspectRatio(Entity):
name = Field(Unicode(20), required=True, unique=True)
ratio = Field(Float)
movies = ManyToMany('Movie')
# The Dark Knight has multiple...
class Specification(Entity):
language = ManyToOne('Language')
color = Field(Boolean)
class Genre(Entity):
name = Field(UnicodeText(255))
class Person(Entity):
name = Field(UnicodeText(50))
birthday = Field(Date)
class Rating(Entity):
name = Field(UnicodeText(40))
position = Field(Float)
movies = ManyToMany('Movie')
def __cmp__(self, other):
if self.position < other.position:
return -1
elif self.primary_key > other.position:
return 1
else:
return 0
class AgeRating(Entity):
name = Field(UnicodeText(40))
position = Field(Float)
movies = ManyToMany('Movie')
def __cmp__(self, other):
if self.position < other.position:
return -1
elif self.primary_key > other.position:
return 1
else:
return 0
def doctest(engine=None):
"""Test
>>> from couchpotato import model
>>> model.metadata.bind = "sqlite:///:memory:"
>>> model.setup_all()
>>> model.setup_all()
"""
pass
Loading…
Cancel
Save