Example #1
0
def new_thread(request, course_slug=None, document_id=None):
    if document_id is not None:
        document = get_object_or_404(Document, id=document_id)
        course = document.course
    else:
        course = get_object_or_404(Course, slug=course_slug)
        document = None

    if request.method == "POST":
        form = NewThreadForm(request.POST)

        if form.is_valid():
            name = form.cleaned_data["name"]
            content = form.cleaned_data["content"]

            thread = Thread.objects.create(user=request.user, name=name, course=course, document=document)
            message = Message.objects.create(user=request.user, thread=thread, text=content)

            placement = {}
            for opt, typecast in Thread.PLACEMENT_OPTS.items():
                if opt in request.POST:
                    placement[opt] = typecast(request.POST[opt])
            if len(placement) > 0:
                thread.placement = json.dumps(placement)
                thread.save()

            actions.follow(request.user, thread, actor_only=False)
            action.send(request.user, verb="a posté", action_object=thread, target=course, markdown=message.text)

            return HttpResponseRedirect(reverse("thread_show", args=[thread.id]) + "#message-" + str(message.id))
    else:
        form = NewThreadForm()

    return render(request, "telepathy/new_thread.html", {"form": form, "course": course})
Example #2
0
def new_thread(request, parent_id):
    parentNode = get_object_or_404(Node, id=parent_id)

    if request.method == 'POST':
        form = NewThreadForm(request.POST)

        if form.is_valid():
            name = form.cleaned_data['name']
            content = form.cleaned_data['content']

            year = "{}-{}".format(current_year(), current_year() + 1)

            thread = Thread.objects.create(user=request.user, name=name, year=year)
            message = Message.objects.create(user=request.user, thread=thread, text=content)
            parentNode.add_child(thread)

            placement = {}
            for opt,typecast in Thread.PLACEMENT_OPTS.iteritems():
                if opt in request.POST:
                    placement[opt] = typecast(request.POST[opt])
            if len(placement) > 0:
                thread.placement = json.dumps(placement)
                thread.save()

            if request.user.auto_follow:
                request.user.follow.add(thread)

            return HttpResponseRedirect(reverse('thread_show', args=[thread.id]) + "#message-" + str(message.id))
    else:
        form = NewThreadForm()

    return render(request, 'new_thread.html', {
        'form': form,
        'parent': parentNode,
    })
Example #3
0
def new_thread(request):
    form = NewThreadForm(request.POST)

    if form.is_valid():
        name = escape(form.cleaned_data['name'])
        content = escape(form.cleaned_data['content'])
        parentNode = get_object_or_404(Node, id=form.cleaned_data['parentNode'])
        thread = Thread.objects.create(user=request.user.get_profile(), name=name)
        message = Message.objects.create(user=request.user.get_profile(),
                                         thread=thread, text=content)
        parentNode.add_child(thread)
        return HttpResponseRedirect(reverse('thread_show', args=[thread.id]))
    return HttpResponse('form invalid', 'text/html')
Example #4
0
def new_thread(request, group_slug=None, document_id=None):
    if document_id is not None:
        document = get_object_or_404(Document, id=document_id)
        group = document.group
    else:
        group = get_object_or_404(Group, slug=group_slug)
        document = None

    if request.method == 'POST':
        form = NewThreadForm(request.POST)

        if form.is_valid():
            name = form.cleaned_data['name']
            content = form.cleaned_data['content']

            thread = Thread.objects.create(user=request.user,
                                           name=name,
                                           group=group,
                                           document=document)
            message = Message.objects.create(user=request.user,
                                             thread=thread,
                                             text=content)

            placement = {}
            for opt, typecast in Thread.PLACEMENT_OPTS.items():
                if opt in request.POST:
                    placement[opt] = typecast(request.POST[opt])
            if len(placement) > 0:
                thread.placement = json.dumps(placement)
                thread.save()

            actions.follow(request.user, thread, actor_only=False)
            action.send(request.user,
                        verb="a posté",
                        action_object=thread,
                        target=group,
                        markdown=message.text)

            return HttpResponseRedirect(
                reverse('thread_show', args=[thread.id]) + "#message-" +
                str(message.id))
    else:
        form = NewThreadForm()

    return render(request, 'telepathy/new_thread.html', {
        'form': form,
        'group': group,
    })
Example #5
0
def new_thread(request):
    form = NewThreadForm(request.POST)

    if form.is_valid():
        name = escape(form.cleaned_data['name'])
        content = escape(form.cleaned_data['content'])
        parentNode = get_object_or_404(Node,
                                       id=form.cleaned_data['parentNode'])
        thread = Thread.objects.create(user=request.user.get_profile(),
                                       name=name)
        message = Message.objects.create(user=request.user.get_profile(),
                                         thread=thread,
                                         text=content)
        parentNode.add_child(thread)
        return HttpResponseRedirect(reverse('thread_show', args=[thread.id]))
    return HttpResponse('form invalid', 'text/html')
Example #6
0
def new_thread(request, parent_id):
    parentNode = get_object_or_404(Node, id=parent_id)

    if request.method == 'POST':
        form = NewThreadForm(request.POST)

        if form.is_valid():
            name = form.cleaned_data['name']
            content = form.cleaned_data['content']

            year = "{}-{}".format(current_year(), current_year() + 1)

            thread = Thread.objects.create(user=request.user,
                                           name=name,
                                           year=year)
            message = Message.objects.create(user=request.user,
                                             thread=thread,
                                             text=content)
            parentNode.add_child(thread)

            placement = {}
            for opt, typecast in Thread.PLACEMENT_OPTS.iteritems():
                if opt in request.POST:
                    placement[opt] = typecast(request.POST[opt])
            if len(placement) > 0:
                thread.placement = json.dumps(placement)
                thread.save()

            if request.user.auto_follow:
                request.user.follow.add(thread)

            return HttpResponseRedirect(
                reverse('thread_show', args=[thread.id]) + "#message-" +
                str(message.id))
    else:
        form = NewThreadForm()

    return render(request, 'new_thread.html', {
        'form': form,
        'parent': parentNode,
    })
Example #7
0
def document_show(request, pk):
    document = get_object_or_404(Document, pk=pk)

    if document.state != "DONE":
        return HttpResponseRedirect(reverse('group_show', args=(document.group.slug,)))

    context = {
        "document": document,
        "form": NewThreadForm(),
    }

    document.views = F('views') + 1
    document.save(update_fields=['views'])

    return render(request, "documents/viewer.html", context)
Example #8
0
def show_course(request, slug):
    if re.search(r'^\d+$', slug):
        course = get_object_or_404(Course, pk=slug)
    else:
        course = get_object_or_404(Course, slug=slug)
    course.thread_set, course.document_set = [], []
    for child in course.children():
        if type(child) == Thread:
            course.thread_set.append(child)
        elif type(child) == Document:
            course.document_set.append(child)
    #Thread.objects.filter(referer_content="course", referer_id=course.id)
    return render(
        request, "course.html", {
            "object": course,
            "upload_form": UploadFileForm(initial={"course": course}),
            "newthread_form": NewThreadForm(initial={"parentNode": course.id})
        })
Example #9
0
def document_show(request, id):
    document = get_object_or_404(Document, id=id)

    threads = filter(lambda x: x.get_real_instance_class() == Thread,
                     document.children())
    threads = map(lambda x: x.id, threads)
    threads = Thread.objects.filter(id__in=threads).annotate(
        Count('message')).select_related('user').prefetch_related('keywords')

    context = {
        "object": document,
        "parent": document.parent,
        "is_moderator": request.user.is_moderator(document.parent),
        "page_set": document.page_set.order_by('numero'),
        "form": NewThreadForm(),
        "threads": threads
    }
    document.views = F('views') + 1
    document.save(update_fields=['views'])
    return render(request, "viewer.html", context)