Browse Source

Поменял состояние "на выполнении" на "провалено". Состоянием "на выполнении никто не пользуется", а помечать задачи как проваленные может пригодиться

devel
bashmak 9 years ago
parent
commit
157fec76d1
  1. 8
      taskapp/models.py
  2. 14
      taskapp/templates/taskapp/ext.htm
  3. 18
      taskapp/templates/taskapp/tasklist.html
  4. 16
      taskapp/templates/taskapp/tasklist_all.html
  5. 12
      taskapp/templates/taskapp/tasklist_failed.html
  6. 19
      taskapp/templates/taskapp/tasklist_finish.html
  7. 2
      taskapp/templates/taskapp/tasklist_own.html
  8. 10
      taskapp/templates/taskapp/view.html
  9. 4
      taskapp/urls.py
  10. 10
      taskapp/views.py

8
taskapp/models.py

@ -18,7 +18,7 @@ TASK_PRIORITIES = (
TASK_STATES = ( TASK_STATES = (
('S', _('New')), ('S', _('New')),
('C', _('In fulfilling')),
('C', _('Confused')),
('F', _('Completed')) ('F', _('Completed'))
) )
@ -44,7 +44,7 @@ class ChangeLog(models.Model):
('c', _('Create task')), ('c', _('Create task')),
('d', _('Delete task')), ('d', _('Delete task')),
('f', _('Completing tasks')), ('f', _('Completing tasks')),
('b', _('The task started'))
('b', _('The task failed'))
) )
act_type = models.CharField(max_length=1, choices=ACT_CHOICES) act_type = models.CharField(max_length=1, choices=ACT_CHOICES)
when = models.DateTimeField(auto_now_add=True) when = models.DateTimeField(auto_now_add=True)
@ -89,8 +89,8 @@ class Task(models.Model):
) )
self.save(update_fields=['state', 'out_date']) self.save(update_fields=['state', 'out_date'])
def begin(self, current_user):
self.state = 'C' # Начата
def do_fail(self, current_user):
self.state = 'C' # Провалена
ChangeLog.objects.create( ChangeLog.objects.create(
task=self, task=self,
act_type='b', act_type='b',

14
taskapp/templates/taskapp/ext.htm

@ -23,13 +23,6 @@
</a> </a>
</li> </li>
{% url 'taskapp:active_tasks' as taskactive %}
<li{% if taskactive == request.path %} class="active"{% endif %}>
<a href="{{ taskactive }}">
{% trans 'Active tasks' %}
</a>
</li>
{% url 'taskapp:finished_tasks' as taskfin %} {% url 'taskapp:finished_tasks' as taskfin %}
<li{% if taskfin == request.path %} class="active"{% endif %}> <li{% if taskfin == request.path %} class="active"{% endif %}>
<a href="{{ taskfin }}"> <a href="{{ taskfin }}">
@ -44,6 +37,13 @@
</a> </a>
</li> </li>
{% url 'taskapp:failed_tasks' as taskfailed %}
<li{% if taskfailed == request.path %} class="active"{% endif %}>
<a href="{{ taskfailed }}">
{% trans 'Failed tasks' %}
</a>
</li>
{% url 'taskapp:my_tasks' as taskmy %} {% url 'taskapp:my_tasks' as taskmy %}
<li{% if taskmy == request.path %} class="active"{% endif %}> <li{% if taskmy == request.path %} class="active"{% endif %}>
<a href="{{ taskmy }}"> <a href="{{ taskmy }}">

18
taskapp/templates/taskapp/tasklist.html

@ -33,7 +33,7 @@
{% endif %} {% endif %}
{% endif %} {% endif %}
<td><a href="{% url 'taskapp:view' task.id %}" target="_blank">{{ task.id }}</a></td>
<td><a href="{% url 'taskapp:view' task.pk %}" target="_blank">{{ task.pk }}</a></td>
{% if task.abon and task.abon.group %} {% if task.abon and task.abon.group %}
<td><a href="{% url 'abonapp:abon_home' task.abon.group.pk task.abon.pk %}" target="_blank">{{ task.abon.get_full_name }}</a></td> <td><a href="{% url 'abonapp:abon_home' task.abon.group.pk task.abon.pk %}" target="_blank">{{ task.abon.get_full_name }}</a></td>
@ -45,19 +45,19 @@
<td>{{ task.get_mode_display }}</td> <td>{{ task.get_mode_display }}</td>
<td>{{ task.descr }}</td> <td>{{ task.descr }}</td>
<td><a href="{% url 'acc_app:other_profile' task.author.pk %}"
<td><a href="{% url 'acc_app:other_profile' task.author.pk %}" data-toggle="tooltip"
title="{{ task.author.get_full_name }}">{{ task.author.username }}</a></td> title="{{ task.author.get_full_name }}">{{ task.author.username }}</a></td>
<td>{{ task.time_of_create|date:'d N Y H:i:s' }}</td>
<td>{{ task.time_of_create|date:'d E H:i' }}</td>
<td class="btn-group btn-group-justified">
<a href="{% url 'taskapp:begin' task.id %}" class="btn btn-primary btn-xs" title="{% trans 'Begin' %}">
<span class="glyphicon glyphicon-cog"></span>
</a>
<a href="{% url 'taskapp:finish' task.id %}" class="btn btn-success btn-xs" title="{% trans 'Complete' %}">
<td class="btn-group btn-group-xs btn-group-justified">
<a href="{% url 'taskapp:finish' task.pk %}" class="btn btn-success" data-toggle="tooltip" title="{% trans 'Complete' %}">
<span class="glyphicon glyphicon-ok"></span> <span class="glyphicon glyphicon-ok"></span>
</a> </a>
<a href="{% url 'taskapp:fail' task.pk %}" class="btn btn-danger" data-toggle="tooltip" title="{% trans 'Mark as unsuccessful' %}">
<span class="glyphicon glyphicon-fire"></span>
</a>
{% if perms.taskapp.change_task %} {% if perms.taskapp.change_task %}
<a href="{% url 'taskapp:edit' task.id %}" class="btn btn-default btn-xs" title="{% trans 'Edit' %}">
<a href="{% url 'taskapp:edit' task.pk %}" class="btn btn-default" data-toggle="tooltip" title="{% trans 'Edit' %}">
<span class="glyphicon glyphicon-edit"></span> <span class="glyphicon glyphicon-edit"></span>
</a> </a>
{% endif %} {% endif %}

16
taskapp/templates/taskapp/tasklist_all.html

@ -46,7 +46,7 @@
{% endif %} {% endif %}
{% endif %} {% endif %}
<td><a href="{% url 'taskapp:view' task.id %}" target="_blank">{{ task.id }}</a></td>
<td><a href="{% url 'taskapp:view' task.pk %}" target="_blank">{{ task.pk }}</a></td>
{% if task.abon and task.abon.group %} {% if task.abon and task.abon.group %}
<td><a href="{% url 'abonapp:abon_home' task.abon.group.pk task.abon.pk %}" target="_blank">{{ task.abon.get_full_name }}</a></td> <td><a href="{% url 'abonapp:abon_home' task.abon.group.pk task.abon.pk %}" target="_blank">{{ task.abon.get_full_name }}</a></td>
@ -59,22 +59,24 @@
<td>{{ task.get_mode_display }}</td> <td>{{ task.get_mode_display }}</td>
<td>{{ task.descr }}</td> <td>{{ task.descr }}</td>
<td>{% if task.author %} <td>{% if task.author %}
<a href="{% url 'acc_app:other_profile' task.author.pk %}" title="{{ task.author.get_full_name }}">{{ task.author.username }}</a>
<a href="{% url 'acc_app:other_profile' task.author.pk %}" title="{{ task.author.get_full_name }}" data-toggle="tooltip">
{{ task.author.username }}
</a>
{% else %} {% else %}
{% trans 'Not assigned' %} {% trans 'Not assigned' %}
{% endif %} {% endif %}
</td> </td>
<td>{{ task.get_state_display }}</td> <td>{{ task.get_state_display }}</td>
<td>{{ task.time_of_create|date:'d N Y H:i:s' }}</td>
<td>{{ task.time_of_create|date:'d E H:i' }}</td>
<td class="btn-group btn-group-justified">
<td class="btn-group btn-group-sm btn-group-justified">
{% if perms.taskapp.change_task %} {% if perms.taskapp.change_task %}
<a href="{% url 'taskapp:edit' task.id %}" class="btn btn-default btn-sm" title="{% trans 'Edit' %}">
<a href="{% url 'taskapp:edit' task.pk %}" class="btn btn-default" title="{% trans 'Edit' %}" data-toggle="tooltip">
<span class="glyphicon glyphicon-edit"></span> <span class="glyphicon glyphicon-edit"></span>
</a> </a>
{% endif %} {% endif %}
{% if perms.taskapp.can_remind %} {% if perms.taskapp.can_remind %}
<a href="{% url 'taskapp:remind' task.id %}" class="btn btn-default btn-sm" title="{% trans 'Remind' %}">
<a href="{% url 'taskapp:remind' task.pk %}" class="btn btn-default" title="{% trans 'Remind' %}" data-toggle="tooltip">
<span class="glyphicon glyphicon-bell"></span> <span class="glyphicon glyphicon-bell"></span>
</a> </a>
{% endif %} {% endif %}
@ -90,7 +92,7 @@
<tr> <tr>
<td colspan="9"> <td colspan="9">
{% if perms.taskapp.add_task %} {% if perms.taskapp.add_task %}
<a href="{% url 'taskapp:add' %}" class="btn btn-sm btn-success" title="{% trans 'Add new task' %}">
<a href="{% url 'taskapp:add' %}" class="btn btn-sm btn-success" title="{% trans 'Add new task' %}" data-toggle="tooltip">
<span class="glyphicon glyphicon-plus"></span> {% trans 'Add new task' %} <span class="glyphicon glyphicon-plus"></span> {% trans 'Add new task' %}
</a> </a>
{% endif %} {% endif %}

12
taskapp/templates/taskapp/tasklist_active.html → taskapp/templates/taskapp/tasklist_failed.html

@ -33,7 +33,7 @@
{% endif %} {% endif %}
{% endif %} {% endif %}
<td><a href="{% url 'taskapp:view' task.id %}" target="_blank">{{ task.id }}</a></td>
<td><a href="{% url 'taskapp:view' task.pk %}" target="_blank">{{ task.pk }}</a></td>
{% if task.abon and task.abon.group %} {% if task.abon and task.abon.group %}
<td><a href="{% url 'abonapp:abon_home' task.abon.group.pk task.abon.pk %}" target="_blank">{{ task.abon.get_full_name }}</a></td> <td><a href="{% url 'abonapp:abon_home' task.abon.group.pk task.abon.pk %}" target="_blank">{{ task.abon.get_full_name }}</a></td>
@ -45,16 +45,16 @@
<td>{{ task.get_mode_display }}</td> <td>{{ task.get_mode_display }}</td>
<td>{{ task.descr }}</td> <td>{{ task.descr }}</td>
<td><a href="{% url 'acc_app:other_profile' task.author.pk %}"
<td><a href="{% url 'acc_app:other_profile' task.author.pk %}" data-toggle="tooltip"
title="{{ task.author.get_full_name }}">{{ task.author.username }}</a></td> title="{{ task.author.get_full_name }}">{{ task.author.username }}</a></td>
<td>{{ task.time_of_create|date:'d N Y H:i:s' }}</td>
<td>{{ task.time_of_create|date:'d E H:i' }}</td>
<td class="btn-group">
<a href="{% url 'taskapp:finish' task.id %}" class="btn btn-sm btn-success" title="{% trans 'Complete' %}">
<td class="btn-group btn-group-sm">
<a href="{% url 'taskapp:finish' task.pk %}" class="btn btn-success" title="{% trans 'Complete' %}" data-toggle="tooltip">
<span class="glyphicon glyphicon-ok"></span> <span class="glyphicon glyphicon-ok"></span>
</a> </a>
{% if perms.taskapp.change_task %} {% if perms.taskapp.change_task %}
<a href="{% url 'taskapp:edit' task.id %}" class="btn btn-sm btn-default" title="{% trans 'Edit' %}">
<a href="{% url 'taskapp:edit' task.pk %}" class="btn btn-default" title="{% trans 'Edit' %}" data-toggle="tooltip">
<span class="glyphicon glyphicon-edit"></span> <span class="glyphicon glyphicon-edit"></span>
</a> </a>
{% endif %} {% endif %}

19
taskapp/templates/taskapp/tasklist_finish.html

@ -8,12 +8,12 @@
<tr> <tr>
<th>#</th> <th>#</th>
<th class="col-sm-3">{% trans 'Name' %}</th> <th class="col-sm-3">{% trans 'Name' %}</th>
<th class="col-sm-1">{% trans 'Address' %}</th>
<th class="col-sm-2">{% trans 'Address' %}</th>
<th class="col-sm-1">{% trans 'The nature of the damage' %}</th> <th class="col-sm-1">{% trans 'The nature of the damage' %}</th>
<th class="col-sm-4">{% trans 'Description' %}</th> <th class="col-sm-4">{% trans 'Description' %}</th>
<th class="col-sm-1">{% trans 'Task author' %}</th> <th class="col-sm-1">{% trans 'Task author' %}</th>
<th class="col-sm-1">{% trans 'Date of create' %}</th> <th class="col-sm-1">{% trans 'Date of create' %}</th>
<th class="col-sm-1">{% trans 'Actions' %}</th>
<th>#</th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
@ -33,7 +33,7 @@
{% endif %} {% endif %}
{% endif %} {% endif %}
<td><a href="{% url 'taskapp:view' task.id %}" target="_blank">{{ task.id }}</a></td>
<td><a href="{% url 'taskapp:view' task.pk %}" target="_blank">{{ task.pk }}</a></td>
{% if task.abon and task.abon.group %} {% if task.abon and task.abon.group %}
<td><a href="{% url 'abonapp:abon_home' task.abon.group.pk task.abon.pk %}" target="_blank">{{ task.abon.get_full_name }}</a></td> <td><a href="{% url 'abonapp:abon_home' task.abon.group.pk task.abon.pk %}" target="_blank">{{ task.abon.get_full_name }}</a></td>
@ -45,21 +45,16 @@
<td>{{ task.get_mode_display }}</td> <td>{{ task.get_mode_display }}</td>
<td>{{ task.descr }}</td> <td>{{ task.descr }}</td>
<td><a href="{% url 'acc_app:other_profile' task.author.pk %}"
<td><a href="{% url 'acc_app:other_profile' task.author.pk %}" data-toggle="tooltip"
title="{{ task.author.get_full_name }}">{{ task.author.username }}</a></td> title="{{ task.author.get_full_name }}">{{ task.author.username }}</a></td>
<td>{{ task.time_of_create|date:'d N Y H:i:s' }}</td>
<td>{{ task.time_of_create|date:'d E H:i' }}</td>
<td class="btn-group">
<td>
{% if perms.taskapp.change_task %} {% if perms.taskapp.change_task %}
<a href="{% url 'taskapp:edit' task.id %}" class="btn btn-sm btn-default" title="{% trans 'Edit' %}">
<a href="{% url 'taskapp:edit' task.pk %}" class="btn btn-sm btn-default" title="{% trans 'Edit' %}" data-toggle="tooltip">
<span class="glyphicon glyphicon-edit"></span> <span class="glyphicon glyphicon-edit"></span>
</a> </a>
{% endif %} {% endif %}
{% if perms.taskapp.delete_task %}
<a href="{% url 'taskapp:delete' task.id %}" class="btn btn-sm btn-danger disabled" title="{% trans 'Delete' %}">
<span class="glyphicon glyphicon-remove-circle"></span>
</a>
{% endif %}
</td> </td>
</tr> </tr>
{% empty %} {% empty %}

2
taskapp/templates/taskapp/tasklist_own.html

@ -46,7 +46,7 @@
<td>{{ task.get_mode_display }}</td> <td>{{ task.get_mode_display }}</td>
<td>{{ task.descr }}</td> <td>{{ task.descr }}</td>
<td>{{ task.get_state_display }}</td> <td>{{ task.get_state_display }}</td>
<td>{{ task.time_of_create|date:'d N Y H:i:s' }}</td>
<td>{{ task.time_of_create|date:'d E H:i' }}</td>
<td class="btn-group btn-group-justified"> <td class="btn-group btn-group-justified">
{% if perms.taskapp.change_task %} {% if perms.taskapp.change_task %}

10
taskapp/templates/taskapp/view.html

@ -5,7 +5,7 @@
<ol class="breadcrumb"> <ol class="breadcrumb">
<li><span class="glyphicon glyphicon-home"></span></li> <li><span class="glyphicon glyphicon-home"></span></li>
<li><a href="{% url 'taskapp:home' %}">{% trans 'Tasks' %}</a></li> <li><a href="{% url 'taskapp:home' %}">{% trans 'Tasks' %}</a></li>
<li class="active">#{{ task.id }}</li>
<li class="active">#{{ task.pk }}</li>
</ol> </ol>
{% include 'message_block.html' %} {% include 'message_block.html' %}
@ -18,23 +18,23 @@
<p>{% trans 'Description' %}: {{ task.descr }}</p> <p>{% trans 'Description' %}: {{ task.descr }}</p>
{% trans 'Task author' %}: <a href="{% url 'acc_app:other_profile' task.author.pk %}" title="{{ task.author.get_full_name }}" target="_blank">{{ task.author.username }}</a><br>
{% trans 'Task author' %}: <a href="{% url 'acc_app:other_profile' task.author.pk %}" title="{{ task.author.get_full_name }}" data-toggle="tooltip" target="_blank">{{ task.author.username }}</a><br>
{% trans 'Implementers' %}: {% trans 'Implementers' %}:
<ul> <ul>
{% for recipient in task.recipients.all %} {% for recipient in task.recipients.all %}
<li><a href="{% url 'acc_app:other_profile' recipient.id %}" target="_blank">{{ recipient.get_full_name }}</a></li>
<li><a href="{% url 'acc_app:other_profile' recipient.pk %}" target="_blank">{{ recipient.get_full_name }}</a></li>
{% endfor %} {% endfor %}
</ul> </ul>
{% trans 'A priority' %}: {{ task.get_priority_display }}<br> {% trans 'A priority' %}: {{ task.get_priority_display }}<br>
{% trans 'The task is valid until' %} {{ task.out_date|date:'d E Y' }}<br> {% trans 'The task is valid until' %} {{ task.out_date|date:'d E Y' }}<br>
{% trans 'Date of create' %} {{ task.time_of_create|date:'d E Y' }}<br>
{% trans 'Date of create' %} {{ task.time_of_create|date:'d E Y H:i:s' }}<br>
{% trans 'time left' %} {{ time_diff }}<br> {% trans 'time left' %} {{ time_diff }}<br>
{% trans 'Task type' %}: {{ task.get_mode_display }}<br> {% trans 'Task type' %}: {{ task.get_mode_display }}<br>
{% trans 'Condition' %}: {{ task.get_state_display }}<br> {% trans 'Condition' %}: {{ task.get_state_display }}<br>
{% trans 'Subscriber' %} {% trans 'Subscriber' %}
{% if task.abon %} {% if task.abon %}
<a href="{% url 'abonapp:abon_home' task.abon.group.id task.abon.id %}" target="_blank">{{ task.abon.get_full_name }}</a>
<a href="{% url 'abonapp:abon_home' task.abon.group.pk task.abon.pk %}" target="_blank">{{ task.abon.get_full_name }}</a>
{% else %} {% else %}
<i>{% trans 'Not assigned' %}</i> <i>{% trans 'Not assigned' %}</i>
{% endif %}<br> {% endif %}<br>

4
taskapp/urls.py

@ -9,10 +9,10 @@ urlpatterns = [
url(r'^(?P<task_id>\d+)/edit$', views.task_add_edit, name='edit'), url(r'^(?P<task_id>\d+)/edit$', views.task_add_edit, name='edit'),
url(r'^(?P<task_id>\d+)/delete$', views.task_delete, name='delete'), url(r'^(?P<task_id>\d+)/delete$', views.task_delete, name='delete'),
url(r'^(?P<task_id>\d+)/fin$', views.task_finish, name='finish'), url(r'^(?P<task_id>\d+)/fin$', views.task_finish, name='finish'),
url(r'^(?P<task_id>\d+)/begin$', views.task_begin, name='begin'),
url(r'^(?P<task_id>\d+)/fail$', views.task_failed, name='fail'),
url(r'^(?P<task_id>\d+)/remind', views.remind, name='remind'), url(r'^(?P<task_id>\d+)/remind', views.remind, name='remind'),
url(r'^add$', views.task_add_edit, name='add'), url(r'^add$', views.task_add_edit, name='add'),
url(r'^active$', views.active_tasks, name='active_tasks'),
url(r'^failed$', views.failed_tasks, name='failed_tasks'),
url(r'^finished$', views.finished_tasks, name='finished_tasks'), url(r'^finished$', views.finished_tasks, name='finished_tasks'),
url(r'^own$', views.own_tasks, name='own_tasks'), url(r'^own$', views.own_tasks, name='own_tasks'),
url(r'^my$', views.my_tasks, name='my_tasks'), url(r'^my$', views.my_tasks, name='my_tasks'),

10
taskapp/views.py

@ -23,10 +23,10 @@ def home(request):
@login_required @login_required
@only_admins @only_admins
def active_tasks(request):
tasks = Task.objects.filter(recipients=request.user, state='C') # На выполнении
def failed_tasks(request):
tasks = Task.objects.filter(recipients=request.user, state='C') # Проваленные
tasks = pag_mn(request, tasks) tasks = pag_mn(request, tasks)
return render(request, 'taskapp/tasklist_active.html', {
return render(request, 'taskapp/tasklist_failed.html', {
'tasks': tasks 'tasks': tasks
}) })
@ -174,9 +174,9 @@ def task_finish(request, task_id):
@login_required @login_required
@only_admins @only_admins
def task_begin(request, task_id):
def task_failed(request, task_id):
task = get_object_or_404(Task, id=task_id) task = get_object_or_404(Task, id=task_id)
task.begin(request.user)
task.do_fail(request.user)
return redirect('taskapp:home') return redirect('taskapp:home')

Loading…
Cancel
Save