Skip to content

Instantly share code, notes, and snippets.

@george-silva
Created October 9, 2014 17:58
Show Gist options
  • Save george-silva/ae9c4d41907e72a817cf to your computer and use it in GitHub Desktop.
Save george-silva/ae9c4d41907e72a817cf to your computer and use it in GitHub Desktop.
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