mirror of
https://github.com/haiwen/seahub.git
synced 2025-09-25 06:33:48 +00:00
Merge branch 'del-received-msg' of git://github.com/imwhatiam/seahub into imwhatiam-del-received-msg
This commit is contained in:
@@ -17,14 +17,15 @@ class UserMessageManager(models.Manager):
|
||||
others and others send to he/she.
|
||||
"""
|
||||
return super(UserMessageManager, self).filter(
|
||||
Q(to_email=username)|Q(from_email=username)).order_by('to_email')
|
||||
(Q(to_email=username)&Q(recipient_deleted_at__isnull=True)) |
|
||||
(Q(from_email=username)&Q(sender_deleted_at__isnull=True))).order_by('to_email')
|
||||
|
||||
def get_messages_between_users(self, user1, user2):
|
||||
"""List messages between two users.
|
||||
"""
|
||||
return super(UserMessageManager, self).filter(
|
||||
(Q(from_email=user1)&Q(to_email=user2)) |
|
||||
(Q(from_email=user2)&Q(to_email=user1))).order_by('-timestamp')
|
||||
(Q(from_email=user1)&Q(to_email=user2)&Q(sender_deleted_at__isnull=True)) |
|
||||
(Q(from_email=user2)&Q(to_email=user1)&Q(recipient_deleted_at__isnull=True))).order_by('-timestamp')
|
||||
|
||||
def add_unread_message(self, user1, user2, msg):
|
||||
"""Add a new message sent from ``user1`` to ``user2``.
|
||||
@@ -56,6 +57,8 @@ class UserMessage(models.Model):
|
||||
to_email = LowerCaseCharField(max_length=255, db_index=True)
|
||||
timestamp = models.DateTimeField(default=datetime.datetime.now)
|
||||
ifread = models.BooleanField()
|
||||
sender_deleted_at = models.DateTimeField(null=True, blank=True)
|
||||
recipient_deleted_at = models.DateTimeField(null=True, blank=True)
|
||||
objects = UserMessageManager()
|
||||
|
||||
def __unicode__(self):
|
||||
|
@@ -39,10 +39,10 @@
|
||||
<ul class="msg-list">
|
||||
{% for msg in person_msgs.object_list %}
|
||||
{% if msg.to_email == request.user.email %}
|
||||
<li class="msg msg-received w100">
|
||||
<li class="msg msg-received w100" data-id="{{msg.message_id}}">
|
||||
<a href="{% url 'user_profile' msg.from_email|id_or_email %}" class="pic fright">{% avatar msg.from_email 48 %}</a>
|
||||
{% else %}
|
||||
<li class="msg w100" data-id="{{msg.message_id}}">
|
||||
<li class="msg msg-send w100" data-id="{{msg.message_id}}">
|
||||
<a href="{% url 'user_profile' msg.from_email|id_or_email %}" class="pic fleft">{% avatar msg.from_email 48 %}</a>
|
||||
{% endif %}
|
||||
<div class="txt">
|
||||
@@ -50,6 +50,8 @@
|
||||
<div class="msg-hd w100 ovhd">
|
||||
{% if msg.from_email == request.user.username %}
|
||||
<span class="msg-del op fright vh">{% trans "Delete" %}</span>
|
||||
{% else %}
|
||||
<span class="re-msg-del op fright vh">{% trans "Delete" %}</span>
|
||||
{% endif %}
|
||||
<a class="author" href="{% url 'user_profile' msg.from_email|id_or_email %}">{{ msg.from_email|email2nickname }}</a>
|
||||
<span class="time">{{ msg.timestamp|translate_seahub_time }}</span>
|
||||
@@ -220,6 +222,42 @@ $('.msg-del', context).click(function() {
|
||||
});
|
||||
});
|
||||
|
||||
$('.re-msg-del', context).click(function() {
|
||||
var msg = $(this).parents('.msg');
|
||||
var cfm;
|
||||
if (msg.find('.msg-del-confirm').length > 0) {
|
||||
cfm = msg.find('.msg-del-confirm');
|
||||
} else {
|
||||
cfm = '<div class="op-confirm msg-del-confirm hide"><p>{% trans "Really want to delete this discussion?" %}</p><button class="yes">{% trans "Yes" %}</button><button class="no">{% trans "No" %}</button></div>';
|
||||
var msg_main = msg.find('.msg-main');
|
||||
var msg_hd = msg.find('.msg-hd');
|
||||
cfm = msg_main.append(cfm).children(':last');
|
||||
cfm.css({'right':msg_main.css('padding-right'), 'top':msg_hd.position().top + msg_hd.height()});
|
||||
}
|
||||
cfm.removeClass('hide');
|
||||
cfm.children('.yes').click(function() {
|
||||
cfm.addClass('hide');
|
||||
$.ajax({
|
||||
url: '{{SITE_ROOT}}user/' + msg.attr('data-id') + '/remsgdel/',
|
||||
dataType:'json',
|
||||
success: function(data) {
|
||||
if (data['success']) {
|
||||
msg.remove();
|
||||
feedback("{% trans "Successfully deleted" %}", 'success');
|
||||
} else {
|
||||
feedback("{% trans "Failed to delete: " %}" + data['err_msg'], 'error');
|
||||
}
|
||||
},
|
||||
error: function() {
|
||||
feedback("{% trans "Failed." %}", 'error');
|
||||
}
|
||||
});
|
||||
});
|
||||
cfm.children('.no').click(function() {
|
||||
cfm.addClass('hide');
|
||||
});
|
||||
});
|
||||
|
||||
$('.msg-main', context).hover(
|
||||
function(){
|
||||
$(this).find('.op').removeClass('vh');
|
||||
|
@@ -1,5 +1,6 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
import os
|
||||
import datetime
|
||||
import simplejson as json
|
||||
from django.http import HttpResponse, HttpResponseBadRequest, \
|
||||
HttpResponseRedirect , Http404
|
||||
@@ -123,7 +124,28 @@ def user_msg_remove(request, msg_id):
|
||||
else:
|
||||
# Test whether user is admin or message owner.
|
||||
if msg.from_email == request.user.username:
|
||||
msg.delete()
|
||||
msg.sender_deleted_at = datetime.datetime.now()
|
||||
msg.save()
|
||||
return HttpResponse(json.dumps({'success': True}),
|
||||
content_type='application/json; charset=utf-8')
|
||||
else:
|
||||
return HttpResponse(json.dumps({'success': False, 'err_msg': _(u"You don't have the permission.")}),
|
||||
content_type='application/json; charset=utf-8')
|
||||
|
||||
@login_required
|
||||
def user_received_msg_remove(request, msg_id):
|
||||
"""Remove received message.
|
||||
"""
|
||||
try:
|
||||
msg = UserMessage.objects.get(message_id=msg_id)
|
||||
except UserMessage.DoesNotExist:
|
||||
return HttpResponse(json.dumps({'success': False, 'err_msg':_(u"The message doesn't exist")}),
|
||||
content_type='application/json; charset=utf-8')
|
||||
else:
|
||||
# Test whether current user is the recipient of this msg.
|
||||
if msg.to_email == request.user.username:
|
||||
msg.recipient_deleted_at = datetime.datetime.now()
|
||||
msg.save()
|
||||
return HttpResponse(json.dumps({'success': True}),
|
||||
content_type='application/json; charset=utf-8')
|
||||
else:
|
||||
|
@@ -10,7 +10,7 @@ from seahub.views.file import view_file, view_history_file, view_trash_file,\
|
||||
from seahub.views.repo import repo, repo_history_view
|
||||
from notifications.views import notification_list
|
||||
from group.views import group_list
|
||||
from message.views import user_msg_list, user_msg_remove
|
||||
from message.views import user_msg_list, user_msg_remove, user_received_msg_remove
|
||||
from share.views import user_share_list, gen_private_file_share, \
|
||||
rm_private_file_share, save_private_file_share
|
||||
from seahub.views.wiki import personal_wiki, personal_wiki_pages, \
|
||||
@@ -103,6 +103,7 @@ urlpatterns = patterns('',
|
||||
url(r'^convert_cmmt_desc_link/$', convert_cmmt_desc_link, name='convert_cmmt_desc_link'),
|
||||
url(r'^user/(?P<id_or_email>[^/]+)/msgs/$', user_msg_list, name='user_msg_list'),
|
||||
url(r'^user/(?P<msg_id>\d+)/msgdel/$', user_msg_remove, name='user_msg_remove'),
|
||||
url(r'^user/(?P<msg_id>\d+)/remsgdel/$', user_received_msg_remove, name='user_received_msg_remove'),
|
||||
url(r'^user/(?P<id_or_email>[^/]+)/shares/$', user_share_list, name='user_share_list'),
|
||||
url(r'^modules/toggle/$', toggle_modules, name="toggle_modules"),
|
||||
url(r'^download_client_program/$', TemplateView.as_view(template_name="download.html"), name="download_client"),
|
||||
|
Reference in New Issue
Block a user