本文整理汇总了Python中djangobb_forum.forms.AddPostForm类的典型用法代码示例。如果您正苦于以下问题:Python AddPostForm类的具体用法?Python AddPostForm怎么用?Python AddPostForm使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了AddPostForm类的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: mobile_reply
def mobile_reply(request, post_id):
post = get_object_or_404(Post, id=post_id)
if not request.user.is_authenticated or post.topic.closed and not (request.user.is_superuser or request.user in forum.moderators.all()):
raise Http404
ip = get_client_ip(request)
post_form_kwargs = {
"topic":post.topic,
"user":request.user,
"ip":ip,
'is_ip_banned': request.is_ip_banned,
}
if AddPostForm.FORM_NAME in request.POST:
reply_form = AddPostForm(request.POST, request.FILES, **post_form_kwargs)
if reply_form.is_valid():
post = reply_form.save()
messages.success(request, _("Reply saved."))
return HttpResponseRedirect(post.get_mobile_url())
else:
reply_form = AddPostForm(
initial={
'markup': request.user.forum_profile.markup,
'subscribe': False,
'body':'[quote=' + post.user.username + ']' + post.body + '[/quote]\n',
},
**post_form_kwargs
)
return render(request, 'djangobb_forum/mobile/reply.html', {
'form': reply_form,
'post': post
})
示例2: add_topic
def add_topic(request, forum_id, full=True):
"""
create a new topic, with or without poll
"""
forum = get_object_or_404(Forum, pk=forum_id)
if not forum.category.has_access(request.user) or (forum.moderator_only and not (request.user.is_superuser or request.user in forum.moderators.all())):
return HttpResponseForbidden()
ip = request.META.get('REMOTE_ADDR', None)
post_form_kwargs = {"forum":forum, "user":request.user, "ip":ip, }
if request.method == 'POST':
form = AddPostForm(request.POST, request.FILES, **post_form_kwargs)
if form.is_valid():
all_valid = True
else:
all_valid = False
poll_form = PollForm(request.POST)
create_poll = poll_form.create_poll()
if not create_poll:
# All poll fields are empty: User didn't want to create a poll
# Don't run validation and remove all form error messages
poll_form = PollForm() # create clean form without form errors
elif not poll_form.is_valid():
all_valid = False
if all_valid:
post = form.save()
if create_poll:
poll_form.save(post)
messages.success(request, _("Topic with poll saved."))
else:
messages.success(request, _("Topic saved."))
return HttpResponseRedirect(post.get_absolute_url() if full else post.get_mobile_url())
else:
form = AddPostForm(
initial={
'markup': request.user.forum_profile.markup,
'subscribe': request.user.forum_profile.auto_subscribe,
},
**post_form_kwargs
)
# if creating a new topic and allowed
create_poll_form = forum_id and forum_settings.ALLOW_POLLS
poll_form = PollForm()
context = {
'forum': forum,
'create_poll_form': create_poll_form,
'poll_form': poll_form,
'form': form,
'form_url': request.path,
'back_url': forum.get_absolute_url(),
}
return render(request, 'djangobb_forum/add_topic.html' if full else 'djangobb_forum/mobile/add_topic.html', context)
示例3: add_topic
def add_topic(request, forum_id):
"""
create a new topic, with or without poll
"""
forum = get_object_or_404(Forum, pk=forum_id)
if not forum.category.has_access(request.user):
raise PermissionDenied
ip = request.META.get('REMOTE_ADDR', None)
post_form_kwargs = {"forum":forum, "user":request.user, "ip":ip, }
poll_form = None
if request.method == 'POST':
form = AddPostForm(request.POST, request.FILES, **post_form_kwargs)
if form.is_valid():
all_valid = True
else:
all_valid = False
if forum_settings.ENABLE_POLLS:
poll_form = PollForm(request.POST)
if not poll_form.has_data():
# All poll fields are empty: User didn't want to create a poll
# Don't run validation and remove all form error messages
poll_form = PollForm() # create clean form without form errors
elif not poll_form.is_valid():
all_valid = False
if all_valid:
post = form.save()
if poll_form and poll_form.has_data():
poll_form.save(post)
messages.success(request, _("Topic with poll saved."))
else:
messages.success(request, _("Topic saved."))
return HttpResponseRedirect(post.get_absolute_url())
else:
form = AddPostForm(
initial={
'markup': request.user.forum_profile.markup,
'subscribe': request.user.forum_profile.auto_subscribe,
},
**post_form_kwargs
)
if forum_settings.ENABLE_POLLS and forum_id: # Create a new topic
poll_form = PollForm()
context = {
'forum': forum,
'create_poll_form': poll_form,
'form': form,
'form_url': request.path,
'back_url': forum.get_absolute_url(),
}
return render(request, 'djangobb_forum/add_topic.html', context)
示例4: add_topic
def add_topic(request, forum_id):
"""
create a new topic, with or without poll
"""
forum = get_object_or_404(Forum, pk=forum_id)
if not forum.category.has_access(request.user):
return HttpResponseForbidden()
ip = request.META.get("REMOTE_ADDR", None)
post_form_kwargs = {"forum": forum, "user": request.user, "ip": ip}
if request.method == "POST":
form = AddPostForm(request.POST, request.FILES, **post_form_kwargs)
if form.is_valid():
all_valid = True
else:
all_valid = False
poll_form = PollForm(request.POST)
if not poll_form.has_data():
# All poll fields are empty: User didn't want to create a poll
# Don't run validation and remove all form error messages
poll_form = PollForm() # create clean form without form errors
elif not poll_form.is_valid():
all_valid = False
if all_valid:
post = form.save()
if poll_form.has_data():
poll_form.save(post)
messages.success(request, _("Topic with poll saved."))
else:
messages.success(request, _("Topic saved."))
return HttpResponseRedirect(post.get_absolute_url())
else:
form = AddPostForm(
initial={
"markup": request.user.forum_profile.markup,
"subscribe": request.user.forum_profile.auto_subscribe,
},
**post_form_kwargs
)
if forum_id: # Create a new topic
poll_form = PollForm()
context = {
"forum": forum,
"create_poll_form": poll_form,
"form": form,
"form_url": request.path,
"back_url": forum.get_absolute_url(),
}
return render(request, "djangobb_forum/add_topic.html", context)
示例5: show_topic
def show_topic(request, topic_id, full=True):
"""
* Display a topic
* save a reply
* save a poll vote
TODO: Add reply in lofi mode
"""
post_request = request.method == "POST"
user_is_authenticated = request.user.is_authenticated()
if post_request and not user_is_authenticated:
# Info: only user that are logged in should get forms in the page.
raise PermissionDenied
topic = get_object_or_404(Topic.objects.select_related(), pk=topic_id)
if not topic.forum.category.has_access(request.user):
raise PermissionDenied
Topic.objects.filter(pk=topic.id).update(views=F('views') + 1)
last_post = topic.last_post
if request.user.is_authenticated():
topic.update_read(request.user)
posts = topic.posts.all().select_related()
moderator = request.user.is_superuser or request.user in topic.forum.moderators.all()
if user_is_authenticated and request.user in topic.subscribers.all():
subscribed = True
else:
subscribed = False
# reply form
reply_form = None
form_url = None
back_url = None
if user_is_authenticated and not topic.closed:
form_url = request.path + "#reply" # if form validation failed: browser should scroll down to reply form ;)
back_url = request.path
ip = request.META.get('REMOTE_ADDR', None)
post_form_kwargs = {"topic":topic, "user":request.user, "ip":ip}
if post_request and AddPostForm.FORM_NAME in request.POST:
reply_form = AddPostForm(request.POST, request.FILES, **post_form_kwargs)
if reply_form.is_valid():
post = reply_form.save()
messages.success(request, _("Your reply saved."))
return HttpResponseRedirect(post.get_absolute_url())
else:
reply_form = AddPostForm(
initial={
'markup': request.user.forum_profile.markup,
'subscribe': request.user.forum_profile.auto_subscribe,
},
**post_form_kwargs
)
# handle poll, if exists
poll_form = None
polls = topic.poll_set.all()
if not polls:
poll = None
else:
poll = polls[0]
if user_is_authenticated: # Only logged in users can vote
poll.deactivate_if_expired()
has_voted = request.user in poll.users.all()
if not post_request or not VotePollForm.FORM_NAME in request.POST:
# It's not a POST request or: The reply form was send and not a poll vote
if poll.active and not has_voted:
poll_form = VotePollForm(poll)
else:
if not poll.active:
messages.error(request, _("This poll is not active!"))
return HttpResponseRedirect(topic.get_absolute_url())
elif has_voted:
messages.error(request, _("You have already vote to this poll in the past!"))
return HttpResponseRedirect(topic.get_absolute_url())
poll_form = VotePollForm(poll, request.POST)
if poll_form.is_valid():
ids = poll_form.cleaned_data["choice"]
queryset = poll.choices.filter(id__in=ids)
queryset.update(votes=F('votes') + 1)
poll.users.add(request.user) # save that this user has vote
messages.success(request, _("Your votes are saved."))
return HttpResponseRedirect(topic.get_absolute_url())
highlight_word = request.GET.get('hl', '')
if full:
return render(request, 'djangobb_forum/topic.html', {'categories': Category.objects.all(),
'topic': topic,
'last_post': last_post,
'form_url': form_url,
'reply_form': reply_form,
'back_url': back_url,
'moderator': moderator,
'subscribed': subscribed,
'posts': posts,
'highlight_word': highlight_word,
'poll': poll,
'poll_form': poll_form,
#.........这里部分代码省略.........
示例6: show_topic
def show_topic(request, topic_id, full=True):
"""
* Display a topic
* save a reply
* save a poll vote
"""
post_request = request.method == "POST"
user_is_authenticated = request.user.is_authenticated()
if post_request and not user_is_authenticated:
# Info: only user that are logged in should get forms in the page.
return HttpResponseForbidden()
topic = get_object_or_404(Topic.objects.select_related(), pk=topic_id)
if not topic.forum.category.has_access(request.user):
return HttpResponseForbidden()
Topic.objects.filter(pk=topic.id).update(views=F('views') + 1)
last_post = topic.last_post
if request.user.is_authenticated():
topic.update_read(request.user)
# without specifying, following query wouldn't select related properly
posts = topic.posts.select_related('user__userprofile',
'user__forum_profile',
'updated_by', 'user').prefetch_related('user__groups').all()
edit_start = timezone.now() - timedelta(minutes=1)
edit_end = timezone.now()
editable = posts.filter(created__range=(edit_start, edit_end)).filter(user_id=request.user.id)
can_edit = request.user.has_perm('djangobb_forum.change_post')
try:
page_url_parameter = int(request.GET.get('page') or 1)
except:
page_url_parameter = 1
first_post_number = int(forum_settings.TOPIC_PAGE_SIZE) * (page_url_parameter - 1)
can_close = can_close_topic(request.user, topic)
moderator = request.user.is_superuser or request.user in topic.forum.moderators.all()
if user_is_authenticated and request.user in topic.subscribers.all():
subscribed = True
else:
subscribed = False
# reply form
reply_form = None
form_url = None
back_url = None
if user_is_authenticated and (not topic.closed or moderator):
form_url = request.path + '?' + request.META['QUERY_STRING'] + '#reply' # if form validation failed: browser should scroll down to reply form ;)
back_url = request.path
ip = get_client_ip(request)
post_form_kwargs = {
"topic":topic,
"user":request.user,
"ip":ip,
'is_ip_banned': request.is_ip_banned,
}
if post_request and AddPostForm.FORM_NAME in request.POST:
reply_form = AddPostForm(request.POST, request.FILES, **post_form_kwargs)
if reply_form.is_valid():
post = reply_form.save()
messages.success(request, _("Reply saved."))
return HttpResponseRedirect(post.get_absolute_url() if full else post.get_mobile_url())
else:
reply_form = AddPostForm(
initial={
'markup': request.user.forum_profile.markup,
'subscribe': False,
},
**post_form_kwargs
)
group_titles = {}
for post in posts:
if post.user.is_superuser:
group_titles[post.user] = "Scratch Team"
else:
temp_names = [group.name for group in post.user.groups.all()]
if "Forum Moderators" in temp_names:
group_titles[post.user] = "Forum Moderator"
elif "Scratchers" in temp_names:
group_titles[post.user] = "Scratcher"
elif "New Scratchers" in temp_names:
group_titles[post.user] = "New to Scratch"
else:
group_titles[post.user] = "Ungrouped"
# handle poll, if exists
poll_form = None
polls = topic.poll_set.all()
if not polls:
poll = None
else:
poll = polls[0]
if user_is_authenticated: # Only logged in users can vote
poll.auto_deactivate()
has_voted = request.user in poll.users.all()
#.........这里部分代码省略.........