mirror of
https://github.com/TurTaskProject/TurTaskWeb.git
synced 2025-12-19 22:14:07 +01:00
41 lines
1.6 KiB
Python
41 lines
1.6 KiB
Python
from django.db.models.signals import pre_save, post_save
|
|
from django.dispatch import receiver
|
|
from django.utils import timezone
|
|
|
|
from boards.models import ListBoard, Board
|
|
from tasks.models import Todo
|
|
|
|
|
|
@receiver(pre_save, sender=Todo)
|
|
def update_priority(sender, instance, **kwargs):
|
|
"""Update the priority of a Todo based on the Eisenhower Matrix"""
|
|
if instance.end_event:
|
|
time_until_due = (instance.end_event - timezone.now()).days
|
|
else:
|
|
time_until_due = float('inf')
|
|
|
|
urgency_threshold = 3
|
|
importance_threshold = 3
|
|
|
|
if time_until_due <= urgency_threshold and instance.importance >= importance_threshold:
|
|
instance.priority = Todo.EisenhowerMatrix.IMPORTANT_URGENT
|
|
elif time_until_due > urgency_threshold and instance.importance >= importance_threshold:
|
|
instance.priority = Todo.EisenhowerMatrix.IMPORTANT_NOT_URGENT
|
|
elif time_until_due <= urgency_threshold and instance.importance < importance_threshold:
|
|
instance.priority = Todo.EisenhowerMatrix.NOT_IMPORTANT_URGENT
|
|
else:
|
|
instance.priority = Todo.EisenhowerMatrix.NOT_IMPORTANT_NOT_URGENT
|
|
|
|
|
|
@receiver(post_save, sender=Todo)
|
|
def assign_todo_to_listboard(sender, instance, created, **kwargs):
|
|
"""Signal handler to automatically assign a Todo to the first ListBoard in the user's Board upon creation."""
|
|
if created:
|
|
user_board = instance.user.board_set.first()
|
|
|
|
if user_board:
|
|
first_list_board = user_board.listboard_set.order_by('position').first()
|
|
|
|
if first_list_board:
|
|
instance.list_board = first_list_board
|
|
instance.save() |