Je crée une application Web avec une connexion Facebook facultative. Les utilisateurs créés via l'API Facebook sont traités différemment à plusieurs points de mon application. Je veux encapsuler ces différences dans une sous-classe de Person
qui remplace les méthodes.Comment puis-je choisir le modèle déclaratif à instancier, en fonction des informations sur les lignes?
class Person(Model):
def get_profile_picture(self):
return profile_pictures.url(self.picture)
class FacebookPerson(Person):
def get_profile_picture(self):
return 'http:/.../%s.jpg' % self.graph_id
Je voudrais éviter le if self.graph_id
méchant et juste interroger le modèle de personne et d'obtenir le bon objet pour chaque utilisateur.
J'ai pensé à pirater la métaclasse pour ajouter le FacebookPerson comme base. Évidemment, je voudrais éviter un tel vaudou. J'utilise Flask et Flask-SQLAlchemy.