From 855e5c03a1fa55f4d64eaf9d98fa0022399728dd Mon Sep 17 00:00:00 2001 From: Evgeny Fadeev Date: Sat, 14 Aug 2010 00:18:28 -0400 Subject: candidate for version 0.6.7 ready --- askbot/auth.py | 4 --- askbot/conf/minimum_reputation.py | 9 ------ askbot/forms.py | 16 ++++++++++ askbot/skins/default/templates/user_moderate.html | 32 +++++++++++++++++++ askbot/views/users.py | 38 ++++++++++++++++++++--- 5 files changed, 82 insertions(+), 17 deletions(-) diff --git a/askbot/auth.py b/askbot/auth.py index 83a26d48..e0f314c1 100644 --- a/askbot/auth.py +++ b/askbot/auth.py @@ -18,10 +18,6 @@ import logging from askbot.conf import settings as askbot_settings -def can_follow_url(user): - """Determines if the URL link can be followed by Google search engine.""" - return user.reputation >= askbot_settings.MIN_REP_TO_DISABLE_URL_NOFOLLOW - # user preferences view permissions def is_user_self(request_user, target_user): return (request_user.is_authenticated() and request_user == target_user) diff --git a/askbot/conf/minimum_reputation.py b/askbot/conf/minimum_reputation.py index 59726981..bb8d7754 100644 --- a/askbot/conf/minimum_reputation.py +++ b/askbot/conf/minimum_reputation.py @@ -129,15 +129,6 @@ settings.register( ) ) -settings.register( - IntegerValue( - MIN_REP, - 'MIN_REP_TO_DISABLE_URL_NOFOLLOW', - default=2000, - description=_('Disable nofollow directive on links') - ) - ) - settings.register( IntegerValue( MIN_REP, diff --git a/askbot/forms.py b/askbot/forms.py index 555a7662..2fd1afd5 100644 --- a/askbot/forms.py +++ b/askbot/forms.py @@ -263,6 +263,22 @@ class ChangeUserStatusForm(forms.Form): return self.cleaned_data +class SendMessageForm(forms.Form): + subject_line = forms.CharField( + label = _('Subject line'), + max_length = 64, + widget = forms.TextInput( + attrs = {'size':64}, + ) + ) + body_text = forms.CharField( + label = _('Message text'), + max_length = 1600, + widget = forms.Textarea( + attrs = {'cols':64} + ) + ) + class AdvancedSearchForm(forms.Form): #nothing must be required in this form diff --git a/askbot/skins/default/templates/user_moderate.html b/askbot/skins/default/templates/user_moderate.html index bc8d877e..5edff0c2 100644 --- a/askbot/skins/default/templates/user_moderate.html +++ b/askbot/skins/default/templates/user_moderate.html @@ -6,6 +6,9 @@ {% if request.user != view_user %}

{% blocktrans with view_user.username as username and view_user.get_status_display as status %}{{username}}'s current status is "{{status}}"{% endblocktrans %}

+ {% if user_status_changed %} +

{% trans "User status changed" %}

+ {% endif %}
@@ -22,6 +25,9 @@ {% blocktrans with view_user.reputation as reputation %}User's current reputation is {{reputation}} points{% endblocktrans %} {% endif %} +{% if user_rep_changed %} +

{% trans "User reputation changed" %}

+{% endif %}
@@ -30,4 +36,30 @@   +{% if request.user != view_user %} +
+

{% blocktrans with view_user.username as username %}Send message to {{username}}{% endblocktrans %}

+

{% trans "An email will be sent to the user with 'reply-to' field set to your email address. Please make sure that your address is entered correctly." %}

+ {% if message_sent %} +

{% trans "Message sent" %}

+ {% endif %} + + +
+ + {% if send_message_form.subject_line.errors %} +

{{send_message_form.subject_line.errors|join:', '}}

+ {% endif %} + {{ send_message_form.subject_line}} +
+
+ + {% if send_message_form.body_text.errors %} +

{{send_message_form.body_text.errors|join:', '}}

+ {% endif %} + {{ send_message_form.body_text}} +
+ + +{% endif %} {% endblock %} diff --git a/askbot/views/users.py b/askbot/views/users.py index 02d36514..ea1f03a5 100644 --- a/askbot/views/users.py +++ b/askbot/views/users.py @@ -9,6 +9,7 @@ Also this module includes the view listing all forum users. from django.db.models import Sum from django.contrib.auth.decorators import login_required from django.core.paginator import Paginator, EmptyPage, InvalidPage +from django.core import mail from django.template.defaultfilters import slugify from django.contrib.contenttypes.models import ContentType from django.core.urlresolvers import reverse @@ -19,6 +20,7 @@ from django.http import HttpResponseRedirect, Http404 from django.utils.translation import ugettext as _ from django.utils.html import strip_tags from django.utils import simplejson +from django.conf import settings as django_settings from askbot.utils.html import sanitize_html from askbot import auth from askbot import forms @@ -136,6 +138,12 @@ def user_moderate(request, subject): if not moderator.can_moderate_user(subject): raise Http404 + user_rep_changed = False + user_status_changed = False + message_sent = False + + user_rep_form = forms.ChangeUserReputationForm() + send_message_form = forms.SendMessageForm() if request.method == 'POST': if 'change_status' in request.POST: user_status_form = forms.ChangeUserStatusForm( @@ -145,7 +153,25 @@ def user_moderate(request, subject): ) if user_status_form.is_valid(): subject.set_status( user_status_form.cleaned_data['user_status'] ) - user_rep_form = forms.ChangeUserReputationForm() + user_status_changed = True + elif 'send_message' in request.POST: + send_message_form = forms.SendMessageForm(request.POST) + if send_message_form.is_valid(): + subject_line = send_message_form.cleaned_data['subject_line'] + body_text = send_message_form.cleaned_data['body_text'] + message = mail.EmailMessage( + subject_line, + body_text, + django_settings.DEFAULT_FROM_EMAIL, + [subject.email,], + headers={'Reply-to':moderator.email} + ) + try: + message.send() + message_sent = True + except Exception, e: + logging.critical(unicode(e)) + send_message_form = forms.SendMessageForm() else: reputation_change_type = None if 'subtract_reputation' in request.POST: @@ -169,8 +195,9 @@ def user_moderate(request, subject): comment = comment, timestamp = datetime.datetime.now(), ) - else: - user_rep_form = forms.ChangeUserReputationForm() + #reset form to preclude accidentally repeating submission + user_rep_form = forms.ChangeUserReputationForm() + user_rep_changed = True #need to re-initialize the form even if it was posted, because #initial values will most likely be different from the previous @@ -178,7 +205,6 @@ def user_moderate(request, subject): moderator = moderator, subject = subject ) - return render_to_response( 'user_moderate.html', { @@ -189,6 +215,10 @@ def user_moderate(request, subject): 'view_user': subject, 'change_user_status_form': user_status_form, 'change_user_reputation_form': user_rep_form, + 'send_message_form': send_message_form, + 'message_sent': message_sent, + 'user_rep_changed': user_rep_changed, + 'user_status_changed': user_status_changed }, context_instance=RequestContext(request) ) -- cgit v1.2.3-1-g7c22