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 django import forms
from .models import Task, ExtraComment, _delta_add_days from .models import Task, ExtraComment, _delta_add_days
from accounts_app.models import UserProfile from accounts_app.models import UserProfile
from taskapp.handle import TaskException
class TaskFrm(forms.ModelForm): class TaskFrm(forms.ModelForm):
def __init__(self, *args, **kwargs):
def __init__(self, initial_abon=None, *args, **kwargs):
super(TaskFrm, self).__init__(*args, **kwargs) super(TaskFrm, self).__init__(*args, **kwargs)
self.fields['recipients'].queryset = UserProfile.objects.filter(is_admin=True) 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: class Meta:
model = Task model = Task
exclude = ['time_of_create', 'author', 'device'] 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" msgid "fix form errors"
msgstr "исправте ошибки формы" msgstr "исправте ошибки формы"
msgid "Task has successfully created"
msgstr "Задача успешно создана"
msgid "Failed tasks" msgid "Failed tasks"
msgstr "Проваленные задачи" msgstr "Проваленные задачи"
@ -448,3 +450,6 @@ msgstr "Задачи, которые необходимо выполнить"
msgid "locality %s. Task type - %s. " msgid "locality %s. Task type - %s. "
msgstr "с. %s. Тип задачи - %s. " msgstr "с. %s. Тип задачи - %s. "
msgid "Recipients"
msgstr "Исполнители"

2
taskapp/models.py

@ -61,7 +61,7 @@ def _delta_add_days():
class Task(models.Model): class Task(models.Model):
descr = models.CharField(_('Description'), 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, 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')) 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]) 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) 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> </div>
{% if task %} {% if task %}
<div class="col-sm-6"> <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>
<div class="col-sm-6"> <div class="col-sm-6">
{% include "taskapp/comments/task_comments.html" with comments=comments task_uid=task.pk comment_form=comment_form %} {% 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>
<div class="panel-body"> <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' %}: {% trans 'Implementers' %}:
<ul> <ul>

50
taskapp/views.py

@ -110,10 +110,13 @@ class TaskUpdateView(UpdateView):
def get_object(self, queryset=None): def get_object(self, queryset=None):
task_id = safe_int(self.kwargs.get('task_id')) task_id = safe_int(self.kwargs.get('task_id'))
if task_id == 0: 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 return
else: else:
task = get_object_or_404(Task, pk=task_id) task = get_object_or_404(Task, pk=task_id)
setattr(self, 'selected_abon', task.abon)
self.selected_abon = task.abon
return task return task
def dispatch(self, request, *args, **kwargs): def dispatch(self, request, *args, **kwargs):
@ -126,32 +129,33 @@ class TaskUpdateView(UpdateView):
raise PermissionDenied raise PermissionDenied
return super(TaskUpdateView, self).dispatch(request, *args, **kwargs) 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): 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'))
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: else:
messages.add_message(self.request, messages.ERROR, _('No responsible employee for the users group'))
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): 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() now_date = datetime.now().date()
task = self.object task = self.object

Loading…
Cancel
Save