from django.db import models
from django.utils.html import format_html
class Note(models.Model):
""" Note relative à un sujet.
"""
sujet = models.ForeignKey(
'sujets.Sujet',
related_name="notes",
on_delete=models.CASCADE
)
text = models.TextField()
created_by = models.ForeignKey(
'utilisateurs.Professionnel',
blank=True,
null=True
)
created_date = models.DateField('Crée le', blank=True, null=True)
def as_table(self):
html = format_html(
"
| {} {}\
{} | \
\n
|---|
| {} |
",
self.sujet,
self.created_date,
self.created_by,
self.text
)
return html
def as_inline_table(self):
html = format_html(
"| {} {} \n\
{} | \n\
|---|
| {} |
",
self.subclass.__qualname__,
self.created_date,
self.created_by,
self.text
)
return html
def _get_child_and_subclass(self):
self._child_instance = None
self._subclass = None
for f in self._meta.get_fields():
if f.is_relation and f.one_to_one:
self._child_instance = getattr(self, f.name)
self._subclass = self._child_instance.__class__
return
@property
def subclass(self):
if not hasattr(self, '_subclass'):
self._get_child_and_subclass()
return self._subclass
def cast(self):
if not hasattr(self, '_child_instance'):
self._get_child_and_subclass()
return self._child_instance
def __str__(self):
return "%s of %s" % (self.subclass.__qualname__, self.created_by)