All pastes #185342 Raw Edit

Miscellany

public text v1 · immutable
#185342 ·published 2006-09-28 21:10 UTC
rendered paste body
class Movie(object):
	def __repr__(self):
		string = ""
		if self.mid is not None:
			string += "mid: %d " % int(self.mid)
			
		if self.original_name is not None:
			string += "original_name: '%s' " % self.original_name
			
		if self.finnish_name is not None:
			string += "finnish_name: '%s' " % self.finnish_name
			
		if self.year is not None:
			string += "year: %d " % int(self.year)
			
		if self.url is not None:
			string += "url: %s " % self.url
			
		if self.imdb_url is not None:
			string += "imdb_url: %s " % self.imdb_url
			
		return string

class MovieCategory(object):
	pass

class DBAccess:
	def __init__(self):
		self.db = create_engine(\
			'postgres://XX:YY@localhost:5432/ZZ',\
			encoding="utf8")
		self.metadata = BoundMetaData(self.db)
		self.initMappings()
	
	def initMappings(self):
		self.category_table = Table('movie_category', self.metadata, autoload=True)
		mapper(MovieCategory, self.category_table)
		
		self.movies_categories_table = Table('movies_categories', self.metadata, 
 			Column('mid', Integer, ForeignKey("movie.mid")),
			Column('mcid', Integer, ForeignKey("movie_category.mcid")))
			
		self.movie_table = Table('movie', self.metadata, autoload=True)
		#mapper(Movie, self.movie_table)
		moviemapper = mapper(Movie, self.movie_table, properties = dict(
			categories = relation(MovieCategory, secondary=self.movies_categories_table,
			lazy=False)))

	def findMovies(self, moviesearch):
		session = create_session(bind_to=self.db)
		query = session.query(Movie)		
		statement = self.movie_table.select()
		
		if moviesearch.finnishTitle is not None:
			statement.append_whereclause(func.lower(self.movie_table.c.finnish_name) ==
					moviesearch.finnishTitle.lower())

		if moviesearch.yearStart is not None:
			statement.append_whereclause(self.movie_table.c.year >= moviesearch.yearStart)
			
        	if moviesearch.yearEnd is not None:
			statement.append_whereclause(self.movie_table.c.year <= moviesearch.yearEnd)	
					
        	if moviesearch.imdbID is not None:
			statement.append_whereclause(or_(func.lower(self.movie_table.c.url).like('%' + moviesearch.imdbID + '%'),
                                             func.lower(self.movie_table.c.imdb_url).like('%' + moviesearch.imdbID + '%')))


db = getdb()

def findIdFromMovietronDB(movieSearch):
	global db
	movies = db.findMovies(movieSearch)
	if movies and len(movies) > 0:
		movie = movies[0]
		#print movie.finnish_name
		for c in movie.categories:
			print c
		return movies[0].mid
	return None