diff options
-rw-r--r-- | hyperkitty/archiver.py | 2 | ||||
-rw-r--r-- | hyperkitty/templates/messages/like_form.html | 2 | ||||
-rw-r--r-- | hyperkitty/templates/messages/message.html | 10 | ||||
-rw-r--r-- | hyperkitty/templates/messages/reply_form.html | 2 | ||||
-rw-r--r-- | hyperkitty/templates/month_view.html | 2 | ||||
-rw-r--r-- | hyperkitty/templates/search.html | 2 | ||||
-rw-r--r-- | hyperkitty/templates/user_profile.html | 8 | ||||
-rw-r--r-- | hyperkitty/tests/test_views.py | 4 | ||||
-rw-r--r-- | hyperkitty/urls.py | 8 | ||||
-rw-r--r-- | hyperkitty/views/compat.py | 2 | ||||
-rw-r--r-- | hyperkitty/views/message.py | 27 |
11 files changed, 35 insertions, 34 deletions
diff --git a/hyperkitty/archiver.py b/hyperkitty/archiver.py index ffb08ff..7e79b08 100644 --- a/hyperkitty/archiver.py +++ b/hyperkitty/archiver.py @@ -97,7 +97,7 @@ class Archiver(object): msg_hash = get_message_id_hash(msg_id) return urljoin(self.store_url, reverse('message_index', kwargs={"mlist_fqdn": mlist.fqdn_listname, - "hashid": msg_hash})) + "message_id_hash": msg_hash})) def archive_message(self, mlist, msg): """Send the message to the archiver. diff --git a/hyperkitty/templates/messages/like_form.html b/hyperkitty/templates/messages/like_form.html index 3b99987..40b85c0 100644 --- a/hyperkitty/templates/messages/like_form.html +++ b/hyperkitty/templates/messages/like_form.html @@ -1,5 +1,5 @@ <form method="post" class="likeform" - action="{% url message_vote mlist_fqdn=list_address, hashid=hashid %}"> + action="{% url message_vote mlist_fqdn=list_address, message_id_hash=message_id_hash %}"> {% csrf_token %} <li class="likestatus {{ object.likestatus }}"> +<span class="likecount">{{ object.likes }}</span>/-<span class="dislikecount">{{ object.dislikes }}</span> diff --git a/hyperkitty/templates/messages/message.html b/hyperkitty/templates/messages/message.html index a47d831..89ecda7 100644 --- a/hyperkitty/templates/messages/message.html +++ b/hyperkitty/templates/messages/message.html @@ -19,7 +19,7 @@ {% gravatar email.sender_email 40 %} </div> <div class="email_author inline-block"> - <span class="name"><a href="{% url message_index mlist_fqdn=list_address, hashid=email.message_id_hash %}">{{email.sender_name|escapeemail}}</a></span> + <span class="name"><a href="{% url message_index mlist_fqdn=list_address, message_id_hash=email.message_id_hash %}">{{email.sender_name|escapeemail}}</a></span> {% if use_mockups %} <br /> <span class="rank"> @@ -36,7 +36,7 @@ <p class="attachments">Attachments:</p> <ul class="attachments-list"> {% for attachment in email.attachments %} - <li><a href="{% url message_attachment mlist_fqdn=list_address, hashid=email.message_id_hash, counter=attachment.counter, filename=attachment.name %}">{{attachment.name}}</a> + <li><a href="{% url message_attachment mlist_fqdn=list_address, message_id_hash=email.message_id_hash, counter=attachment.counter, filename=attachment.name %}">{{attachment.name}}</a> ({{attachment.content_type}} — {{attachment.size|filesizeformat}}) </li> {% endfor %} @@ -44,20 +44,20 @@ {% endif %} <ul class="email_info inline"> - {% include "messages/like_form.html" with hashid=email.message_id_hash object=email %} + {% include "messages/like_form.html" with message_id_hash=email.message_id_hash object=email %} {% if not unfolded and email.attachments|count %} <li class="attachments"> <a class="attachments" href="#attachments">{{ email.attachments|count }} attachment(s)</a> <ul class="attachments-list"> {% for attachment in email.attachments %} - <li><a href="{% url message_attachment mlist_fqdn=list_address, hashid=email.message_id_hash, counter=attachment.counter, filename=attachment.name %}">{{attachment.name}}</a> + <li><a href="{% url message_attachment mlist_fqdn=list_address, message_id_hash=email.message_id_hash, counter=attachment.counter, filename=attachment.name %}">{{attachment.name}}</a> ({{attachment.content_type}} — {{attachment.size|filesizeformat}}) </li> {% endfor %} </ul> </li> {% endif %} - {% include "messages/reply_form.html" with mlist_fqdn=list_address message_id=email.message_id_hash %} + {% include "messages/reply_form.html" with mlist_fqdn=list_address message_id_hash=email.message_id_hash %} </ul> {# vim: set noet: #} diff --git a/hyperkitty/templates/messages/reply_form.html b/hyperkitty/templates/messages/reply_form.html index 29bd15b..eca1dc6 100644 --- a/hyperkitty/templates/messages/reply_form.html +++ b/hyperkitty/templates/messages/reply_form.html @@ -1,7 +1,7 @@ <a class="reply icon-envelope" href="#">Reply</a> <div class="reply-form dropdown"> <form method="post" - action="{% url message_reply mlist_fqdn=mlist_fqdn, message_id=message_id %}"> + action="{% url message_reply mlist_fqdn=mlist_fqdn, message_id_hash=message_id_hash %}"> {% csrf_token %} {{ reply_form.as_p }} <p class="buttons"> diff --git a/hyperkitty/templates/month_view.html b/hyperkitty/templates/month_view.html index 526eb15..3484a2b 100644 --- a/hyperkitty/templates/month_view.html +++ b/hyperkitty/templates/month_view.html @@ -92,7 +92,7 @@ </li> </ul> <ul class="inline-block"> - {% include "messages/like_form.html" with hashid=thread.thread_id object=thread %} + {% include "messages/like_form.html" with message_id_hash=thread.starting_email.message_id_hash object=thread %} </ul> <a href="{% url thread threadid=thread.thread_id, mlist_fqdn=list_address %}" class="btn">Show discussion</a> diff --git a/hyperkitty/templates/search.html b/hyperkitty/templates/search.html index da464b2..facc733 100644 --- a/hyperkitty/templates/search.html +++ b/hyperkitty/templates/search.html @@ -68,7 +68,7 @@ </li> </ul> <ul class="inline-block"> - {% include "messages/like_form.html" with hashid=email.message_id_hash object=email %} + {% include "messages/like_form.html" with message_id_hash=email.message_id_hash object=email %} </ul> </div> </div> diff --git a/hyperkitty/templates/user_profile.html b/hyperkitty/templates/user_profile.html index c967be6..8052bce 100644 --- a/hyperkitty/templates/user_profile.html +++ b/hyperkitty/templates/user_profile.html @@ -65,11 +65,11 @@ {% for vote in votes_up %} <li> {% if vote.message.content|trimString|length > 0 %} - <a href="{% url message_index mlist_fqdn=vote.list_address, hashid=vote.messageid %}" + <a href="{% url message_index mlist_fqdn=vote.list_address, message_id_hash=vote.messageid %}" >{{ vote.message.subject }}</a> by {{ vote.message.sender_name }} ({{ vote.message|viewer_date|date:"l, j F Y H:i:s" }}) {% else %} - <a href="{% url message_index mlist_fqdn=vote.list_address, hashid=vote.messageid %}">Message is empty</a> + <a href="{% url message_index mlist_fqdn=vote.list_address, message_id_hash=vote.messageid %}">Message is empty</a> {% endif %} </li> {% endfor %} @@ -84,11 +84,11 @@ {% for vote in votes_down %} <li> {% if vote.message.content|trimString|length > 0 %} - <a href="{% url message_index mlist_fqdn=vote.list_address, hashid=vote.messageid %}" + <a href="{% url message_index mlist_fqdn=vote.list_address, message_id_hash=vote.messageid %}" >{{ vote.message.subject }}</a> by {{ vote.message.sender_name }} ({{ vote.message|viewer_date|date:"l, j F Y H:i:s" }}) {% else %} - <a href="{% url message_index mlist_fqdn=vote.list_address, hashid=vote.messageid %}">Message is empty</a> + <a href="{% url message_index mlist_fqdn=vote.list_address, message_id_hash=vote.messageid %}">Message is empty</a> {% endif %} </li> {% endfor %} diff --git a/hyperkitty/tests/test_views.py b/hyperkitty/tests/test_views.py index 83e3e24..b4d897f 100644 --- a/hyperkitty/tests/test_views.py +++ b/hyperkitty/tests/test_views.py @@ -83,11 +83,11 @@ class MessageViewsTestCase(TestCase): User.objects.create_user('testuser', 'syst3m.w0rm+test@gmail.com', 'testPass') user = self.client.login(username='testuser', password='testPass') - resp = self.client.post(reverse('message_vote', kwargs={'mlist_fqdn': 'list@list.com'}), {'vote': 1, 'hashid': 123, }) + resp = self.client.post(reverse('message_vote', kwargs={'mlist_fqdn': 'list@list.com'}), {'vote': 1, 'message_id_hash': 123, }) self.assertEqual(resp.status_code, 200) def test_unauth_vote(self): - resp = self.client.post(reverse('message_vote', kwargs={'mlist_fqdn': 'list@list.com'}), {'vote': 1, 'hashid': 123, }) + resp = self.client.post(reverse('message_vote', kwargs={'mlist_fqdn': 'list@list.com'}), {'vote': 1, 'message_id_hash': 123, }) self.assertEqual(resp.status_code, 403) diff --git a/hyperkitty/urls.py b/hyperkitty/urls.py index 591ad41..82a7b72 100644 --- a/hyperkitty/urls.py +++ b/hyperkitty/urls.py @@ -55,13 +55,13 @@ urlpatterns = patterns('hyperkitty.views', 'list.overview', name='list_overview'), # Message - url(r'^list/(?P<mlist_fqdn>[^/@]+@[^/@]+)/message/(?P<hashid>\w+)/$', + url(r'^list/(?P<mlist_fqdn>[^/@]+@[^/@]+)/message/(?P<message_id_hash>\w+)/$', 'message.index', name='message_index'), - url(r'^list/(?P<mlist_fqdn>[^/@]+@[^/@]+)/message/(?P<hashid>\w+)/attachment/(?P<counter>\d+)/(?P<filename>.+)$', + url(r'^list/(?P<mlist_fqdn>[^/@]+@[^/@]+)/message/(?P<message_id_hash>\w+)/attachment/(?P<counter>\d+)/(?P<filename>.+)$', 'message.attachment', name='message_attachment'), - url(r'^list/(?P<mlist_fqdn>[^/@]+@[^/@]+)/message/(?P<hashid>\w+)/vote$', + url(r'^list/(?P<mlist_fqdn>[^/@]+@[^/@]+)/message/(?P<message_id_hash>\w+)/vote$', 'message.vote', name='message_vote'), - url(r'^list/(?P<mlist_fqdn>[^/@]+@[^/@]+)/message/(?P<message_id>\w+)/reply$', + url(r'^list/(?P<mlist_fqdn>[^/@]+@[^/@]+)/message/(?P<message_id_hash>\w+)/reply$', 'message.reply', name='message_reply'), # Thread diff --git a/hyperkitty/views/compat.py b/hyperkitty/views/compat.py index bbfa367..b8c0666 100644 --- a/hyperkitty/views/compat.py +++ b/hyperkitty/views/compat.py @@ -108,7 +108,7 @@ def message(request, list_name, year, month_name, msg_num): raise Http404("No such message in this mailing-list.") url = reverse('message_index', kwargs={ 'mlist_fqdn': mlist.name, - 'hashid': message.message_id_hash, + 'message_id': message.message_id_hash, }) #return HttpResponse(request.build_absolute_uri(url)) return HttpResponseRedirect(url) diff --git a/hyperkitty/views/message.py b/hyperkitty/views/message.py index 509205c..3e6cac3 100644 --- a/hyperkitty/views/message.py +++ b/hyperkitty/views/message.py @@ -41,7 +41,7 @@ from hyperkitty.lib import get_store, get_months from forms import * -def index(request, mlist_fqdn, hashid): +def index(request, mlist_fqdn, message_id_hash): ''' Displays a single message identified by its message_id_hash (derived from message_id) @@ -51,14 +51,14 @@ def index(request, mlist_fqdn, hashid): search_form = SearchForm(auto_id=False) t = loader.get_template('message.html') store = get_store(request) - message = store.get_message_by_hash_from_list(mlist_fqdn, hashid) + message = store.get_message_by_hash_from_list(mlist_fqdn, message_id_hash) if message is None: raise Http404 message.sender_email = message.sender_email.strip() # Extract all the votes for this message try: - votes = Rating.objects.filter(messageid = hashid) + votes = Rating.objects.filter(messageid=message_id_hash) except Rating.DoesNotExist: votes = {} @@ -91,7 +91,7 @@ def index(request, mlist_fqdn, hashid): 'list_name' : list_name, 'list_address': mlist_fqdn, 'message': message, - 'hashid' : hashid, + 'message_id_hash' : message_id_hash, 'archives_length': get_months(store, mlist_fqdn), 'use_mockups': settings.USE_MOCKUPS, 'reply_form': ReplyForm(), @@ -99,13 +99,13 @@ def index(request, mlist_fqdn, hashid): return HttpResponse(t.render(c)) -def attachment(request, mlist_fqdn, hashid, counter, filename): +def attachment(request, mlist_fqdn, message_id_hash, counter, filename): """ Sends the numbered attachment for download. The filename is not used for lookup, but validated nonetheless for security reasons. """ store = get_store(request) - message = store.get_message_by_hash_from_list(mlist_fqdn, hashid) + message = store.get_message_by_hash_from_list(mlist_fqdn, message_id_hash) if message is None: raise Http404 attachment = store.get_attachment_by_counter( @@ -124,7 +124,7 @@ def attachment(request, mlist_fqdn, hashid, counter, filename): return response -def vote(request, mlist_fqdn, hashid): +def vote(request, mlist_fqdn, message_id_hash): """ Add a rating to a given message identified by messageid. """ if not request.user.is_authenticated(): return HttpResponse('You must be logged in to vote', @@ -134,13 +134,13 @@ def vote(request, mlist_fqdn, hashid): # Checks if the user has already voted for a this message. try: - v = Rating.objects.get(user=request.user, messageid=hashid, + v = Rating.objects.get(user=request.user, messageid=message_id_hash, list_address=mlist_fqdn) if v.vote == value: return HttpResponse("You've already cast this vote", content_type="text/plain", status=403) except Rating.DoesNotExist: - v = Rating(list_address=mlist_fqdn, messageid=hashid, vote=value) + v = Rating(list_address=mlist_fqdn, messageid=message_id_hash, vote=value) v.user = request.user v.vote = value @@ -148,7 +148,7 @@ def vote(request, mlist_fqdn, hashid): # Extract all the votes for this message to refresh it status = { "like": 0, "dislike": 0 } - for vote in Rating.objects.filter(messageid=hashid): + for vote in Rating.objects.filter(messageid=message_id_hash): if vote.vote == 1: status["like"] += 1 elif vote.vote == -1: @@ -159,7 +159,7 @@ def vote(request, mlist_fqdn, hashid): @login_required -def reply(request, mlist_fqdn, message_id): +def reply(request, mlist_fqdn, message_id_hash): """ Sends a reply to the list. TODO: unit tests """ @@ -169,7 +169,7 @@ def reply(request, mlist_fqdn, message_id): if not form.is_valid(): return HttpResponse(form.errors.as_text(), content_type="text/plain", status=400) store = get_store(request) - message = store.get_message_by_hash_from_list(mlist_fqdn, message_id) + message = store.get_message_by_hash_from_list(mlist_fqdn, message_id_hash) subject = message.subject if not message.subject.lower().startswith("re:"): subject = "Re: %s" % subject @@ -182,7 +182,8 @@ def reply(request, mlist_fqdn, message_id): to=[mlist_fqdn], cc=['aurelien@bompard.org'], headers={ - "In-Reply-To": message.message_id, + "In-Reply-To": "<%s>" % message.message_id, + "References": "<%s>" % message.message_id, }) reply.send() return HttpResponse("The reply has been sent successfully.", mimetype="text/plain") |