Browse Source

Add remove button to task page

devel
bashmak 8 years ago
parent
commit
cd2f22f415
  1. 4
      taskapp/locale/ru/LC_MESSAGES/django.po
  2. 19
      taskapp/models.py
  3. 67
      taskapp/templates/taskapp/add_edit_task.html
  4. 2
      taskapp/views.py

4
taskapp/locale/ru/LC_MESSAGES/django.po

@ -202,7 +202,7 @@ msgid "Subscriber"
msgstr "Абонент" msgstr "Абонент"
#: taskapp/templates/taskapp/add_edit_task.html:75 #: taskapp/templates/taskapp/add_edit_task.html:75
msgid "Reality (the date by which you must complete the task)"
msgid "Reality"
msgstr "Актуальность (дата, до которой нужно завершить задачу)" msgstr "Актуальность (дата, до которой нужно завершить задачу)"
#: taskapp/templates/taskapp/add_edit_task.html:90 #: taskapp/templates/taskapp/add_edit_task.html:90
@ -243,7 +243,7 @@ msgstr "Адрес"
#: taskapp/templates/taskapp/tasklist_finish.html:14 #: taskapp/templates/taskapp/tasklist_finish.html:14
#: taskapp/templates/taskapp/view.html:21 #: taskapp/templates/taskapp/view.html:21
msgid "Task author" msgid "Task author"
msgstr "Кто назначил"
msgstr "Автор задачи"
#: taskapp/templates/taskapp/tasklist.html:15 #: taskapp/templates/taskapp/tasklist.html:15
#: taskapp/templates/taskapp/tasklist_active.html:15 #: taskapp/templates/taskapp/tasklist_active.html:15

19
taskapp/models.py

@ -60,17 +60,16 @@ def _delta_add_days():
class Task(models.Model): class Task(models.Model):
descr = models.CharField(max_length=128, null=True, blank=True)
descr = models.CharField(_('Description'), max_length=128, null=True, blank=True)
recipients = models.ManyToManyField(settings.AUTH_USER_MODEL, related_name='them_task') recipients = models.ManyToManyField(settings.AUTH_USER_MODEL, related_name='them_task')
author = models.ForeignKey(settings.AUTH_USER_MODEL, related_name='+', on_delete=models.SET_NULL, null=True, blank=True)
#device = models.ForeignKey(Device, related_name='dev')
priority = models.CharField(max_length=1, choices=TASK_PRIORITIES, default=TASK_PRIORITIES[2][0])
out_date = models.DateField(null=True, blank=True, default=_delta_add_days)
time_of_create = models.DateTimeField(auto_now_add=True)
state = models.CharField(max_length=1, choices=TASK_STATES, default=TASK_STATES[0][0])
attachment = models.ImageField(upload_to='task_attachments/%Y.%m.%d', blank=True, null=True)
mode = models.CharField(max_length=2, choices=TASK_TYPES, default=TASK_TYPES[0][0])
abon = models.ForeignKey(Abon, null=True, blank=True)
author = models.ForeignKey(settings.AUTH_USER_MODEL, related_name='+', on_delete=models.SET_NULL, null=True, blank=True, verbose_name=_('Task author'))
priority = models.CharField(_('A priority'), max_length=1, choices=TASK_PRIORITIES, default=TASK_PRIORITIES[2][0])
out_date = models.DateField(_('Reality'), null=True, blank=True, default=_delta_add_days)
time_of_create = models.DateTimeField(_('Date of create'), auto_now_add=True)
state = models.CharField(_('Condition'), max_length=1, choices=TASK_STATES, default=TASK_STATES[0][0])
attachment = models.ImageField(_('Attached image'), upload_to='task_attachments/%Y.%m.%d', blank=True, null=True)
mode = models.CharField(_('The nature of the damage'), max_length=2, choices=TASK_TYPES, default=TASK_TYPES[0][0])
abon = models.ForeignKey(Abon, null=True, blank=True, verbose_name=_('Subscriber'))
class Meta: class Meta:
db_table = 'task' db_table = 'task'

67
taskapp/templates/taskapp/add_edit_task.html

@ -1,5 +1,6 @@
{% extends request.is_ajax|yesno:'bajax.html,base.html' %} {% extends request.is_ajax|yesno:'bajax.html,base.html' %}
{% load i18n %} {% load i18n %}
{% load bootstrap3 %}
{% block main %} {% block main %}
<ol class="breadcrumb"> <ol class="breadcrumb">
@ -12,7 +13,11 @@
<div class="panel panel-default"> <div class="panel panel-default">
<div class="panel-heading"> <div class="panel-heading">
<h3 class="panel-title">{% trans 'Add new task' %}</h3>
{% if task_id %}
<h3 class="panel-title">{% trans 'Add new task' %}</h3>
{% else %}
<h3 class="panel-title">{% trans 'Edit task' %}</h3>
{% endif %}
</div> </div>
<div class="panel-body"> <div class="panel-body">
@ -23,38 +28,18 @@
{% endif %} {% endif %}
{% csrf_token %}<input type="hidden" name="MAX_FILE_SIZE" value="{{ FILE_UPLOAD_MAX_MEMORY_SIZE }}"/> {% csrf_token %}<input type="hidden" name="MAX_FILE_SIZE" value="{{ FILE_UPLOAD_MAX_MEMORY_SIZE }}"/>
<div class="form-group">
<label for="id_descr">{% trans 'Description' %}</label>
{% bootstrap_icon 'tag' as ic %}
{% bootstrap_field form.descr addon_before=ic %}
<div class="input-group">
<span class="input-group-addon"><span class="glyphicon glyphicon-tag"></span></span>
{{ form.descr }}{{ form.descr.errors }}
</div>
</div>
<div class="form-group">
<label for="id_mode">{% trans 'The nature of the damage' %}</label>
{% bootstrap_icon 'pawn' as ic %}
{% bootstrap_field form.mode addon_before=ic %}
<div class="input-group">
<span class="input-group-addon"><span class="glyphicon glyphicon-pawn"></span></span>
{{ form.mode }}{{ form.mode.errors }}
</div>
</div>
<div class="form-group">
<label for="id_priority">{% trans 'A priority' %}</label>
{% bootstrap_icon 'sort-by-order' as ic %}
{% bootstrap_field form.priority addon_before=ic %}
<div class="input-group">
<span class="input-group-addon"><span class="glyphicon glyphicon-sort-by-order"></span></span>
{{ form.priority }}{{ form.priority.errors }}
</div>
</div>
<div class="form-group">
<label for="id_state">{% trans 'Condition' %}</label>
{% bootstrap_icon 'retweet' as ic %}
{% bootstrap_field form.state addon_before=ic %}
<div class="input-group">
<span class="input-group-addon"><span class="glyphicon glyphicon-retweet"></span></span>
{{ form.state }}{{ form.state.errors }}
</div>
</div>
<div class="form-group"> <div class="form-group">
<label for="id_abon">{% trans 'Subscriber' %}</label> <label for="id_abon">{% trans 'Subscriber' %}</label>
@ -72,7 +57,7 @@
</div> </div>
</div> </div>
<div class="form-group"> <div class="form-group">
<label for="id_out_date">{% trans 'Reality (the date by which you must complete the task)' %}</label>
<label for="id_out_date">{% trans 'Reality' %}</label>
<div class="input-group"> <div class="input-group">
<span class="input-group-addon"><span class="glyphicon glyphicon-calendar"></span></span> <span class="input-group-addon"><span class="glyphicon glyphicon-calendar"></span></span>
@ -86,20 +71,22 @@
}); });
</script> </script>
</div> </div>
<div class="form-group">
<label for="id_attachment">{% trans 'Attached image' %}</label>
<div class="input-group">
<span class="input-group-addon"><span class="glyphicon glyphicon-picture"></span></span>
{{ form.attachment }}{{ form.attachment.errors }}
</div>
</div>
<div class="btn-group">
<button type="submit" class="btn btn-sm btn-primary">
{% bootstrap_icon 'picture' as ic %}
{% bootstrap_field form.attachment addon_before=ic %}
<div class="btn-group btn-group-sm">
<button type="submit" class="btn btn-primary">
<span class="glyphicon glyphicon-save"></span> {% trans 'Save' %} <span class="glyphicon glyphicon-save"></span> {% trans 'Save' %}
</button> </button>
<button type="reset" class="btn btn-sm btn-default">
<button type="reset" class="btn btn-default">
<span class="glyphicon glyphicon-remove-circle"></span> {% trans 'Reset' %} <span class="glyphicon glyphicon-remove-circle"></span> {% trans 'Reset' %}
</button> </button>
{% if task_id %}
<a href="{% url 'taskapp:delete' task_id %}" class="btn btn-danger">
<span class="glyphicon glyphicon-remove"></span> {% trans 'Delete' %}
</a>
{% endif %}
</div> </div>
</form> </form>
</div> </div>

2
taskapp/views.py

@ -82,7 +82,7 @@ def all_tasks(request):
def task_delete(request, task_id): def task_delete(request, task_id):
task = get_object_or_404(Task, id=task_id) task = get_object_or_404(Task, id=task_id)
# нельзя удалить назначенную мне задачу # нельзя удалить назначенную мне задачу
if request.user not in task.recipients.all():
if request.user.is_superuser or request.user not in task.recipients.all():
task.delete() task.delete()
else: else:
messages.warning(request, _('You cannot delete task that assigned to you')) messages.warning(request, _('You cannot delete task that assigned to you'))

Loading…
Cancel
Save