'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()
} # 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()
'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)
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())