Beispiel #1
0
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,
        })
Beispiel #2
0
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'
               }
Beispiel #3
0
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,
               })
Beispiel #4
0
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,
    })
Beispiel #5
0
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,
        })
Beispiel #6
0
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})
Beispiel #7
0
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)
Beispiel #8
0
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
Beispiel #9
0
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)
        })
Beispiel #10
0
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,
    })
Beispiel #11
0
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
        })
Beispiel #12
0
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,
            })
Beispiel #13
0
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
Beispiel #14
0
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})
Beispiel #15
0
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)
Beispiel #16
0
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,
        })
Beispiel #17
0
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}
                )
Beispiel #18
0
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,
            }
Beispiel #19
0
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})
Beispiel #20
0
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,
               })
Beispiel #21
0
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,
               }
Beispiel #22
0
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,
    })
Beispiel #23
0
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,
            })
Beispiel #24
0
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,
               })
Beispiel #25
0
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
Beispiel #26
0
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,
            })
Beispiel #27
0
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
Beispiel #28
0
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,
            })
Beispiel #29
0
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}
        )
Beispiel #30
0
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,
        })
Beispiel #31
0
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}
    )
Beispiel #32
0
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})
Beispiel #33
0
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,
            })
Beispiel #34
0
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,
            })
Beispiel #35
0
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'
               }
Beispiel #36
0
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'
        }
Beispiel #37
0
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}
                )
Beispiel #38
0
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
        })
Beispiel #39
0
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,
               }