Ejemplo n.º 1
0
Archivo: views.py Proyecto: wuxxin/ecs
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,
        })
Ejemplo n.º 2
0
Archivo: views.py Proyecto: wuxxin/ecs
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))
Ejemplo n.º 3
0
Archivo: views.py Proyecto: wuxxin/ecs
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))
Ejemplo n.º 4
0
Archivo: views.py Proyecto: wuxxin/ecs
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))
Ejemplo n.º 5
0
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,
    })
Ejemplo n.º 6
0
def delete_docstash_entry(request):
    request.docstash.delete()
    return redirect_to_next_url(request, reverse('ecs.dashboard.views.view_dashboard'))
Ejemplo n.º 7
0
Archivo: views.py Proyecto: wuxxin/ecs
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'))
Ejemplo n.º 8
0
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'))
Ejemplo n.º 9
0
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'))
Ejemplo n.º 10
0
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'))
Ejemplo n.º 11
0
Archivo: views.py Proyecto: wuxxin/ecs
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'))
Ejemplo n.º 12
0
Archivo: views.py Proyecto: wuxxin/ecs
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'))
Ejemplo n.º 13
0
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'))
Ejemplo n.º 14
0
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'))