mirror of
https://github.com/haiwen/seahub.git
synced 2025-09-25 14:50:29 +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.
|
others and others send to he/she.
|
||||||
"""
|
"""
|
||||||
return super(UserMessageManager, self).filter(
|
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):
|
def get_messages_between_users(self, user1, user2):
|
||||||
"""List messages between two users.
|
"""List messages between two users.
|
||||||
"""
|
"""
|
||||||
return super(UserMessageManager, self).filter(
|
return super(UserMessageManager, self).filter(
|
||||||
(Q(from_email=user1)&Q(to_email=user2)) |
|
(Q(from_email=user1)&Q(to_email=user2)&Q(sender_deleted_at__isnull=True)) |
|
||||||
(Q(from_email=user2)&Q(to_email=user1))).order_by('-timestamp')
|
(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):
|
def add_unread_message(self, user1, user2, msg):
|
||||||
"""Add a new message sent from ``user1`` to ``user2``.
|
"""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)
|
to_email = LowerCaseCharField(max_length=255, db_index=True)
|
||||||
timestamp = models.DateTimeField(default=datetime.datetime.now)
|
timestamp = models.DateTimeField(default=datetime.datetime.now)
|
||||||
ifread = models.BooleanField()
|
ifread = models.BooleanField()
|
||||||
|
sender_deleted_at = models.DateTimeField(null=True, blank=True)
|
||||||
|
recipient_deleted_at = models.DateTimeField(null=True, blank=True)
|
||||||
objects = UserMessageManager()
|
objects = UserMessageManager()
|
||||||
|
|
||||||
def __unicode__(self):
|
def __unicode__(self):
|
||||||
|
@@ -39,10 +39,10 @@
|
|||||||
<ul class="msg-list">
|
<ul class="msg-list">
|
||||||
{% for msg in person_msgs.object_list %}
|
{% for msg in person_msgs.object_list %}
|
||||||
{% if msg.to_email == request.user.email %}
|
{% 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>
|
<a href="{% url 'user_profile' msg.from_email|id_or_email %}" class="pic fright">{% avatar msg.from_email 48 %}</a>
|
||||||
{% else %}
|
{% 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>
|
<a href="{% url 'user_profile' msg.from_email|id_or_email %}" class="pic fleft">{% avatar msg.from_email 48 %}</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<div class="txt">
|
<div class="txt">
|
||||||
@@ -50,6 +50,8 @@
|
|||||||
<div class="msg-hd w100 ovhd">
|
<div class="msg-hd w100 ovhd">
|
||||||
{% if msg.from_email == request.user.username %}
|
{% if msg.from_email == request.user.username %}
|
||||||
<span class="msg-del op fright vh">{% trans "Delete" %}</span>
|
<span class="msg-del op fright vh">{% trans "Delete" %}</span>
|
||||||
|
{% else %}
|
||||||
|
<span class="re-msg-del op fright vh">{% trans "Delete" %}</span>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<a class="author" href="{% url 'user_profile' msg.from_email|id_or_email %}">{{ msg.from_email|email2nickname }}</a>
|
<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>
|
<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(
|
$('.msg-main', context).hover(
|
||||||
function(){
|
function(){
|
||||||
$(this).find('.op').removeClass('vh');
|
$(this).find('.op').removeClass('vh');
|
||||||
|
@@ -1,5 +1,6 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
import os
|
import os
|
||||||
|
import datetime
|
||||||
import simplejson as json
|
import simplejson as json
|
||||||
from django.http import HttpResponse, HttpResponseBadRequest, \
|
from django.http import HttpResponse, HttpResponseBadRequest, \
|
||||||
HttpResponseRedirect , Http404
|
HttpResponseRedirect , Http404
|
||||||
@@ -123,7 +124,28 @@ def user_msg_remove(request, msg_id):
|
|||||||
else:
|
else:
|
||||||
# Test whether user is admin or message owner.
|
# Test whether user is admin or message owner.
|
||||||
if msg.from_email == request.user.username:
|
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}),
|
return HttpResponse(json.dumps({'success': True}),
|
||||||
content_type='application/json; charset=utf-8')
|
content_type='application/json; charset=utf-8')
|
||||||
else:
|
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 seahub.views.repo import repo, repo_history_view
|
||||||
from notifications.views import notification_list
|
from notifications.views import notification_list
|
||||||
from group.views import group_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, \
|
from share.views import user_share_list, gen_private_file_share, \
|
||||||
rm_private_file_share, save_private_file_share
|
rm_private_file_share, save_private_file_share
|
||||||
from seahub.views.wiki import personal_wiki, personal_wiki_pages, \
|
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'^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<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+)/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'^user/(?P<id_or_email>[^/]+)/shares/$', user_share_list, name='user_share_list'),
|
||||||
url(r'^modules/toggle/$', toggle_modules, name="toggle_modules"),
|
url(r'^modules/toggle/$', toggle_modules, name="toggle_modules"),
|
||||||
url(r'^download_client_program/$', TemplateView.as_view(template_name="download.html"), name="download_client"),
|
url(r'^download_client_program/$', TemplateView.as_view(template_name="download.html"), name="download_client"),
|
||||||
|
Reference in New Issue
Block a user