Created
October 9, 2014 17:58
-
-
Save george-silva/ae9c4d41907e72a817cf to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class AppModelMixin(models.Model): | |
""" | |
Este modelo tem em seus atributos dados para referenciar uma | |
aplicação e um modelo django. | |
""" | |
app = models.CharField(max_length=128, | |
verbose_name=u"Aplicação Django", | |
help_text=u"Aplicação Django que contém o modelo em questão") | |
modelo = models.CharField(max_length=128, | |
verbose_name=u"Modelo Django", | |
help_text=u"Modelo Django que será utilizado.") | |
@property | |
def validar_modelo(self): | |
""" | |
Valida se o modelo é válido ou não. | |
""" | |
try: | |
modelo = get_model(self.app, self.modelo) | |
if modelo is None: | |
return False | |
else: | |
return True | |
except Exception: | |
# todo: qualificar a exceção que é lançada quando não achamos um modelo. | |
return False | |
@property | |
def ref_modelo(self): | |
""" | |
Retorna uma referência ao modelo Django. | |
Caso o modelo não exista ou seja inválido, retorna None. | |
todo: este método duplica uma chamada a get_model. Reduzir esta duplicação. | |
""" | |
if self.validar_modelo: | |
return get_model(self.app, self.modelo) | |
else: | |
return None | |
class Meta: | |
abstract = True |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment