better integration of notes, templates clean up

This commit is contained in:
Arthur Gerbaud
2016-08-06 19:28:15 +02:00
parent b3ca132a73
commit aefeb2e349
12 changed files with 101 additions and 63 deletions

9
notes/managers.py Normal file
View 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')

View File

@@ -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

View File

@@ -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>

View File

@@ -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",