def new_thread(request, submission_pk=None, to_user_pk=None): submission, to_user = None, None if submission_pk is not None: submission = get_object_or_404(Submission, pk=submission_pk) if to_user_pk is not None: to_user = get_object_or_404(User, pk=to_user_pk) form = SendMessageForm(submission, request.POST or None, to=to_user) thread = None if request.method == 'POST' and form.is_valid(): thread = send_message(request.user, form.cleaned_data['receiver'], form.cleaned_data['subject'], form.cleaned_data['text'], submission=submission) return redirect_to_next_url( request, reverse('ecs.communication.views.read_thread', kwargs={'thread_pk': thread.pk})) return render( request, 'communication/send.html', { 'submission': submission, 'to_user': to_user, 'form': form, 'thread': thread, })
def accept_task(request, task_pk=None, full=False): task = get_object_or_404(Task.objects.acceptable_for_user(request.user), pk=task_pk) task.accept(request.user) submission_pk = request.GET.get('submission') view = 'ecs.tasks.views.task_list' if full else 'ecs.tasks.views.my_tasks' return redirect_to_next_url( request, reverse(view, kwargs={'submission_pk': submission_pk} if submission_pk else None))
def decline_task(request, task_pk=None, full=False): task = get_object_or_404(Task.objects, assigned_to=request.user, task_type__is_delegatable=True, pk=task_pk) task.assign(None) task_declined.send(type(task.node_controller), task=task) submission_pk = request.GET.get('submission') view = 'ecs.tasks.views.task_list' if full else 'ecs.tasks.views.my_tasks' return redirect_to_next_url( request, reverse(view, kwargs={'submission_pk': submission_pk} if submission_pk else None))
def accept_tasks(request, full=False): task_ids = request.POST.getlist('task_id') submission_pk = request.GET.get('submission') tasks = Task.objects.acceptable_for_user( request.user).filter(id__in=task_ids) for task in tasks: task.accept(request.user) view = 'ecs.tasks.views.task_list' if full else 'ecs.tasks.views.my_tasks' return redirect_to_next_url( request, reverse(view, kwargs={'submission_pk': submission_pk} if submission_pk else None))
def send_message(request, submission_pk=None, reply_to_pk=None, to_user_pk=None): submission, task, reply_to, to_user = None, None, None, None if submission_pk is not None: submission = get_object_or_404(Submission, pk=submission_pk) if to_user_pk is not None: to_user = get_object_or_404(User, pk=to_user_pk) if reply_to_pk is not None: reply_to = get_object_or_404(Message, pk=reply_to_pk) thread = reply_to.thread form = ReplyToMessageForm(request.POST or None, initial={ 'text': _('%(sender)s schrieb:%(linesep)s> %(text)s' % {'linesep':os.linesep, 'sender': reply_to.sender, 'text': '\n> '.join(reply_to.text.split('\n'))}) }, instance = Message(thread=thread)) submission = thread.submission else: form = SendMessageForm(request.POST or None) task_pk = request.GET.get('task') thread = None if task_pk is not None: task = get_object_or_404(Task, pk=task_pk) data = task.data if isinstance(data, Submission): submission = data if request.method == 'POST' and form.is_valid(): if not thread: thread = Thread.objects.create( subject=form.cleaned_data['subject'], sender=request.user, receiver=form.cleaned_data['receiver'], task=task, submission=submission, ) message = thread.add_message(request.user, text=form.cleaned_data['text']) return redirect_to_next_url(request, reverse('ecs.communication.views.read_thread', kwargs={'thread_pk': thread.pk})) return render(request, 'communication/send.html', { 'submission': submission, 'to_user': to_user, 'task': task, 'form': form, 'thread': thread, })
def delete_docstash_entry(request): request.docstash.delete() return redirect_to_next_url(request, reverse('ecs.dashboard.views.view_dashboard'))
def delete_docstash_entry(request): for sf in request.docstash.get('submission_forms', []): if sf.is_notification_update: sf.delete() request.docstash.delete() return redirect_to_next_url(request, reverse('ecs.dashboard.views.view_dashboard'))
def do_task(request, task_pk=None): task = get_object_or_404(Task, pk=task_pk) task.done(request.user) return redirect_to_next_url(request, reverse('ecs.tasks.views.my_tasks'))
def decline_task(request, task_pk=None): task = get_object_or_404(Task.objects.filter(assigned_to=request.user), pk=task_pk) task.assign(None) return redirect_to_next_url(request, reverse('ecs.tasks.views.my_tasks'))
def accept_task(request, task_pk=None): task = get_object_or_404(Task.objects.acceptable_for_user(request.user), pk=task_pk) task.accept(request.user) return redirect_to_next_url(request, reverse('ecs.tasks.views.my_tasks'))
def unstar(request, thread_pk=None): thread = get_object_or_404(Thread.objects.by_user(request.user), pk=thread_pk) thread.unstar(request.user) return redirect_to_next_url( request, reverse('ecs.communication.views.dashboard_widget'))
def mark_read(request, thread_pk=None): thread = get_object_or_404(Thread.objects.by_user(request.user), pk=thread_pk) thread.messages.filter(receiver=request.user).update(unread=False) return redirect_to_next_url( request, reverse('ecs.communication.views.dashboard_widget'))
def close_thread(request, thread_pk=None): thread = get_object_or_404(Thread.objects.by_user(request.user), pk=thread_pk) thread.mark_closed_for_user(request.user) return redirect_to_next_url(request, reverse('ecs.communication.views.outgoing_message_widget'))
def bump_message(request, message_pk=None): message = get_object_or_404(Message.objects.by_user(request.user), pk=message_pk) message.thread.add_message(request.user, message.text) return redirect_to_next_url(request, reverse('ecs.communication.views.outgoing_message_widget'))