summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEvgeny Fadeev <evgeny.fadeev@gmail.com>2010-08-14 00:18:28 -0400
committerEvgeny Fadeev <evgeny.fadeev@gmail.com>2010-08-14 00:18:28 -0400
commit855e5c03a1fa55f4d64eaf9d98fa0022399728dd (patch)
treebee470415c27a059c4d9a7e4e2bae4b37fa74c79
parent3d07f2d8dfe0edbc2808734e8d886405124542a9 (diff)
downloadaskbot-855e5c03a1fa55f4d64eaf9d98fa0022399728dd.tar.gz
askbot-855e5c03a1fa55f4d64eaf9d98fa0022399728dd.tar.bz2
askbot-855e5c03a1fa55f4d64eaf9d98fa0022399728dd.zip
candidate for version 0.6.7 ready
-rw-r--r--askbot/auth.py4
-rw-r--r--askbot/conf/minimum_reputation.py9
-rw-r--r--askbot/forms.py16
-rw-r--r--askbot/skins/default/templates/user_moderate.html32
-rw-r--r--askbot/views/users.py38
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
@@ -132,15 +132,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,
'MIN_REP_TO_CLOSE_OTHERS_QUESTIONS',
default=2000,
description=_('Close questions asked by others')
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 %}
<h3>{% blocktrans with view_user.username as username and view_user.get_status_display as status %}{{username}}'s current status is "{{status}}"{% endblocktrans %}
</h3>
+ {% if user_status_changed %}
+ <p class="action-status"><span>{% trans "User status changed" %}</span></p>
+ {% endif %}
<form method="post">
<input type="hidden" name="sort" value="moderate"/>
<table class="form-as-table">
@@ -22,6 +25,9 @@
{% blocktrans with view_user.reputation as reputation %}User's current reputation is {{reputation}} points{% endblocktrans %}
{% endif %}
</h3>
+{% if user_rep_changed %}
+ <p class="action-status"><span>{% trans "User reputation changed" %}</span></p>
+{% endif %}
<form method="post">
<input type="hidden" name="sort" value="moderate"/>
<table class="form-as-table">
@@ -30,4 +36,30 @@
<input type="submit" class="submit" name="subtract_reputation" value="{% trans "Subtract" %}" />&nbsp;
<input type="submit" class="submit" name="add_reputation" value="{% trans "Add" %}" />
</form>
+{% if request.user != view_user %}
+<hr/>
+<h3>{% blocktrans with view_user.username as username %}Send message to {{username}}{% endblocktrans %}</h3>
+<p>{% 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." %}</p>
+ {% if message_sent %}
+ <p class="action-status"><span>{% trans "Message sent" %}</span></p>
+ {% endif %}
+<form method="post">
+ <input type="hidden" name="sort" value="moderate"/>
+ <div class="form-row-vertical">
+ <label for="id_subject_line">{{ send_message_form.subject_line.label}}</label>
+ {% if send_message_form.subject_line.errors %}
+ <p class="error">{{send_message_form.subject_line.errors|join:', '}}</p>
+ {% endif %}
+ {{ send_message_form.subject_line}}
+ </div>
+ <div class="form-row-vertical">
+ <label for="id_body_text">{{ send_message_form.body_text.label}}</label>
+ {% if send_message_form.body_text.errors %}
+ <p class="error">{{send_message_form.body_text.errors|join:', '}}</p>
+ {% endif %}
+ {{ send_message_form.body_text}}
+ </div>
+ <input type="submit" class="submit" name="send_message" value="{% trans "Send message" %}" />
+</form>
+{% 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)
)