From 4100b101670bafb8e19a8d927511a4707adb5b49 Mon Sep 17 00:00:00 2001 From: sosokker Date: Mon, 6 Nov 2023 23:14:53 +0700 Subject: [PATCH] Add recurrence tasks use rrule field --- .../tasks/migrations/0011_recurrencetask.py | 39 +++++++++++++++++++ backend/tasks/models.py | 13 ++++--- 2 files changed, 46 insertions(+), 6 deletions(-) create mode 100644 backend/tasks/migrations/0011_recurrencetask.py diff --git a/backend/tasks/migrations/0011_recurrencetask.py b/backend/tasks/migrations/0011_recurrencetask.py new file mode 100644 index 0000000..cc7225a --- /dev/null +++ b/backend/tasks/migrations/0011_recurrencetask.py @@ -0,0 +1,39 @@ +# Generated by Django 4.2.6 on 2023-11-06 16:14 + +from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ('tasks', '0010_todo_alter_subtask_parent_task_delete_task'), + ] + + operations = [ + migrations.CreateModel( + name='RecurrenceTask', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('title', models.TextField()), + ('notes', models.TextField(default='')), + ('importance', models.PositiveSmallIntegerField(choices=[(1, '1'), (2, '2'), (3, '3'), (4, '4'), (5, '5')], default=1)), + ('difficulty', models.PositiveSmallIntegerField(choices=[(1, 'Easy'), (2, 'Normal'), (3, 'Hard'), (4, 'Very Hard'), (5, 'Devil')], default=1)), + ('challenge', models.BooleanField(default=False)), + ('fromSystem', models.BooleanField(default=False)), + ('creation_date', models.DateTimeField(auto_now_add=True)), + ('last_update', models.DateTimeField(auto_now=True)), + ('google_calendar_id', models.CharField(blank=True, max_length=255, null=True)), + ('start_event', models.DateTimeField(null=True)), + ('end_event', models.DateTimeField(null=True)), + ('recurrence_rule', models.TextField()), + ('tags', models.ManyToManyField(blank=True, to='tasks.tag')), + ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), + ], + options={ + 'abstract': False, + }, + ), + ] diff --git a/backend/tasks/models.py b/backend/tasks/models.py index 7dcdbc8..5da815e 100644 --- a/backend/tasks/models.py +++ b/backend/tasks/models.py @@ -1,9 +1,5 @@ -from datetime import datetime - from django.db import models from django.conf import settings -from django.core import validators -from django.utils import timezone class Tag(models.Model): """ @@ -14,7 +10,7 @@ class Tag(models.Model): name = models.CharField(max_length=255) -class Todo(models.Model): +class Task(models.Model): """ Represents a Abstract of task, such as Habit, Daily, Todo, or Reward. @@ -58,7 +54,7 @@ class Todo(models.Model): abstract = True -class Todo(Todo): +class Todo(Task): class EisenhowerMatrix(models.IntegerChoices): IMPORTANT_URGENT = 1, 'Important & Urgent' @@ -71,6 +67,11 @@ class Todo(Todo): def __str__(self): return self.title +class RecurrenceTask(Task): + recurrence_rule = models.TextField() + + def __str__(self) -> str: + return f"{self.title} ({self.recurrence_rule})" class Subtask(models.Model): """