better integration of notes, templates clean up
This commit is contained in:
9
notes/managers.py
Normal file
9
notes/managers.py
Normal file
@@ -0,0 +1,9 @@
|
||||
from django.db.models import Manager
|
||||
|
||||
class NoteManager(Manager):
|
||||
|
||||
def by_date(self):
|
||||
return self.get_queryset().order_by('created_date')
|
||||
|
||||
def by_time(self):
|
||||
return self.get_queryset().order_by('created_time')
|
||||
@@ -1,6 +1,8 @@
|
||||
from django.db import models
|
||||
from django.utils.html import format_html
|
||||
|
||||
from . import managers
|
||||
|
||||
class Note(models.Model):
|
||||
""" Note relative à un sujet.
|
||||
|
||||
@@ -13,6 +15,8 @@ class Note(models.Model):
|
||||
|
||||
"""
|
||||
|
||||
objects = managers.NoteManager()
|
||||
|
||||
sujet = models.ForeignKey(
|
||||
'sujets.Sujet',
|
||||
related_name="notes",
|
||||
@@ -25,11 +29,12 @@ class Note(models.Model):
|
||||
null=True
|
||||
)
|
||||
created_date = models.DateField('Crée le', blank=True, null=True)
|
||||
|
||||
created_time = models.TimeField('Heure', blank=True, null=True)
|
||||
|
||||
def save(self, *args, **kwargs):
|
||||
if not self.created_date: # Retrieve from child class instance
|
||||
self.created_date = self.cast().get_date()
|
||||
child_instance = self.cast()
|
||||
self.created_date = child_instance.note_date()
|
||||
self.created_time = child_instance.note_time()
|
||||
return super().save(*args, **kwargs)
|
||||
|
||||
def _get_child_class_and_instance(self):
|
||||
@@ -68,7 +73,7 @@ class Note(models.Model):
|
||||
setattr(self,
|
||||
private_name,
|
||||
# Call *child instance* method
|
||||
getattr(self.cast(), 'get_%s' % name)()
|
||||
getattr(self.cast(), 'note_%s' % name)()
|
||||
)
|
||||
return getattr(self, private_name)
|
||||
return getter
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
<strong>{{header}}</strong> <small>{{small}}</small>
|
||||
<span class="pull-right">
|
||||
{% for label in labels %}
|
||||
<span class="label label-info">{{label}}</span>
|
||||
<span class="label label-{{bg_label_color}}">{{label}}</span>
|
||||
{% endfor %}</span>
|
||||
</th>
|
||||
</tr>
|
||||
|
||||
@@ -5,10 +5,21 @@ from django import template
|
||||
register = template.Library()
|
||||
|
||||
@register.inclusion_tag("notes/table_inline.html")
|
||||
def inline_table(note):
|
||||
def inline_table(note, header=None):
|
||||
bg_color, bg_label_color = note.bg_colors
|
||||
|
||||
if not header:
|
||||
header = "date"
|
||||
if not header in ['sujet', 'date']:
|
||||
raise ValueError('header must be "sujet" or "date"')
|
||||
|
||||
if header == "date":
|
||||
header_field = "created_date"
|
||||
elif header == "sujet":
|
||||
header_field = "sujet"
|
||||
|
||||
return {
|
||||
'header': note.created_date,
|
||||
'header': getattr(note, header_field),
|
||||
'small': note.child_class.__qualname__,
|
||||
'bg_color': bg_color or "default",
|
||||
'bg_label_color': bg_label_color or "info",
|
||||
|
||||
Reference in New Issue
Block a user