Browse Source

Fix bugs

devel
bashmak 8 years ago
parent
commit
0e9679119c
  1. 17
      taskapp/forms.py
  2. 5
      taskapp/locale/ru/LC_MESSAGES/django.po
  3. 2
      taskapp/models.py
  4. 2
      taskapp/templates/taskapp/add_edit_task.html
  5. 9
      taskapp/templates/taskapp/details.html
  6. 50
      taskapp/views.py

17
taskapp/forms.py

@ -2,13 +2,28 @@ from django.utils.translation import ugettext as _
from django import forms
from .models import Task, ExtraComment, _delta_add_days
from accounts_app.models import UserProfile
from taskapp.handle import TaskException
class TaskFrm(forms.ModelForm):
def __init__(self, *args, **kwargs):
def __init__(self, initial_abon=None, *args, **kwargs):
super(TaskFrm, self).__init__(*args, **kwargs)
self.fields['recipients'].queryset = UserProfile.objects.filter(is_admin=True)
if initial_abon is not None:
# fetch profiles that has been attached on group of selected subscriber
profile_ids = initial_abon.group.profiles.filter(is_active=True).filter(is_admin=True).values_list('pk')
if len(profile_ids) > 0:
self.fields['recipients'].initial = [pi[0] for pi in profile_ids]
else:
raise TaskException(_('No responsible employee for the users group'))
def save(self, commit=True):
abon = self.data.get('abon') or None
if abon is None:
raise TaskException(_('You must select the subscriber'))
return super(TaskFrm, self).save(commit)
class Meta:
model = Task
exclude = ['time_of_create', 'author', 'device']

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

@ -427,6 +427,8 @@ msgstr "Время ожидания истекло -%(time_left)s"
msgid "fix form errors"
msgstr "исправте ошибки формы"
msgid "Task has successfully created"
msgstr "Задача успешно создана"
msgid "Failed tasks"
msgstr "Проваленные задачи"
@ -448,3 +450,6 @@ msgstr "Задачи, которые необходимо выполнить"
msgid "locality %s. Task type - %s. "
msgstr "с. %s. Тип задачи - %s. "
msgid "Recipients"
msgstr "Исполнители"

2
taskapp/models.py

@ -61,7 +61,7 @@ def _delta_add_days():
class Task(models.Model):
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, verbose_name=_('Recipients'), related_name='them_task')
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)

2
taskapp/templates/taskapp/add_edit_task.html

@ -99,7 +99,7 @@
</div>
{% if task %}
<div class="col-sm-6">
{% include 'taskapp/details.html' with task=task %}
{% include 'taskapp/details.html' with task=task time_diff=time_diff %}
</div>
<div class="col-sm-6">
{% include "taskapp/comments/task_comments.html" with comments=comments task_uid=task.pk comment_form=comment_form %}

9
taskapp/templates/taskapp/details.html

@ -5,9 +5,14 @@
</div>
<div class="panel-body">
<p>{% trans 'Description' %}: {{ task.descr }}</p>
<p>{% trans 'Description' %}: {{ task.descr|default:'' }}</p>
{% 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 'Task author' %}:
{% if task and 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>
{% else %}
<i>{% trans 'Not assigned' %}</i>
{% endif %}<br>
{% trans 'Implementers' %}:
<ul>

50
taskapp/views.py

@ -110,10 +110,13 @@ class TaskUpdateView(UpdateView):
def get_object(self, queryset=None):
task_id = safe_int(self.kwargs.get('task_id'))
if task_id == 0:
uid = safe_int(self.request.GET.get('uid'))
if uid != 0:
self.selected_abon = Abon.objects.get(username=str(uid))
return
else:
task = get_object_or_404(Task, pk=task_id)
setattr(self, 'selected_abon', task.abon)
self.selected_abon = task.abon
return task
def dispatch(self, request, *args, **kwargs):
@ -126,32 +129,33 @@ class TaskUpdateView(UpdateView):
raise PermissionDenied
return super(TaskUpdateView, self).dispatch(request, *args, **kwargs)
def get_form_kwargs(self):
kwargs = super(TaskUpdateView, self).get_form_kwargs()
if hasattr(self, 'selected_abon'):
kwargs.update({'initial_abon': self.selected_abon})
return kwargs
def form_valid(self, form):
task_instance = form.save()
self.object = task_instance
selected_abon = task_instance.abon
setattr(self, 'selected_abon', selected_abon)
if selected_abon:
# fetch profiles that has been attached on group of selected subscriber
profiles = selected_abon.group.profiles.filter(is_active=True).filter(is_admin=True)
if profiles.count() > 0:
profile_ids = [prof.id for prof in profiles]
task_instance.recipients.add(*profile_ids)
task_instance.save()
messages.add_message(self.request, messages.SUCCESS, _('Task has changed successfully'))
else:
messages.add_message(self.request, messages.ERROR, _('No responsible employee for the users group'))
try:
self.object = form.save()
task_id = safe_int(self.kwargs.get('task_id', 0))
if task_id == 0:
log_text = _('Task has successfully created')
else:
messages.add_message(self.request, messages.ERROR, _('You must select the subscriber'))
return super(TaskUpdateView, self).form_valid(form)
log_text = _('Task has changed successfully')
messages.add_message(self.request, messages.SUCCESS, log_text)
except MultipleException as e:
for err in e:
messages.add_message(self.request, messages.WARNING, err)
except TaskException as e:
messages.add_message(self.request, messages.ERROR, e)
return FormMixin.form_valid(self, form)
def get_context_data(self, **kwargs):
uid = safe_int(self.kwargs.get('uid'))
selected_abon = getattr(
self,
'selected_abon',
Abon.objects.get(username=str(uid)) if uid != 0 else None
)
if hasattr(self, 'selected_abon'):
selected_abon = self.selected_abon
else:
selected_abon = None
now_date = datetime.now().date()
task = self.object

Loading…
Cancel
Save