Prise en charge des événements sans classe ni tag

This commit is contained in:
Jean-Marie Favreau 2023-11-07 18:24:22 +01:00
parent 8f02abe9db
commit 69ae647b39
3 changed files with 33 additions and 16 deletions

View File

@ -11,6 +11,10 @@ from datetime import datetime
class Category(models.Model): class Category(models.Model):
default_name = "Sans catégorie"
default_css_class = "cat-nocat"
default_color = "#aaaaaa"
COLOR_PALETTE = [ COLOR_PALETTE = [
("#ea5545", "color 1"), ("#ea5545", "color 1"),
("#f46a9b", "color 2"), ("#f46a9b", "color 2"),
@ -103,7 +107,8 @@ class Event(models.Model):
tags = list(Event.objects.values_list('tags', flat = True)) tags = list(Event.objects.values_list('tags', flat = True))
uniq_tags = set() uniq_tags = set()
for t in tags: for t in tags:
uniq_tags = uniq_tags | set(t) if t is not None:
uniq_tags = uniq_tags | set(t)
return list(uniq_tags) return list(uniq_tags)

View File

@ -60,24 +60,25 @@ def background_color_adjust_color(color, alpha = 1):
def css_categories(): def css_categories():
result = '<style type="text/css">' result = '<style type="text/css">'
cats = Category.objects.all() cats = [{"color": c.color, "css_class": c.css_class()} for c in Category.objects.all()]
cats.append({"color": Category.default_color, "css_class": Category.default_css_class})
for c in cats: for c in cats:
result += "." + c.css_class() + " {" result += "." + c["css_class"] + " {"
result += background_color_adjust_color(adjust_lightness_saturation(c.color, .2, 0.8), 0.8) result += background_color_adjust_color(adjust_lightness_saturation(c["color"], .2, 0.8), 0.8)
result += "}" result += "}"
result += "*:hover ." + c.css_class() + " {" result += "*:hover ." + c["css_class"] + " {"
result += background_color_adjust_color(adjust_lightness_saturation(c.color, 0.02, 1.0)) result += background_color_adjust_color(adjust_lightness_saturation(c["color"], 0.02, 1.0))
result += "}" result += "}"
result += ".selected ." + c.css_class() + " {" result += ".selected ." + c["css_class"] + " {"
result += background_color_adjust_color(c.color) result += background_color_adjust_color(c["color"])
result += "}" result += "}"
result += "a.selected:hover ." + c.css_class() + " {" result += "a.selected:hover ." + c["css_class"] + " {"
result += background_color_adjust_color(adjust_lightness_saturation(c.color, 0.2, 1.2)) result += background_color_adjust_color(adjust_lightness_saturation(c["color"], 0.2, 1.2))
result += "}" result += "}"
result += '</style>' result += '</style>'
@ -86,12 +87,18 @@ def css_categories():
@register.filter @register.filter
def small_cat(category, url=None, contrast=True): def small_cat(category, url=None, contrast=True):
name = Category.default_name if category is None else category.name
css_class = Category.default_css_class if category is None else category.css_class()
class_contrast = " contrast" if contrast else "" class_contrast = " contrast" if contrast else ""
if url is None: if url is None:
return mark_safe('<span class="small-cat' + class_contrast +' selected" role="button"><span class="cat ' + category.css_class() + '"></span> ' + category.name + "</span>") return mark_safe('<span class="small-cat' + class_contrast +' selected" role="button"><span class="cat ' + css_class + '"></span> ' + name + "</span>")
else: else:
return mark_safe('<a class="small-cat' + class_contrast +' selected" role="button" href="' + url + '"><span class="cat ' + category.css_class() + '"></span> ' + category.name + "</a>") return mark_safe('<a class="small-cat' + class_contrast +' selected" role="button" href="' + url + '"><span class="cat ' + css_class + '"></span> ' + name + "</a>")
@register.filter @register.filter
def circle_cat(category): def circle_cat(category):
return mark_safe('<span class="cat ' + category.css_class() + '" data-tooltip="' + category.name + '"></span>') if category is None:
return mark_safe('<span class="cat ' + Category.default_css_class + '" data-tooltip="' + Category.default_name + '"></span>')
else:
return mark_safe('<span class="cat ' + category.css_class() + '" data-tooltip="' + category.name + '"></span>')

View File

@ -52,9 +52,14 @@ class CalendarDay:
def add_event(self, event): def add_event(self, event):
self.events.append(event) self.events.append(event)
if not event.category.name in self.events_by_category: if event.category is None:
self.events_by_category[event.category.name] = [] if not "" in self.events_by_category:
self.events_by_category[event.category.name].append(event) self.events_by_category[""] = []
self.events_by_category[""].append(event)
else:
if not event.category.name in self.events_by_category:
self.events_by_category[event.category.name] = []
self.events_by_category[event.category.name].append(event)
class CalendarList: class CalendarList: