Compare commits
2 Commits
e6ea071762
...
b9e290b6a6
Author | SHA1 | Date |
---|---|---|
|
b9e290b6a6 | |
|
37ccc00eaf |
|
@ -13,6 +13,20 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="level-right">
|
<div class="level-right">
|
||||||
<div class="level-item">
|
<div class="level-item">
|
||||||
|
{% if request.resolver_match.url_name == "all_tasks" %}
|
||||||
|
{% translate "All" %}
|
||||||
|
{% else %}
|
||||||
|
<a href="{% url 'all_tasks' %}">{% translate "All" %}</a>
|
||||||
|
{% endif %}
|
||||||
|
</div>
|
||||||
|
<div class="level-item">
|
||||||
|
{% if request.resolver_match.url_name == "tasks" %}
|
||||||
|
{% translate "Open" %}
|
||||||
|
{% else %}
|
||||||
|
<a href="{% url 'tasks' %}">{% translate "Open" %}</a>
|
||||||
|
{% endif %}
|
||||||
|
</div>
|
||||||
|
<div class="level-item">
|
||||||
<a class="button is-success" href="{% url 'create_task' %}">{% translate "New task" %}</a>
|
<a class="button is-success" href="{% url 'create_task' %}">{% translate "New task" %}</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -8,6 +8,7 @@ urlpatterns = [
|
||||||
path("", views.index, name="index"),
|
path("", views.index, name="index"),
|
||||||
path("tags/<slug:slug>", views.tag, name="tag"),
|
path("tags/<slug:slug>", views.tag, name="tag"),
|
||||||
path("tasks", views.tasks, name="tasks"),
|
path("tasks", views.tasks, name="tasks"),
|
||||||
|
path("tasks/all", views.all_tasks, name="all_tasks"),
|
||||||
path("tasks/new", views.create_task, name="create_task"),
|
path("tasks/new", views.create_task, name="create_task"),
|
||||||
path("tasks/<int:task_id>", views.task, name="task"),
|
path("tasks/<int:task_id>", views.task, name="task"),
|
||||||
path("tasks/<int:task_id>/edit", views.edit_task, name="edit_task"),
|
path("tasks/<int:task_id>/edit", views.edit_task, name="edit_task"),
|
||||||
|
|
|
@ -57,6 +57,18 @@ def tag(request, slug):
|
||||||
|
|
||||||
@login_required
|
@login_required
|
||||||
def tasks(request):
|
def tasks(request):
|
||||||
|
tasks = Task.objects.filter(
|
||||||
|
state__in=(Task.State.TODO, Task.State.IN_PROGRESS)
|
||||||
|
).order_by("-updated_at")
|
||||||
|
pagination = paginate_tasks(
|
||||||
|
tasks, request.GET.get("per_page"), request.GET.get("page")
|
||||||
|
)
|
||||||
|
|
||||||
|
return render(request, "core/tasks.html", pagination)
|
||||||
|
|
||||||
|
|
||||||
|
@login_required
|
||||||
|
def all_tasks(request):
|
||||||
tasks = Task.objects.order_by("-updated_at")
|
tasks = Task.objects.order_by("-updated_at")
|
||||||
pagination = paginate_tasks(
|
pagination = paginate_tasks(
|
||||||
tasks, request.GET.get("per_page"), request.GET.get("page")
|
tasks, request.GET.get("per_page"), request.GET.get("page")
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
from django.contrib.auth.models import User
|
||||||
from django.core.files.base import ContentFile
|
from django.core.files.base import ContentFile
|
||||||
from django.core.mail.utils import DNS_NAME
|
from django.core.mail.utils import DNS_NAME
|
||||||
from django.core.management.base import BaseCommand
|
from django.core.management.base import BaseCommand
|
||||||
|
@ -35,6 +36,8 @@ class Command(BaseCommand):
|
||||||
print("5.1.1 Unknown ingress endpoint")
|
print("5.1.1 Unknown ingress endpoint")
|
||||||
exit(1)
|
exit(1)
|
||||||
|
|
||||||
|
sender = options["sender"]
|
||||||
|
|
||||||
try:
|
try:
|
||||||
msg = email.message_from_file(stdin, policy=email.policy.default)
|
msg = email.message_from_file(stdin, policy=email.policy.default)
|
||||||
except email.errors.MessageParseError:
|
except email.errors.MessageParseError:
|
||||||
|
@ -84,8 +87,16 @@ class Command(BaseCommand):
|
||||||
task = in_reply_to.task
|
task = in_reply_to.task
|
||||||
else:
|
else:
|
||||||
try:
|
try:
|
||||||
|
task_id = int(options["extensions"][i])
|
||||||
|
except:
|
||||||
|
task_id = None
|
||||||
|
|
||||||
|
# allow only users in the database to reply by task id
|
||||||
|
if not User.objects.filter(email=sender).exists():
|
||||||
|
task_id = None
|
||||||
|
|
||||||
task, created = Task.objects.get_or_create(
|
task, created = Task.objects.get_or_create(
|
||||||
pk__exact=int(options["extensions"][i]),
|
pk__exact=task_id,
|
||||||
defaults={
|
defaults={
|
||||||
"title": title,
|
"title": title,
|
||||||
"state": endpoint.default_state,
|
"state": endpoint.default_state,
|
||||||
|
@ -96,18 +107,8 @@ class Command(BaseCommand):
|
||||||
task.tags.set(endpoint.default_tags.all())
|
task.tags.set(endpoint.default_tags.all())
|
||||||
else:
|
else:
|
||||||
in_reply_to = task.comment_set.order_by("-created_at").first()
|
in_reply_to = task.comment_set.order_by("-created_at").first()
|
||||||
except ValueError: # extension is empty or not an int
|
|
||||||
task = Task.objects.create(
|
|
||||||
title=title,
|
|
||||||
state=endpoint.default_state,
|
|
||||||
assignee=endpoint.default_assignee,
|
|
||||||
)
|
|
||||||
task.tags.set(endpoint.default_tags.all())
|
|
||||||
created = True
|
|
||||||
|
|
||||||
TaskSubscription.objects.get_or_create(
|
TaskSubscription.objects.get_or_create(subscriber=sender, task=task)
|
||||||
subscriber=options["sender"], task=task
|
|
||||||
)
|
|
||||||
|
|
||||||
comment = Comment.objects.create(
|
comment = Comment.objects.create(
|
||||||
text=text,
|
text=text,
|
||||||
|
|
Loading…
Reference in New Issue