Esempio n. 1
0
        'text': request.REQUEST.get('text', draft_text),
    }

    # TODO: use Thread.can_retag method
    if request.user.has_perm('openode.change_tag'):
        form.initial['tags'] = request.REQUEST.get('tags', draft_tagnames)

    data = {
        'active_tab': 'ask',
        'page_class': 'ask-page',
        'node': node,
        'form': form,
        'thread_type': const.THREAD_TYPE_DOCUMENT,
        'tag_names': list()  # need to keep context in sync with edit_thread for tag editor
    }
    data.update(context.get_for_tag_editor())
    return render_into_skin('node/document/add.html', data, request)

    ############   THIS CODE IS USELESS  ##############
    #########     handeled in writers.py:437     ###########

    # if request.method == "POST":
    #     form = DocumentRevisionModelForm(
    #         request.POST,
    #         request.FILES,
    #         request=request,
    #         node=node,
    #     )
    #     form.fields['thread_category'].queryset = node.thread_categories.all()
    #     if form.is_valid():
    #         dr = form.save()
Esempio n. 2
0
    }

    # TODO: use Thread.can_retag method
    if request.user.has_perm('openode.change_tag'):
        form.initial['tags'] = request.REQUEST.get('tags', draft_tagnames)

    data = {
        'active_tab': 'ask',
        'page_class': 'ask-page',
        'node': node,
        'form': form,
        'thread_type': const.THREAD_TYPE_DOCUMENT,
        'tag_names':
        list()  # need to keep context in sync with edit_thread for tag editor
    }
    data.update(context.get_for_tag_editor())
    return render_into_skin('node/document/add.html', data, request)

    ############   THIS CODE IS USELESS  ##############
    #########     handeled in writers.py:437     ###########

    # if request.method == "POST":
    #     form = DocumentRevisionModelForm(
    #         request.POST,
    #         request.FILES,
    #         request=request,
    #         node=node,
    #     )
    #     form.fields['thread_category'].queryset = node.thread_categories.all()
    #     if form.is_valid():
    #         dr = form.save()
Esempio n. 3
0
        'module': module,
        "posts_per_pages": posts_per_pages,
    }

    # show last visit for posts (comments, ...)
    try:
        thread_view = thread.viewed.get(user=request.user)
        thread_view_last_visit = thread_view.last_visit

    except (ObjectDoesNotExist, TypeError):
        # print 8*'-', 'EXCEPT'
        thread_view = None
        thread_view_last_visit = datetime.datetime.now()

    # print thread_view_last_visit
    # thread_view_last_visit = datetime.datetime(2000,1,1,15,00)

    context.update({
        "thread_view": thread_view,
        "thread_view_last_visit": thread_view_last_visit
    })

    context.update(views_context.get_for_tag_editor())

    thread.visit(request.user)

    # future functions
    template = 'node/%s/detail.html' % thread.thread_type

    return render_into_skin(template, context, request)
Esempio n. 4
0
def edit_thread(request, id):
    """edit question view
    """
    thread = get_object_or_404(models.Thread, id=id)
    main_post = thread._main_post()
    revision = main_post.get_latest_revision()
    revision_form = None

    if not thread.has_edit_perm(request.user):
        return render_forbidden(request)

    is_document = bool(thread.thread_type == const.THREAD_TYPE_DOCUMENT)
    is_document_form = bool("file_data" in (request.FILES.keys() + request.POST.keys()))

    data = {
        "is_document": is_document,
    }

    try:
        ###############################
        # DOCUMENT FILE EDIT
        ###############################

        if is_document:
            if (request.method == "POST") and is_document_form:
                document_form = DocumentFileForm(request.POST, request.FILES)
                if document_form.is_valid():

                    if document_form.cleaned_data["remove"]:
                        document = thread.get_document(with_deleted=True)
                        doc_pk = int(document.pk)
                        document.delete()
                        request.user.log(
                            document,
                            const.LOG_ACTION_DELETE_DOCUMENT,
                            object_force_pk=doc_pk
                        )
                        request.user.message_set.create(message=_('Document has been deleted.'))
                        del document
                    else:
                        document_revision = create_document_revision(
                            thread,
                            document_form.cleaned_data,
                            request
                        )

                        request.user.log(document_revision.document, const.LOG_ACTION_UPDATE_DOCUMENT)
                        request.user.message_set.create(message=_('Document has been successfully saved.'))
                    return HttpResponseRedirect(thread.get_absolute_url())

            else:
                document_form = DocumentFileForm()

            data.update({
                "document_form": document_form,
                "document": thread.get_document(),
            })

        ###############################
        # EDIT THREAD
        ###############################

        request.user.assert_can_edit_thread(thread)
        if request.method == 'POST' and (is_document_form is False):
            if request.POST['select_revision'] == 'true':
                #revert-type edit - user selected previous revision
                revision_form = forms.RevisionForm(
                    main_post,
                    revision,
                    request.POST
                )

                if revision_form.is_valid():
                    # Replace with those from the selected revision
                    rev_id = revision_form.cleaned_data['revision']
                    revision = main_post.revisions.get(revision=rev_id)
                    form = forms.EditQuestionForm(
                        main_post=main_post,
                        user=request.user,
                        revision=revision,
                        node=thread.node,
                        text_required=not is_document
                    )
                else:
                    form = forms.EditQuestionForm(
                        request.POST,
                        main_post=main_post,
                        user=request.user,
                        revision=revision,
                        node=thread.node,
                        text_required=not is_document
                    )

            else:  # new content edit
                # Always check modifications against the latest revision
                form = forms.EditQuestionForm(
                    request.POST,
                    main_post=main_post,
                    revision=revision,
                    user=request.user,
                    node=thread.node,
                    text_required=not is_document
                )

                revision_form = forms.RevisionForm(main_post, revision)
                if form.is_valid():
                    if form.has_changed():
                        _data = {
                            "thread": thread,
                            "title": form.cleaned_data['title'],
                            "body_text": form.cleaned_data['text'],
                            "revision_comment": form.cleaned_data['summary'],
                        }
                        # if request.user.has_perm('openode.change_tag'):
                        if thread.can_retag(request.user):
                            _data.update({
                                "tags": form.cleaned_data['tags']
                            })
                        request.user.edit_thread(**_data)
                        del _data

                    category = form.cleaned_data["category"]
                    allow_external_access = form.cleaned_data["allow_external_access"]
                    do_save = False

                    if is_document and (thread.category != category):
                        thread.category = category
                        do_save = True
                        request.user.log(thread, const.LOG_ACTION_DOCUMENT_MOVE)

                    if is_document and (thread.external_access != allow_external_access):
                        thread.external_access = allow_external_access
                        do_save = True

                    if do_save:
                        thread.save()

                    if thread.thread_type == const.THREAD_TYPE_QUESTION:
                        request.user.log(thread, const.LOG_ACTION_UPDATE_QUESTION)
                        request.user.message_set.create(message=_('Question has been successfully saved.'))
                    if thread.thread_type == const.THREAD_TYPE_DISCUSSION:
                        request.user.log(thread, const.LOG_ACTION_UPDATE_DISCUSSION)
                        request.user.message_set.create(message=_('Discussion has been successfully saved.'))
                    if thread.thread_type == const.THREAD_TYPE_DOCUMENT:
                        request.user.log(thread, const.LOG_ACTION_UPDATE_DOCUMENT)
                        request.user.message_set.create(message=_('Document has been successfully saved.'))
                    return HttpResponseRedirect(thread.get_absolute_url())
        else:
            revision_form = forms.RevisionForm(main_post, revision)
            form = forms.EditQuestionForm(
                main_post=main_post,
                revision=revision,
                user=request.user,
                initial={},
                node=thread.node,
                text_required=not is_document
            )

        data.update({
            'page_class': 'edit-question-page',
            'active_tab': 'questions',
            'main_post': main_post,
            'revision': revision,
            'revision_form': revision_form,
            'form': form,
            'thread_type': thread.thread_type,
            'tag_names': thread.get_tag_names(),
        })
        data.update(context.get_for_tag_editor())
        return render_into_skin('node/%s/edit.html' % thread.thread_type, data, request)

    except exceptions.PermissionDenied, e:
        request.user.message_set.create(message=unicode(e))
        return HttpResponseRedirect(thread.get_absolute_url())