コード例 #1
0
def edit_message_for_model(request, model, object_slug, thread_id, message_id, template='blmessage/form_message.html'):
    """ Edit message inside thread """
    model = get_model(*model.split('.'))
    model_object = get_object_or_404(model, slug=object_slug, members=request.user)
    ctype = ContentType.objects.get_for_model(model_object)
    thread = get_object_or_404(Thread, pk=thread_id)

    if isinstance(model_object, Group):
        redirect_reverse = 'group-thread-detail'
        extra_context = {'group': model_object}

    elif isinstance(model_object, Project):
        redirect_reverse = 'project-thread-detail'
        extra_context = {'project': model_object}

    instance_data = Message.objects.get(pk=message_id, author=request.user)
    data = {'body': instance_data.body, }

    form = MessageForm(request.POST or None, instance=instance_data, initial=data)

    if request.method == "POST" and form.is_valid():
        message = form.save(thread, request.user)
        message.create_activity(request.user, Activity.UPDATE)

        # Notification
        request.user.message_set.create(message=_("Your message has been updated"))

        return HttpResponseRedirect(reverse(redirect_reverse,
                                            kwargs={'object_slug': object_slug,
                                                    'thread_id': thread.id}))
    extra_context['form'] = form
    return direct_to_template(request,
                              template=template,
                              extra_context=extra_context)
コード例 #2
0
def edit_message(request, thread_id, message_id):
    """ Edit selected message """
    thread = get_object_or_404(Thread, pk=thread_id)

    form = MessageForm(request.POST or None,
                       instance=message_id and Message.objects.get(pk=message_id, author=request.user))

    if request.method == "POST" and form.is_valid():
        message = form.save(thread, request.user)
        # Notification
        request.user.message_set.create(message=_("Your message has been updated"))

        return HttpResponseRedirect(reverse('message-detail',
                                            kwargs={'thread_id': thread.id}))

    return direct_to_template(request,
                              template='blmessage/form_message.html',
                              extra_context={'form': form})
コード例 #3
0
def detail_for_model(request, model, object_slug, thread_id, template='blmessage/list_message_model.html'):
    model = get_model(*model.split('.'))
    ctype = ContentType.objects.get_for_model(model)
    model_object = get_object_or_404(model,
                                     slug__iexact=object_slug,
                                     members=request.user)

    if isinstance(model_object, Group):
        redirect_reverse = 'group-thread-detail'
        extra_context = {'group': model_object}

    elif isinstance(model_object, Project):
        redirect_reverse = 'project-thread-detail'
        extra_context = {'project': model_object}

    thread = get_object_or_404(Thread, pk=thread_id)
    thread.seen_by.add(request.user)
    thread.save()

    form = MessageForm(request.POST or None)

    if request.method == "POST" and form.is_valid():
        message = form.save(thread, request.user)
        thread.create_activity(request.user, Activity.COMMENT)

        # Notification
        request.user.message_set.create(message=_("Your message has been posted"))

        return HttpResponseRedirect(reverse(redirect_reverse,
                                            kwargs = {'object_slug': object_slug,
                                                      'thread_id': thread_id }))

    extra_context['thread'] = thread
    extra_context['form'] = form

    return list_detail.object_list(request,
                                   queryset=thread.messages.all(),
                                   paginate_by=10,
                                   template_name=template,
                                   template_object_name='message',
                                   extra_context=extra_context)
コード例 #4
0
def detail(request, thread_id):
    """ Detail page of the thread """
    thread = get_object_or_404(Thread, pk=thread_id)
    model = thread.content_type.model_class()
    object = get_object_or_404(model, members=request.user, id=thread.object_id)

    form = MessageForm(request.POST or None)

    if request.method == "POST" and form.is_valid():
        message = form.save(thread, request.user)
        message.create_activity(request.user, Activity.COMMENT)

        return HttpResponseRedirect(reverse('message-detail',
                                            kwargs = {'thread_id': thread_id }))

    return direct_to_template(request,
                              template='blmessage/detail.html',
                              extra_context={'thread': thread,
                                             'form': form,
                                             'object': object,
                                             'model': model._meta.verbose_name})