def user(request, username, section='essentials', action=None, template='djangobb_forum/profile/profile_essentials.html', form_class=EssentialsProfileForm): user = get_object_or_404(User, username=username) if request.user.is_authenticated and user == request.user or request.user.is_superuser: form = build_form(form_class, request, instance=user.forum_profile, extra_args={'request': request}) if request.method == 'POST' and form.is_valid(): form.save() profile_url = reverse('djangobb:forum_profile_%s' % section, args=[user.username]) messages.success(request, _("User profile saved.")) return HttpResponseRedirect(profile_url) return render(request, template, { 'active_menu': section, 'profile': user, 'form': form, }) else: template = 'djangobb_forum/user.html' topic_count = Topic.objects.filter(user__id=user.id).count() if user.forum_profile.post_count < forum_settings.POST_USER_SEARCH and not request.user.is_authenticated: messages.error(request, _("Please sign in.")) return HttpResponseRedirect(settings.LOGIN_URL + '?next=%s' % request.path) return render(request, template, { 'profile': user, 'topic_count': topic_count, })
def misc(request): if 'action' in request.GET: action = request.GET['action'] if action =='markread': user = request.user PostTracking.objects.filter(user__id=user.id).update(last_read=datetime.now(), topics=None) return HttpResponseRedirect(reverse('djangobb:index')) elif action == 'report': if request.GET.get('post_id', ''): post_id = request.GET['post_id'] post = get_object_or_404(Post, id=post_id) form = build_form(ReportForm, request, reported_by=request.user, post=post_id) if request.method == 'POST' and form.is_valid(): form.save() return HttpResponseRedirect(post.get_absolute_url()) return {'form':form} elif 'submit' in request.POST and 'mail_to' in request.GET: form = MailToForm(request.POST) if form.is_valid(): user = get_object_or_404(User, username=request.GET['mail_to']) subject = form.cleaned_data['subject'] body = form.cleaned_data['body'] + '\n %s %s [%s]' % (Site.objects.get_current().domain, request.user.username, request.user.email) # user.email_user(subject, body, request.user.email) ###sending the email with postmark data = {'sender': request.user.get_full_name(), 'recipient': user.get_full_name(), 'subject': form.cleaned_data['subject'], 'body': form.cleaned_data['body'], 'email': user.email, 'mydomain': Site.objects.get(id=1).domain, 'encryptedUsername': urlsafe_b64encode(str(user.id)), } if user.get_profile().idioma == u'es': subject = u'Tienes un mensaje nuevo' template = 'foro-email_es.html' else: subject = u'You have a new message' template = 'foro-email_en.html' if user.get_profile().accept_email_updates: sendHtmlMail("*****@*****.**", subject,template, data,user.email,form.cleaned_data['body'], 'forum/email-templates/') ################################# #aumentando en 1 el puntaje del usuario que envio el mail request.user.get_profile().add_points(1) ########################## return HttpResponseRedirect(reverse('djangobb:index')) elif 'mail_to' in request.GET: mailto = get_object_or_404(User, username=request.GET['mail_to']) form = MailToForm() return {'form':form, 'mailto': mailto, 'TEMPLATE': 'forum/mail_to.html' }
def misc(request): if 'action' in request.GET: action = request.GET['action'] if action =='markread': user = request.user PostTracking.objects.filter(user__id=user.id).update(last_read=datetime.now(), topics=None) return HttpResponseRedirect(reverse('djangobb:index')) elif action == 'report': if request.GET.get('post_id', ''): post_id = request.GET['post_id'] post = get_object_or_404(Post, id=post_id) form = build_form(ReportForm, request, reported_by=request.user, post=post_id) if request.method == 'POST' and form.is_valid(): form.save() return HttpResponseRedirect(post.get_absolute_url()) return render(request, 'djangobb_forum/report.html', {'form':form}) elif 'submit' in request.POST and 'mail_to' in request.GET: form = MailToForm(request.POST) if form.is_valid(): user = get_object_or_404(User, username=request.GET['mail_to']) subject = form.cleaned_data['subject'] body = form.cleaned_data['body'] + '\n %s %s [%s]' % (Site.objects.get_current().domain, request.user.username, request.user.email) user.email_user(subject, body, request.user.email) return HttpResponseRedirect(reverse('djangobb:index')) elif 'mail_to' in request.GET: mailto = get_object_or_404(User, username=request.GET['mail_to']) form = MailToForm() return (request, 'djangobb_forum/mail_to.html', {'form':form, 'mailto': mailto, })
def edit_post(request, post_id): from djangobb_forum.templatetags.forum_extras import forum_editable_by post = get_object_or_404(Post, pk=post_id) topic = post.topic forum = post.topic.forum if not forum_editable_by(post, request.user): messages.error(request, _("No permissions to edit this post.")) return HttpResponseRedirect(post.get_absolute_url()) form = build_form(EditPostForm, request, topic=topic, instance=post) if form.is_valid(): if request.user.is_superuser or request.user in user.groups.filter( name='topic_moderator').exists(): if not post.is_moderated: post.is_moderated = True LOG.info( "{0} edited & moderated the Post '{1}' from '{2}:{3}'". format(request.user.username, post.body, forum.name, topic.name)) post = form.save(commit=False) post.updated_by = request.user post.save() messages.success(request, _("Post updated.")) return HttpResponseRedirect(post.get_absolute_url()) return render(request, 'djangobb_forum/edit_post.html', { 'form': form, 'post': post, })
def upload_avatar(request, username, template=None, form_class=None): user = get_object_or_404(User, username=username) if request.user.is_authenticated( ) and user == request.user or request.user.is_superuser: form = build_form(form_class, request, instance=user.forum_profile) if request.method == 'POST' and form.is_valid(): form.save() return HttpResponseRedirect( reverse('djangobb:forum_profile', args=[user.username])) return render( request, template, { 'form': form, 'avatar_width': forum_settings.AVATAR_WIDTH, 'avatar_height': forum_settings.AVATAR_HEIGHT, }) else: topic_count = Topic.objects.filter(deleted=False, user__id=user.id).count() if user.forum_profile.post_count < forum_settings.POST_USER_SEARCH and not request.user.is_authenticated( ): return HttpResponseRedirect( reverse('user_signin') + '?next=%s' % request.path) return render(request, template, { 'profile': user, 'topic_count': topic_count, })
def misc(request): if "action" in request.GET: action = request.GET["action"] if action == "markread": user = request.user PostTracking.objects.filter(user__id=user.id).update(last_read=datetime.now(), topics=None) return HttpResponseRedirect(reverse("djangobb:index")) elif action == "report": if request.GET.get("post_id", ""): post_id = request.GET["post_id"] post = get_object_or_404(Post, id=post_id) form = build_form(ReportForm, request, reported_by=request.user, post=post_id) if request.method == "POST" and form.is_valid(): form.save() return HttpResponseRedirect(post.get_absolute_url()) return render(request, "djangobb_forum/report.html", {"form": form}) elif "submit" in request.POST and "mail_to" in request.GET: form = MailToForm(request.POST) if form.is_valid(): user = get_object_or_404(User, username=request.GET["mail_to"]) subject = form.cleaned_data["subject"] body = form.cleaned_data["body"] + "\n %s %s [%s]" % ( Site.objects.get_current().domain, request.user.username, request.user.email, ) user.email_user(subject, body, request.user.email) return HttpResponseRedirect(reverse("djangobb:index")) elif "mail_to" in request.GET: mailto = get_object_or_404(User, username=request.GET["mail_to"]) form = MailToForm() return render(request, "djangobb_forum/mail_to.html", {"form": form, "mailto": mailto})
def user(request, username, section='essentials', action=None, template='djangobb_forum/profile/profile_essentials.html', form_class=EssentialsProfileForm): user = get_object_or_404(User, username=username) if request.user.is_authenticated( ) and user == request.user or request.user.is_superuser: profile_url = reverse('djangobb:forum_profile_%s' % section, args=[user.username]) form = build_form(form_class, request, instance=user.forum_profile, extra_args={'request': request}) if request.method == 'POST' and form.is_valid(): h.flash_success(request, 'Settings saved!') form.save() return HttpResponseRedirect(profile_url) return render(request, template, { 'active_menu': section, 'profile': user, 'form': form, }) else: return HttpResponseRedirect('/player/%s' % username)
def user(request, username, section='essentials', action=None, template='djangobb_forum/profile/profile_essentials.html', form_class=EssentialsProfileForm): user = get_object_or_404(User, username=username) if request.user.is_authenticated(): # looking at your own, you see the options that you can change if request.user == user: profile_url = reverse('djangobb:forum_profile_%s' % section, args=[user.username]) form = build_form(form_class, request, instance=user.forum_profile, extra_args={'request': request}) if request.method == 'POST' and form.is_valid(): form.save() messages.success(request, _("User profile saved.")) return HttpResponseRedirect(profile_url) return render(request, template, {'active_menu': section, 'profile': user, 'form': form, }) # admin looking at someone's sees more details elif request.user.is_staff: template = 'djangobb_forum/user.html' topic_count = Topic.objects.filter(user__id=user.id).count() if user.forum_profile.post_count < forum_settings.POST_USER_SEARCH and not request.user.is_authenticated(): messages.error(request, _("Please sign in.")) return HttpResponseRedirect(reverse('user_signin') + '?next=%s' % request.path) return render(request, template, {'profile': user, 'topic_count': topic_count, }) # anyone else raise Http404
def edit_post(request, post_id): from djangobb_forum.templatetags.forum_extras import forum_editable_by post = get_object_or_404(Post, pk=post_id) topic = post.topic if not forum_editable_by(post, request.user): messages.error(request, _("You don't have permission to edit this post.")) return HttpResponseRedirect(post.get_absolute_url()) moderator = request.user.is_superuser or request.user in topic.forum.moderators.all( ) form = build_form(EditPostForm, request, topic=topic, instance=post) if form.is_valid(): post = form.save(commit=False) if not form.cleaned_data['silent_edit']: post.updated_by = request.user post.updated = timezone.now() post.save() messages.success(request, _("Post updated.")) return HttpResponseRedirect(post.get_absolute_url()) return render( request, 'djangobb_forum/edit_post.html', { 'form': form, 'post': post, 'moderator': moderator, 'simple_user_agent': simple_user_agent(request) })
def add_post(request, forum_id, topic_id): from standardweb.lib import api if not request.user.is_active: raise PermissionDenied forum = None topic = None posts = None if forum_id: forum = get_object_or_404(Forum, pk=forum_id) if not forum.category.has_access(request.user): return HttpResponseForbidden() if not request.user.is_superuser and forum.locked: return HttpResponseForbidden() elif topic_id: topic = get_object_or_404(Topic, pk=topic_id, deleted=False) posts = topic.posts.filter(deleted=False).select_related() if not topic.forum.category.has_access(request.user): return HttpResponseForbidden() if topic and topic.closed: return HttpResponseRedirect(topic.get_absolute_url()) ip = request.META.get('REMOTE_ADDR', None) form = build_form(AddPostForm, request, topic=topic, forum=forum, user=request.user, ip=ip, initial={'markup': request.user.forum_profile.markup}) if 'post_id' in request.GET: post_id = request.GET['post_id'] post = get_object_or_404(Post, pk=post_id) form.fields['body'].initial = u"[quote=%s]%s[/quote]" % (post.user, post.body) if form.is_valid(): post = form.save() api.forum_post(request.user.username, post.topic.forum.name, post.topic.name, post.get_absolute_url()) return HttpResponseRedirect(post.get_absolute_url()) return render(request, 'djangobb_forum/add_post.html', { 'form': form, 'posts': posts, 'topic': topic, 'forum': forum, })
def misc(request): if 'action' in request.GET: action = request.GET['action'] if action == 'markread': user = request.user PostTracking.objects.filter(user__id=user.id).update( last_read=timezone.now(), topics=None) messages.info(request, _("All topics marked as read.")) return HttpResponseRedirect(reverse('djangobb:index')) elif action == 'report': if request.GET.get('post_id', ''): post_id = request.GET['post_id'] post = get_object_or_404(Post, id=post_id) form = build_form(ReportForm, request, reported_by=request.user, post=post_id) if request.method == 'POST' and form.is_valid(): form.save() messages.info(request, _("Post reported.")) return HttpResponseRedirect(post.get_absolute_url()) return render(request, 'djangobb_forum/report.html', {'form': form}) elif 'submit' in request.POST and 'mail_to' in request.GET: if not forum_settings.USER_TO_USER_EMAIL and not request.user.is_superuser: raise PermissionDenied form = MailToForm(request.POST) if form.is_valid(): user = get_object_or_404(User, username=request.GET['mail_to']) subject = form.cleaned_data['subject'] body = form.cleaned_data['body'] + '\n %s %s [%s]' % ( Site.objects.get_current().domain, request.user.username, request.user.email) try: user.email_user(subject, body, request.user.email) messages.success(request, _("Email send.")) except Exception: messages.error(request, _("Email could not be sent.")) return HttpResponseRedirect(reverse('djangobb:index')) elif 'mail_to' in request.GET: if not forum_settings.USER_TO_USER_EMAIL and not request.user.is_superuser: raise PermissionDenied mailto = get_object_or_404(User, username=request.GET['mail_to']) form = MailToForm() return render(request, 'djangobb_forum/mail_to.html', { 'form': form, 'mailto': mailto })
def add_post(request, forum_id, topic_id): from standardweb.lib import api if not request.user.is_active: raise PermissionDenied forum = None topic = None posts = None if forum_id: forum = get_object_or_404(Forum, pk=forum_id) if not forum.category.has_access(request.user): return HttpResponseForbidden() if not request.user.is_superuser and forum.locked: return HttpResponseForbidden() elif topic_id: topic = get_object_or_404(Topic, pk=topic_id, deleted=False) posts = topic.posts.filter(deleted=False).select_related() if not topic.forum.category.has_access(request.user): return HttpResponseForbidden() if topic and topic.closed: return HttpResponseRedirect(topic.get_absolute_url()) ip = request.META.get('REMOTE_ADDR', None) form = build_form(AddPostForm, request, topic=topic, forum=forum, user=request.user, ip=ip, initial={'markup': request.user.forum_profile.markup}) if 'post_id' in request.GET: post_id = request.GET['post_id'] post = get_object_or_404(Post, pk=post_id) form.fields['body'].initial = u"[quote=%s]%s[/quote]" % (post.user, post.body) if form.is_valid(): post = form.save(); api.forum_post(request.user.username, post.topic.forum.name, post.topic.name, post.get_absolute_url()) return HttpResponseRedirect(post.get_absolute_url()) return render(request, 'djangobb_forum/add_post.html', {'form': form, 'posts': posts, 'topic': topic, 'forum': forum, })
def settings(request, username): user = get_object_or_404(User, username=username) if request.user.is_authenticated() and (user == request.user or request.user.is_staff or request.user.has_perm('djangobb_forum.change_report')): form = build_form(PersonalityProfileForm, request, instance=user.forum_profile, extra_args={'request': request}) if request.method == 'POST' and form.is_valid(): form.save() messages.success(request, _("Profile saved.")) return render(request, 'djangobb_forum/profile/profile_personality.html', { 'profile': user, 'form': form, }) # anyone else raise Http404
def edit_post(request, post_id): from djangobb_forum.templatetags.forum_extras import forum_editable_by post = get_object_or_404(Post, pk=post_id) topic = post.topic if not forum_editable_by(post, request.user): return HttpResponseRedirect(post.get_absolute_url()) form = build_form(EditPostForm, request, topic=topic, instance=post) if form.is_valid(): post = form.save(commit=False) post.updated_by = request.user post.save() return HttpResponseRedirect(post.get_absolute_url()) return render(request, "djangobb_forum/edit_post.html", {"form": form, "post": post})
def user(request, username, section='essentials', action=None, template='djangobb_forum/profile/profile_essentials.html', form_class=EssentialsProfileForm): user = get_object_or_404(User, username=username) if request.user.is_authenticated() and user == request.user or request.user.is_superuser: profile_url = reverse('djangobb:forum_profile_%s' % section, args=[user.username]) form = build_form(form_class, request, instance=user.forum_profile, extra_args={'request': request}) if request.method == 'POST' and form.is_valid(): h.flash_success(request, 'Settings saved!') form.save() return HttpResponseRedirect(profile_url) return render(request, template, {'active_menu': section, 'profile': user, 'form': form, }) else: return HttpResponseRedirect('/player/%s' % username)
def reputation(request, username): user = get_object_or_404(User, username=username) form = build_form(ReputationForm, request, from_user=request.user, to_user=user) if 'action' in request.GET: if request.user == user: return HttpResponseForbidden( u'You can not change the reputation of yourself') if 'post_id' in request.GET: post_id = request.GET['post_id'] form.fields['post'].initial = post_id if request.GET['action'] == 'plus': form.fields['sign'].initial = 1 elif request.GET['action'] == 'minus': form.fields['sign'].initial = -1 return render(request, 'djangobb_forum/reputation_form.html', {'form': form}) else: raise Http404 elif request.method == 'POST': if 'del_reputation' in request.POST and request.user.is_superuser: reputation_list = request.POST.getlist('reputation_id') for reputation_id in reputation_list: reputation = get_object_or_404(Reputation, pk=reputation_id) reputation.delete() messages.success(request, _("Reputation deleted.")) return HttpResponseRedirect(reverse('djangobb:index')) elif form.is_valid(): form.save() post_id = request.POST['post'] post = get_object_or_404(Post, id=post_id) messages.success(request, _("Reputation saved.")) return HttpResponseRedirect(post.get_absolute_url()) else: return render(request, 'djangobb_forum/reputation_form.html', {'form': form}) else: reputations = Reputation.objects.filter( to_user__id=user.id).order_by('-time').select_related() return render(request, 'djangobb_forum/reputation.html', { 'reputations': reputations, 'profile': user.forum_profile, })
def misc(request): if 'action' in request.GET: action = request.GET['action'] if action == 'markread': user = request.user PostTracking.objects.filter(user__id=user.id).update(last_read=timezone.now(), topics=None) messages.info(request, _("All topics marked as read.")) return HttpResponseRedirect(reverse('djangobb:index')) elif action == 'report': if request.GET.get('post_id', ''): post_id = request.GET['post_id'] post = get_object_or_404(Post, id=post_id) form = build_form(ReportForm, request, reported_by=request.user, post=post_id) if request.method == 'POST' and form.is_valid(): form.save() messages.info(request, _("Post reported.")) return HttpResponseRedirect(post.get_absolute_url()) return render(request, 'djangobb_forum/report.html', {'form':form}) elif 'submit' in request.POST and 'mail_to' in request.GET: if not forum_settings.USER_TO_USER_EMAIL and not request.user.is_superuser: raise PermissionDenied form = MailToForm(request.POST) if form.is_valid(): user = get_object_or_404(User, username=request.GET['mail_to']) subject = form.cleaned_data['subject'] body = form.cleaned_data['body'] + '\n %s %s [%s]' % (Site.objects.get_current().domain, request.user.username, request.user.email) try: user.email_user(subject, body, request.user.email) messages.success(request, _("Email send.")) except Exception: messages.error(request, _("Email could not be sent.")) return HttpResponseRedirect(reverse('djangobb:index')) elif 'mail_to' in request.GET: if not forum_settings.USER_TO_USER_EMAIL and not request.user.is_superuser: raise PermissionDenied mailto = get_object_or_404(User, username=request.GET['mail_to']) form = MailToForm() return render(request, 'djangobb_forum/mail_to.html', {'form':form, 'mailto': mailto} )
def edit_post(request, post_id): from djangobb_forum.templatetags.forum_extras import forum_editable_by post = get_object_or_404(Post, pk=post_id) topic = post.topic if not forum_editable_by(post, request.user): return HttpResponseRedirect(post.get_absolute_url()) form = build_form(EditPostForm, request, topic=topic, instance=post) if form.is_valid(): post = form.save(commit=False) post.updated_by = request.user post.save() return HttpResponseRedirect(post.get_absolute_url()) return {'form': form, 'post': post, }
def upload_avatar(request, username, template=None, form_class=None): user = get_object_or_404(User, username=username) if request.user.is_authenticated() and user == request.user or request.user.is_superuser: form = build_form(form_class, request, instance=user.forum_profile) if request.method == "POST" and form.is_valid(): form.save() return HttpResponseRedirect(reverse("djangobb:forum_profile", args=[user.username])) return render( request, template, {"form": form, "avatar_width": forum_settings.AVATAR_WIDTH, "avatar_height": forum_settings.AVATAR_HEIGHT}, ) else: topic_count = Topic.objects.filter(user__id=user.id).count() if user.forum_profile.post_count < forum_settings.POST_USER_SEARCH and not request.user.is_authenticated(): return HttpResponseRedirect(reverse("user_signin") + "?next=%s" % request.path) return render(request, template, {"profile": user, "topic_count": topic_count})
def upload_avatar(request, username, template=None, form_class=None): user = get_object_or_404(User, username=username) if request.user.is_authenticated() and user == request.user or request.user.is_superuser: form = build_form(form_class, request, instance=user.forum_profile) if request.method == 'POST' and form.is_valid(): form.save() return HttpResponseRedirect(reverse('djangobb:forum_profile', args=[user.username])) return render(request, template, {'form': form, 'avatar_width': forum_settings.AVATAR_WIDTH, 'avatar_height': forum_settings.AVATAR_HEIGHT, }) else: topic_count = Topic.objects.filter(user__id=user.id).count() if user.forum_profile.post_count < forum_settings.POST_USER_SEARCH and not request.user.is_authenticated(): return HttpResponseRedirect(reverse('user_signin') + '?next=%s' % request.path) return render(request, template, {'profile': user, 'topic_count': topic_count, })
def reputation(request, username): user = get_object_or_404(User, username=username) form = build_form(ReputationForm, request, from_user=request.user, to_user=user) if 'action' in request.GET: if request.user == user: return HttpResponseForbidden(u'You can not change the reputation of yourself') if 'post_id' in request.GET: sign = 0 post_id = request.GET['post_id'] form.fields['post'].initial = post_id print form.fields['post'] if request.GET['action'] == 'plus': form.fields['sign'].initial = 1 elif request.GET['action'] == 'minus': form.fields['sign'].initial = -1 return {'form': form, 'TEMPLATE': 'forum/reputation_form.html' } else: raise Http404 elif request.method == 'POST': if 'del_reputation' in request.POST and request.user.is_superuser: reputation_list = request.POST.getlist('reputation_id') for reputation_id in reputation_list: reputation = get_object_or_404(Reputation, pk=reputation_id) reputation.delete() return HttpResponseRedirect(reverse('djangobb:index')) elif form.is_valid(): form.save() post_id = request.POST['post'] post = get_object_or_404(Post, id=post_id) return HttpResponseRedirect(post.get_absolute_url()) else: return {'form': form, 'TEMPLATE': 'forum/reputation_form.html' } else: reputations = Reputation.objects.filter(to_user=user).order_by('-time').select_related() return {'reputations': reputations, 'profile': user.forum_profile, }
def add_post(request, forum_id, topic_id): forum = None topic = None posts = None if forum_id: forum = get_object_or_404(Forum, pk=forum_id) if not forum.category.has_access(request.user): return HttpResponseForbidden() elif topic_id: topic = get_object_or_404(Topic, pk=topic_id) posts = topic.posts.all().select_related() if not topic.forum.category.has_access(request.user): return HttpResponseForbidden() if topic and topic.closed: messages.error(request, _("This topic is closed.")) return HttpResponseRedirect(topic.get_absolute_url()) ip = request.META.get('REMOTE_ADDR', None) form = build_form(AddPostForm, request, topic=topic, forum=forum, user=request.user, ip=ip, initial={'markup': request.user.forum_profile.markup}) if 'post_id' in request.GET: post_id = request.GET['post_id'] post = get_object_or_404(Post, pk=post_id) form.fields['body'].initial = u"[quote=%s]%s[/quote]" % (post.user, post.body) if form.is_valid(): post = form.save() messages.success(request, _("Topic saved.")) return HttpResponseRedirect(post.get_absolute_url()) return render(request, 'djangobb_forum/add_post.html', { 'form': form, 'posts': posts, 'topic': topic, 'forum': forum, })
def edit_post(request, post_id): from djangobb_forum.templatetags.forum_extras import forum_editable_by post = get_object_or_404(Post, pk=post_id) topic = post.topic if not forum_editable_by(post, request.user): messages.error(request, _("No permissions to edit this post.")) return HttpResponseRedirect(post.get_absolute_url()) form = build_form(EditPostForm, request, topic=topic, instance=post) if form.is_valid(): post = form.save(commit=False) post.updated_by = request.user post.save() messages.success(request, _("Post updated.")) return HttpResponseRedirect(post.get_absolute_url()) return render(request, 'djangobb_forum/edit_post.html', {'form': form, 'post': post, })
def user(request, username, section='essentials', action=None, template='djangobb_forum/profile/profile_essentials.html', form_class=EssentialsProfileForm): user = get_object_or_404(User, username=username) if request.user.is_authenticated() and user == request.user or request.user.is_superuser: profile_url = reverse('djangobb:forum_profile_%s' % section, args=[user.username]) form = build_form(form_class, request, instance=user.forum_profile, extra_args={'request': request}) if request.method == 'POST' and form.is_valid(): form.save() return HttpResponseRedirect(profile_url) return render(request, template, {'active_menu': section, 'profile': user, 'form': form, }) else: topic_count = Topic.objects.filter(user__id=user.id).count() if user.forum_profile.post_count < forum_settings.POST_USER_SEARCH and not request.user.is_authenticated(): return HttpResponseRedirect(reverse('user_signin') + '?next=%s' % request.path) return render(request, template, {'profile': user, 'topic_count': topic_count, })
def settings(request, username): user = get_object_or_404(User, username=username) if request.user.is_authenticated() and ( user == request.user or request.user.is_staff or request.user.has_perm('djangobb_forum.change_report')): form = build_form(PersonalityProfileForm, request, instance=user.forum_profile, extra_args={'request': request}) if request.method == 'POST' and form.is_valid(): form.save() messages.success(request, _("Profile saved.")) return render(request, 'djangobb_forum/profile/profile_personality.html', { 'profile': user, 'form': form, }) # anyone else raise Http404
def user(request, username, section='essentials', action=None, template='djangobb_forum/profile/profile_essentials.html', form_class=EssentialsProfileForm): user = get_object_or_404(User, username=username) if request.user.is_authenticated(): # looking at your own, you see the options that you can change if request.user == user: profile_url = reverse('djangobb:forum_profile_%s' % section, args=[user.username]) form = build_form(form_class, request, instance=user.forum_profile, extra_args={'request': request}) if request.method == 'POST' and form.is_valid(): form.save() messages.success(request, _("User profile saved.")) return HttpResponseRedirect(profile_url) return render(request, template, { 'active_menu': section, 'profile': user, 'form': form, }) # admin looking at someone's sees more details elif request.user.is_staff: template = 'djangobb_forum/user.html' topic_count = Topic.objects.filter(user__id=user.id).count() if user.forum_profile.post_count < forum_settings.POST_USER_SEARCH and not request.user.is_authenticated( ): messages.error(request, _("Please sign in.")) return HttpResponseRedirect( reverse('user_signin') + '?next=%s' % request.path) return render(request, template, { 'profile': user, 'topic_count': topic_count, }) # anyone else raise Http404
def add_post(request, forum_id, topic_id): forum = None topic = None posts = None if forum_id: forum = get_object_or_404(Forum, pk=forum_id) if not forum.category.language == request.LANGUAGE_CODE: return HttpResponseRedirect(reverse('djangobb:index')) if not forum.category.has_access(request.user): return HttpResponseForbidden() elif topic_id: topic = get_object_or_404(Topic, pk=topic_id) if not topic.forum.category.language == request.LANGUAGE_CODE: return HttpResponseRedirect(reverse('djangobb:index')) posts = topic.posts.all().select_related() if not topic.forum.category.has_access(request.user): return HttpResponseForbidden() if topic and topic.closed: return HttpResponseRedirect(topic.get_absolute_url()) ip = request.META.get('REMOTE_ADDR', None) form = build_form(AddPostForm, request, topic=topic, forum=forum, user=request.user, ip=ip, initial={'markup': request.user.forum_profile.markup}) if 'post_id' in request.GET: post_id = request.GET['post_id'] post = get_object_or_404(Post, pk=post_id) form.fields['body'].initial = u"[quote=%s]%s[/quote]" % (post.user, post.body) if form.is_valid(): post = form.save(); return HttpResponseRedirect(post.get_absolute_url()) return render(request, 'djangobb_forum/add_post.html', {'form': form, 'posts': posts, 'topic': topic, 'forum': forum, })
def reputation(request, username): user = get_object_or_404(User, username=username) form = build_form(ReputationForm, request, from_user=request.user, to_user=user) if "action" in request.GET: if request.user == user: return HttpResponseForbidden(u"You can not change the reputation of yourself") if "post_id" in request.GET: post_id = request.GET["post_id"] form.fields["post"].initial = post_id if request.GET["action"] == "plus": form.fields["sign"].initial = 1 elif request.GET["action"] == "minus": form.fields["sign"].initial = -1 return render(request, "djangobb_forum/reputation_form.html", {"form": form}) else: raise Http404 elif request.method == "POST": if "del_reputation" in request.POST and request.user.is_superuser: reputation_list = request.POST.getlist("reputation_id") for reputation_id in reputation_list: reputation = get_object_or_404(Reputation, pk=reputation_id) reputation.delete() messages.success(request, _("Reputation deleted.")) return HttpResponseRedirect(reverse("djangobb:index")) elif form.is_valid(): form.save() post_id = request.POST["post"] post = get_object_or_404(Post, id=post_id) messages.success(request, _("Reputation saved.")) return HttpResponseRedirect(post.get_absolute_url()) else: return render(request, "djangobb_forum/reputation_form.html", {"form": form}) else: reputations = Reputation.objects.filter(to_user__id=user.id).order_by("-time").select_related() return render( request, "djangobb_forum/reputation.html", {"reputations": reputations, "profile": user.forum_profile} )
def upload_avatar(request, username, template=None, form_class=None): user = get_object_or_404(User, username=username) if request.user.is_authenticated( ) and user == request.user or request.user.is_superuser: form = build_form(form_class, request, instance=user.forum_profile) if request.method == 'POST': if form.is_valid(): try: form.save() except IOError as errno_strerror: print("I/O error(%s): %s" % (errno_strerror[0], errno_strerror[1])) messages.warning(request, _("Your avatar did not Upload.")) except ValueError: print("Could not convert data to an integer.") messages.warning(request, _("Your avatar did not Upload.")) except: print("Unexpected error:", sys.exc_info()[0]) messages.warning(request, _("Your avatar did not Upload.")) raise messages.success(request, _("Your avatar Upload.")) return HttpResponseRedirect( reverse('djangobb:forum_profile', args=[user.username])) return render( request, template, { 'form': form, 'avatar_width': settings.DJANGOBB_AVATAR_WIDTH, 'avatar_height': settings.DJANGOBB_AVATAR_HEIGHT, }) else: topic_count = Topic.objects.filter(user__id=user.id).count() if user.forum_profile.post_count < forum_settings.POST_USER_SEARCH and not request.user.is_authenticated( ): messages.error(request, _("Please sign in.")) return HttpResponseRedirect(settings.LOGIN_URL + '?next=%s' % request.path) return render(request, template, { 'profile': user, 'topic_count': topic_count, })
def add_post(request, forum_id, topic_id): forum = None topic = None posts = None if forum_id: forum = get_object_or_404(Forum, pk=forum_id) if not forum.category.has_access(request.user): return HttpResponseForbidden() elif topic_id: topic = get_object_or_404(Topic, pk=topic_id) posts = topic.posts.all().select_related() if not topic.forum.category.has_access(request.user): return HttpResponseForbidden() if topic and topic.closed: return HttpResponseRedirect(topic.get_absolute_url()) ip = request.META.get("REMOTE_ADDR", None) form = build_form( AddPostForm, request, topic=topic, forum=forum, user=request.user, ip=ip, initial={"markup": request.user.forum_profile.markup}, ) if "post_id" in request.GET: post_id = request.GET["post_id"] post = get_object_or_404(Post, pk=post_id) form.fields["body"].initial = u"[quote=%s]%s[/quote]" % (post.user, post.body) if form.is_valid(): post = form.save() return HttpResponseRedirect(post.get_absolute_url()) return render( request, "djangobb_forum/add_post.html", {"form": form, "posts": posts, "topic": topic, "forum": forum} )
def user( request, username, section="essentials", action=None, template="djangobb_forum/profile/profile_essentials.html", form_class=EssentialsProfileForm, ): user = get_object_or_404(User, username=username) if request.user.is_authenticated() and user == request.user or request.user.is_superuser: profile_url = reverse("djangobb:forum_profile_%s" % section, args=[user.username]) form = build_form(form_class, request, instance=user.forum_profile, extra_args={"request": request}) if request.method == "POST" and form.is_valid(): form.save() return HttpResponseRedirect(profile_url) return render(request, template, {"active_menu": section, "profile": user, "form": form}) else: template = "djangobb_forum/user.html" topic_count = Topic.objects.filter(user__id=user.id).count() if user.forum_profile.post_count < forum_settings.POST_USER_SEARCH and not request.user.is_authenticated(): return HttpResponseRedirect(reverse("user_signin") + "?next=%s" % request.path) return render(request, template, {"profile": user, "topic_count": topic_count})
def edit_post(request, post_id): from djangobb_forum.templatetags.forum_extras import forum_editable_by post = get_object_or_404(Post, pk=post_id) topic = post.topic if not forum_editable_by(post, request.user): messages.error(request, _("You don't have permission to edit this post.")) return HttpResponseRedirect(post.get_absolute_url()) moderator = request.user.is_superuser or request.user in topic.forum.moderators.all() form = build_form(EditPostForm, request, topic=topic, instance=post) if form.is_valid(): post = form.save(commit=False) if not form.cleaned_data['silent_edit']: post.updated_by = request.user post.updated = timezone.now() post.save() messages.success(request, _("Post updated.")) return HttpResponseRedirect(post.get_absolute_url()) return render(request, 'djangobb_forum/edit_post.html', {'form': form, 'post': post, 'moderator': moderator, })
def edit_post(request, post_id): from djangobb_forum.templatetags.forum_extras import forum_editable_by post = get_object_or_404(Post, pk=post_id) topic = post.topic forum = post.topic.forum if not forum_editable_by(post, request.user): messages.error(request, _("No permissions to edit this post.")) return HttpResponseRedirect(post.get_absolute_url()) form = build_form(EditPostForm, request, topic=topic, instance=post) if form.is_valid(): if request.user.is_superuser or request.user in user.groups.filter(name='topic_moderator').exists(): if not post.is_moderated: post.is_moderated = True LOG.info("{0} edited & moderated the Post '{1}' from '{2}:{3}'".format(request.user.username, post.body, forum.name, topic.name)) post = form.save(commit=False) post.updated_by = request.user post.save() messages.success(request, _("Post updated.")) return HttpResponseRedirect(post.get_absolute_url()) return render(request, 'djangobb_forum/edit_post.html', {'form': form, 'post': post, })
def misc(request): if 'action' in request.GET: action = request.GET['action'] if action =='markread': user = request.user PostTracking.objects.filter(user__id=user.id).update(last_read=datetime.now(), topics=None) return HttpResponseRedirect(reverse('djangobb:index')) elif action == 'report': if request.GET.get('post_id', ''): post_id = request.GET['post_id'] post = get_object_or_404(Post, id=post_id) form = build_form(ReportForm, request, reported_by=request.user, post=post_id) if request.method == 'POST' and form.is_valid(): form.save() return HttpResponseRedirect(post.get_absolute_url()) return {'form':form} elif 'submit' in request.POST and 'mail_to' in request.GET: form = MailToForm(request.POST) if form.is_valid(): user = get_object_or_404(User, username=request.GET['mail_to']) subject = form.cleaned_data['subject'] body = form.cleaned_data['body'] + '\n %s %s [%s]' % (Site.objects.get_current().domain, request.user.username, request.user.email) user.email_user(subject, body, request.user.email) return HttpResponseRedirect(reverse('djangobb:index')) elif 'mail_to' in request.GET: user = get_object_or_404(User, username=request.GET['mail_to']) form = MailToForm() return {'form':form, 'user': user, 'TEMPLATE': 'forum/mail_to.html' }
def misc(request): if 'action' in request.GET: action = request.GET['action'] if action == 'markread': user = request.user PostTracking.objects.filter(user__id=user.id).update( last_read=datetime.now(), topics=None) return HttpResponseRedirect(reverse('djangobb:index')) elif action == 'report': if request.GET.get('post_id', ''): post_id = request.GET['post_id'] post = get_object_or_404(Post, id=post_id) form = build_form(ReportForm, request, reported_by=request.user, post=post_id) if request.method == 'POST' and form.is_valid(): form.save() return HttpResponseRedirect(post.get_absolute_url()) return {'form': form} elif 'submit' in request.POST and 'mail_to' in request.GET: form = MailToForm(request.POST) if form.is_valid(): user = get_object_or_404(User, username=request.GET['mail_to']) subject = form.cleaned_data['subject'] body = form.cleaned_data['body'] + '\n %s %s [%s]' % ( Site.objects.get_current().domain, request.user.username, request.user.email) # user.email_user(subject, body, request.user.email) ###sending the email with postmark data = { 'sender': request.user.get_full_name(), 'recipient': user.get_full_name(), 'subject': form.cleaned_data['subject'], 'body': form.cleaned_data['body'], 'email': user.email, 'mydomain': Site.objects.get(id=1).domain, 'encryptedUsername': urlsafe_b64encode(str(user.id)), } if user.get_profile().idioma == u'es': subject = u'Tienes un mensaje nuevo' template = 'foro-email_es.html' else: subject = u'You have a new message' template = 'foro-email_en.html' if user.get_profile().accept_email_updates: sendHtmlMail("*****@*****.**", subject, template, data, user.email, form.cleaned_data['body'], 'forum/email-templates/') ################################# #aumentando en 1 el puntaje del usuario que envio el mail request.user.get_profile().add_points(1) ########################## return HttpResponseRedirect(reverse('djangobb:index')) elif 'mail_to' in request.GET: mailto = get_object_or_404(User, username=request.GET['mail_to']) form = MailToForm() return { 'form': form, 'mailto': mailto, 'TEMPLATE': 'forum/mail_to.html' }
def misc(request): if 'action' in request.GET: action = request.GET['action'] if action =='markread': user = request.user PostTracking.objects.filter(user__id=user.id).update(last_read=datetime.now(), topics=None) return HttpResponseRedirect(reverse('djangobb:index')) elif action == 'report': if request.GET.get('post_id', ''): post_id = request.GET['post_id'] post = get_object_or_404(Post, id=post_id) form = build_form(ReportForm, request, reported_by=request.user, post=post_id) if request.method == 'POST' and form.is_valid(): form.save() return HttpResponseRedirect(post.get_absolute_url()) return render(request, 'djangobb_forum/report.html', {'form':form}) elif 'submit' in request.POST and 'mail_to' in request.GET: form = MailToForm(request.POST) if form.is_valid(): email = form.cleaned_data['email'] user = get_object_or_404(User, username=request.GET['mail_to']) subject = form.cleaned_data['subject'] from_email = request.user.email or email if not from_email or '@' not in from_email: form.errors['email'] = 'Please enter a valid email address!' return render(request, 'djangobb_forum/mail_to.html', { 'form': form }) if not request.user.email: request.user.email = from_email request.user.save() body_html = convert_text_to_html(form.cleaned_data['body'], 'bbcode') from_player = request.user.forum_profile.player if from_player: sent_by = '<a href="https://%(website)s/player/%(username)s">%(username)s</a>' % \ {'username': request.user.username, 'website': Site.objects.get_current().domain} else: sent_by = user.username body = '%s<br><br><hr>Sent by <b>%s</b> on the Standard Survival Forum<br>%s' \ % (body_html, sent_by, Site.objects.get_current().domain) message = EmailMessage(subject, body, '%s <%s>' % (request.user.username, settings.DEFAULT_FROM_EMAIL), [user.email], bcc=[settings.DEFAULT_FROM_EMAIL], headers={'Reply-To': from_email}) message.content_subtype = 'html' message.send() h.flash_success(request, 'Email sent to <b>%s</b>!' % user.username) return HttpResponseRedirect(reverse('djangobb:index')) elif 'mail_to' in request.GET: mailto = get_object_or_404(User, username=request.GET['mail_to']) form = MailToForm() return render(request, 'djangobb_forum/mail_to.html', {'form':form, 'mailto': mailto} )
def misc(request): if 'action' in request.GET: action = request.GET['action'] if action == 'markread': user = request.user PostTracking.objects.filter(user__id=user.id).update( last_read=datetime.now(), topics=None) return HttpResponseRedirect(reverse('djangobb:index')) elif action == 'report': if request.GET.get('post_id', ''): post_id = request.GET['post_id'] post = get_object_or_404(Post, id=post_id) form = build_form(ReportForm, request, reported_by=request.user, post=post_id) if request.method == 'POST' and form.is_valid(): form.save() return HttpResponseRedirect(post.get_absolute_url()) return render(request, 'djangobb_forum/report.html', {'form': form}) elif 'submit' in request.POST and 'mail_to' in request.GET: form = MailToForm(request.POST) if form.is_valid(): email = form.cleaned_data['email'] user = get_object_or_404(User, username=request.GET['mail_to']) subject = form.cleaned_data['subject'] from_email = request.user.email or email if not from_email or '@' not in from_email: form.errors['email'] = 'Please enter a valid email address!' return render(request, 'djangobb_forum/mail_to.html', {'form': form}) if not request.user.email: request.user.email = from_email request.user.save() body_html = convert_text_to_html(form.cleaned_data['body'], 'bbcode') from_player = request.user.forum_profile.player if from_player: sent_by = '<a href="https://%(website)s/player/%(username)s">%(username)s</a>' % \ {'username': request.user.username, 'website': Site.objects.get_current().domain} else: sent_by = user.username body = '%s<br><br><hr>Sent by <b>%s</b> on the Standard Survival Forum<br>%s' \ % (body_html, sent_by, Site.objects.get_current().domain) message = EmailMessage( subject, body, '%s <%s>' % (request.user.username, settings.DEFAULT_FROM_EMAIL), [user.email], bcc=[settings.DEFAULT_FROM_EMAIL], headers={'Reply-To': from_email}) message.content_subtype = 'html' message.send() h.flash_success(request, 'Email sent to <b>%s</b>!' % user.username) return HttpResponseRedirect(reverse('djangobb:index')) elif 'mail_to' in request.GET: mailto = get_object_or_404(User, username=request.GET['mail_to']) form = MailToForm() return render(request, 'djangobb_forum/mail_to.html', { 'form': form, 'mailto': mailto })
def user(request, username): user = get_object_or_404(User, username=username) if request.user.is_authenticated() and user == request.user or request.user.is_superuser: if 'section' in request.GET: section = request.GET['section'] profile_url = reverse('djangobb:forum_profile', args=[user.username]) + '?section=' + section if section == 'privacy': form = build_form(PrivacyProfileForm, request, instance=user.forum_profile) if request.method == 'POST' and form.is_valid(): form.save() return HttpResponseRedirect(profile_url) return {'active_menu':'privacy', 'profile': user, 'form': form, 'TEMPLATE': 'forum/profile/profile_privacy.html' } elif section == 'display': form = build_form(DisplayProfileForm, request, instance=user.forum_profile) if request.method == 'POST' and form.is_valid(): form.save() return HttpResponseRedirect(profile_url) return {'active_menu':'display', 'profile': user, 'form': form, 'TEMPLATE': 'forum/profile/profile_display.html' } elif section == 'personality': form = build_form(PersonalityProfileForm, request, markup=user.forum_profile.markup, instance=user.forum_profile) if request.method == 'POST' and form.is_valid(): form.save() return HttpResponseRedirect(profile_url) return {'active_menu':'personality', 'profile': user, 'form': form, 'TEMPLATE': 'forum/profile/profile_personality.html' } elif section == 'messaging': form = build_form(MessagingProfileForm, request, instance=user.forum_profile) if request.method == 'POST' and form.is_valid(): form.save() return HttpResponseRedirect(profile_url) return {'active_menu':'messaging', 'profile': user, 'form': form, 'TEMPLATE': 'forum/profile/profile_messaging.html' } elif section == 'personal': form = build_form(PersonalProfileForm, request, instance=user.forum_profile, user=user) if request.method == 'POST' and form.is_valid(): form.save() return HttpResponseRedirect(profile_url) return {'active_menu':'personal', 'profile': user, 'form': form, 'TEMPLATE': 'forum/profile/profile_personal.html' } elif section == 'essentials': form = build_form(EssentialsProfileForm, request, instance=user.forum_profile, user_view=user, user_request=request.user) if request.method == 'POST' and form.is_valid(): profile = form.save() set_language(request, profile.language) return HttpResponseRedirect(profile_url) return {'active_menu':'essentials', 'profile': user, 'form': form, 'TEMPLATE': 'forum/profile/profile_essentials.html' } elif 'action' in request.GET: action = request.GET['action'] if action == 'upload_avatar': form = build_form(UploadAvatarForm, request, instance=user.forum_profile) if request.method == 'POST' and form.is_valid(): form.save() return HttpResponseRedirect(reverse('djangobb:forum_profile', args=[user.username])) return {'form': form, 'avatar_width': forum_settings.AVATAR_WIDTH, 'avatar_height': forum_settings.AVATAR_HEIGHT, 'TEMPLATE': 'forum/upload_avatar.html' } elif action == 'delete_avatar': profile = get_object_or_404(Profile, user=request.user) profile.avatar = None profile.save() return HttpResponseRedirect(reverse('djangobb:forum_profile', args=[user.username])) else: form = build_form(EssentialsProfileForm, request, instance=user.forum_profile, user_view=user, user_request=request.user) if request.method == 'POST' and form.is_valid(): profile = form.save() set_language(request, profile.language) return HttpResponseRedirect(reverse('djangobb:forum_profile', args=[user.username])) return {'active_menu':'essentials', 'profile': user, 'form': form, 'TEMPLATE': 'forum/profile/profile_essentials.html' } else: topic_count = Topic.objects.filter(user__id=user.id).count() if user.forum_profile.post_count < forum_settings.POST_USER_SEARCH and not request.user.is_authenticated(): return HttpResponseRedirect(reverse('user_signin') + '?next=%s' % request.path) return {'profile': user, 'topic_count': topic_count, }