diff --git a/accounts/templates/accounts/profile.html b/accounts/templates/accounts/profile.html index 945c2df..800a087 100644 --- a/accounts/templates/accounts/profile.html +++ b/accounts/templates/accounts/profile.html @@ -1,14 +1,19 @@ -{% extends 'base.html' %} +{% extends "base.html" %} {% load static %} +{% block head %} + + +{% endblock %} + {% block content %}
-

Hi, {{user.first_name}}

+

Today, {% now "D, M j" %}

-

Today, {% now "D, M j" %}

+

Events

{% for event in today %}
{{event.date|date:"D, M j"}} @@ -21,12 +26,10 @@ Edit
{% empty %} -

Nothing for today.

+

No events for today.

{% endfor %}
-
-

Add event

-
+ {% if upcoming_events %}

Upcoming (next seven days)

{% for event in upcoming_events %} @@ -42,7 +45,127 @@
{% endfor %} + {% endif %}

See all events

+
+

Add event

+
+
+

To-do's

+
+ +

Overdue

+
+ {% regroup overdue_todos by employee as overdue_list %} + {% for employee in overdue_list %} +

{{employee.grouper}}

+ {% for todo in employee.list %} +
  • +
    + + {{todo.description}} + {% if todo.due_date %}{{todo.due_date}}{% endif %} +
    + {% if not todo.employee.archived %} + + + {% endif %} +
    +
    +
    + {% csrf_token %} + + + +
    + + cancel +
    +
    +
  • + {% endfor %} + {% endfor %} +
    +
    +

    Due today

    + {% regroup todos by employee as todo_list %} + {% for employee in todo_list %} +

    {{employee.grouper}}

    + {% for todo in employee.list %} +
  • +
    + + {{todo.description}} + {% if todo.due_date %}{{todo.due_date}}{% endif %} +
    + {% if not todo.employee.archived %} + + + {% endif %} +
    +
    +
    + {% csrf_token %} + + + +
    + + cancel +
    +
    +
  • + {% endfor %} + {% endfor %} +
    +
    +

    Recent Activity

    diff --git a/accounts/views.py b/accounts/views.py index 3489992..0c8035c 100755 --- a/accounts/views.py +++ b/accounts/views.py @@ -13,7 +13,7 @@ from django.contrib.auth.models import User from .models import Profile from .forms import AccountUpdateForm, ProfileUpdateForm -from board.models import LogEntry, Event +from board.models import LogEntry, Event, Todo class ProfileView(LoginRequiredMixin, TemplateView): @@ -26,6 +26,14 @@ class ProfileView(LoginRequiredMixin, TemplateView): enddate = today + timedelta(days=7) context['profile'] = self.request.user.profile context['latest_activity'] = LogEntry.objects.all()[:10] + context['todos'] = Todo.objects.filter( + due_date=today, + completed=False + ) + context['overdue_todos'] = Todo.objects.filter( + due_date__lt=today, + completed=False + ) context['today'] = Event.objects.filter( date=today ) diff --git a/board/forms.py b/board/forms.py index 0305e3c..b57b9dd 100644 --- a/board/forms.py +++ b/board/forms.py @@ -71,23 +71,29 @@ class LogEntryForm(forms.ModelForm): class TodoForm(forms.ModelForm): class Meta: model = Todo - fields = ('completed', 'description') + fields = ('completed', 'description', 'due_date') widgets = { 'completed': forms.CheckboxInput(attrs = { 'class': 'todo__checkbox', }), 'description': forms.TextInput(attrs = { 'autofocus': 'autofocus' + }), + 'due_date': forms.DateInput(attrs = { + 'type': 'date' }) } class TodoCreateForm(forms.ModelForm): class Meta: model = Todo - fields = ('description',) + fields = ('description', 'due_date') widgets = { 'description': forms.TextInput(attrs = { 'autofocus': 'autofocus' + }), + 'due_date': forms.DateInput(attrs = { + 'type': 'date' }) } diff --git a/board/migrations/0002_todo_due_date.py b/board/migrations/0002_todo_due_date.py new file mode 100644 index 0000000..ef37bab --- /dev/null +++ b/board/migrations/0002_todo_due_date.py @@ -0,0 +1,18 @@ +# Generated by Django 3.2.5 on 2021-08-04 22:32 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('board', '0001_initial'), + ] + + operations = [ + migrations.AddField( + model_name='todo', + name='due_date', + field=models.DateField(blank=True, null=True), + ), + ] diff --git a/board/models.py b/board/models.py index 2bb444f..d92f91e 100644 --- a/board/models.py +++ b/board/models.py @@ -1,5 +1,6 @@ from django.db import models from django.urls import reverse_lazy, reverse +from datetime import datetime from django.utils import timezone @@ -48,10 +49,18 @@ class LogEntry(models.Model): class Todo(models.Model): employee = models.ForeignKey(Employee, on_delete=models.CASCADE) description = models.CharField(max_length=64) + due_date = models.DateField(blank=True, null=True) completed = models.BooleanField(default=False) completed_at = models.DateTimeField(blank=True, null=True) + def is_due(self): + today = timezone.localtime(timezone.now()).date() + if self.due_date == today: + return True + else: + return False + def __str__(self): return f"{self.employee}: {self.description}" diff --git a/board/templates/board/employee_detail.html b/board/templates/board/employee_detail.html index 4f57e28..c1e3972 100644 --- a/board/templates/board/employee_detail.html +++ b/board/templates/board/employee_detail.html @@ -2,6 +2,7 @@ {% load static %} {% block head %} + {% endblock %} diff --git a/board/templates/board/todo_detail.html b/board/templates/board/todo_detail.html index 34e6ec3..207bee5 100644 --- a/board/templates/board/todo_detail.html +++ b/board/templates/board/todo_detail.html @@ -1,13 +1,46 @@ -
  • -
    - - {% if not employee.archived %} - Edit… - Delete… - {% endif %} +
  • +
    + + {{todo.description}} + {% if todo.due_date %}{{todo.due_date}}{% endif %} +
    + {% if not employee.archived %} + + + {% endif %} +
    +
    + + {% csrf_token %} + + + +
    + + cancel +
  • \ No newline at end of file diff --git a/board/templates/board/todo_list.html b/board/templates/board/todo_list.html index 0372432..d090522 100644 --- a/board/templates/board/todo_list.html +++ b/board/templates/board/todo_list.html @@ -1,4 +1,4 @@ -