[cinema] a person may have several roles in a movie, cap and apps adapted

This commit is contained in:
Julien Veyssier 2014-11-26 13:33:35 +01:00 committed by Romain Bignon
commit 6ec12f70db
3 changed files with 28 additions and 24 deletions

View file

@ -250,13 +250,13 @@ class Cineoob(ReplApplication):
inter = list(set(lid1) & set(lid2))
for common in inter:
movie = self.get_object(common, 'get_movie', caps=CapCinema)
role1 = movie.get_role_by_person_id(person1.id)
role1 = movie.get_roles_by_person_id(person1.id)
if not role1:
role1 = movie.get_role_by_person_name(person1.name)
role2 = movie.get_role_by_person_id(person2.id)
role1 = movie.get_roles_by_person_name(person1.name)
role2 = movie.get_roles_by_person_id(person2.id)
if not role2:
role2 = movie.get_role_by_person_name(person2.name)
movie.short_description = '%s as %s ; %s as %s'%(person1.name, role1, person2.name, role2)
role2 = movie.get_roles_by_person_name(person2.name)
movie.short_description = '%s as %s ; %s as %s'%(person1.name, ', '.join(role1), person2.name, ', '.join(role2))
if movie:
self.cached_format(movie)
@ -290,13 +290,13 @@ class Cineoob(ReplApplication):
inter = list(set(lid1) & set(lid2))
for common in inter:
person = self.get_object(common, 'get_person', caps=CapCinema)
role1 = person.get_role_by_movie_id(movie1.id)
role1 = person.get_roles_by_movie_id(movie1.id)
if not role1:
role1 = person.get_role_by_movie_title(movie1.original_title)
role2 = person.get_role_by_movie_id(movie2.id)
role1 = person.get_roles_by_movie_title(movie1.original_title)
role2 = person.get_roles_by_movie_id(movie2.id)
if not role2:
role2 = person.get_role_by_movie_title(movie2.original_title)
person.short_description = '%s in %s ; %s in %s'%(role1, movie1.original_title, role2, movie2.original_title)
role2 = person.get_roles_by_movie_title(movie2.original_title)
person.short_description = '%s in %s ; %s in %s'%(', '.join(role1), movie1.original_title, ', '.join(role2), movie2.original_title)
self.cached_format(person)
def do_info_movie(self, id):

View file

@ -131,9 +131,9 @@ class Result(QFrame):
for common in inter:
movie = backend.get_movie(common)
movie.backend = backend_name
role1 = movie.get_role_by_person_id(person1.id)
role2 = movie.get_role_by_person_id(person2.id)
movie.short_description = '%s as %s ; %s as %s'%(person1.name, role1, person2.name, role2)
role1 = movie.get_roles_by_person_id(person1.id)
role2 = movie.get_roles_by_person_id(person2.id)
movie.short_description = '%s as %s ; %s as %s'%(person1.name, ', '.join(role1), person2.name, ', '.join(role2))
self.addMovie(movie)
self.processFinished()
@ -167,9 +167,9 @@ class Result(QFrame):
for common in inter:
person = backend.get_person(common)
person.backend = backend_name
role1 = movie1.get_role_by_person_id(person.id)
role2 = movie2.get_role_by_person_id(person.id)
person.short_description = '%s in %s ; %s in %s'%(role1, movie1.original_title, role2, movie2.original_title)
role1 = movie1.get_roles_by_person_id(person.id)
role2 = movie2.get_roles_by_person_id(person.id)
person.short_description = '%s in %s ; %s in %s'%(', '.join(role1), movie1.original_title, ', '.join(role2), movie2.original_title)
self.addPerson(person)
self.processFinished()

View file

@ -46,17 +46,19 @@ class Movie(BaseObject):
BaseObject.__init__(self, id)
self.original_title = original_title
def get_role_by_person_name(self,name):
def get_roles_by_person_name(self,name):
for role in self.roles.keys():
if name.lower() in [person[1].lower() for person in self.roles[role]]:
return role
return None
def get_role_by_person_id(self,id):
def get_roles_by_person_id(self,id):
result = []
for role in self.roles.keys():
if id in [person[0] for person in self.roles[role]]:
return role
return None
result.append(role)
return result
class Person(BaseObject):
@ -80,7 +82,7 @@ class Person(BaseObject):
BaseObject.__init__(self, id)
self.name = name
def get_role_by_movie_title(self,title):
def get_roles_by_movie_title(self,title):
for role in self.roles.keys():
for mt in [movie[1] for movie in self.roles[role]]:
# title we have is included ?
@ -88,11 +90,13 @@ class Person(BaseObject):
return role
return None
def get_role_by_movie_id(self,id):
def get_roles_by_movie_id(self,id):
result = []
for role in self.roles.keys():
if id in [movie[0] for movie in self.roles[role]]:
return role
return None
result.append(role)
return result
class CapCinema(Capability):