Merge branch '1.2.x'

Conflicts:
	modoboa/extensions/limits/tests.py
	modoboa/lib/permissions.py
This commit is contained in:
Antoine Nguyen
2015-03-11 13:35:21 +01:00
5 changed files with 40 additions and 23 deletions
+1
View File
@@ -90,6 +90,7 @@ class User(PermissionsMixin):
for ooentry in self.objectaccess_set.filter(is_owner=True):
if ooentry.content_object is not None:
grant_access_to_object(owner, ooentry.content_object, True)
ungrant_access_to_object(ooentry.content_object, self)
events.raiseEvent("AccountDeleted", self, fromuser, **kwargs)
ungrant_access_to_object(self)
+7 -3
View File
@@ -49,15 +49,19 @@ class AliasTestCase(ModoTestCase):
)
self.assertEqual(user.mailbox_set.first().alias_set.count(), 1)
self.assertEqual(
user.mailbox_set.first().alias_set.first(), "toto@test.com")
user.mailbox_set.first().alias_set.first().full_address,
"toto@test.com"
)
values = {
"email": "Titi@test.com", "recipient": "user@test.com",
"email": "Titi@test.com", "recipients": "user@test.com",
"enabled": True
}
self.ajax_post(reverse("admin:alias_add"), values)
self.assertEqual(
user.mailbox_set.first().alias_set.first(), "titi@test.com")
user.mailbox_set.first().alias_set.first().full_address,
"titi@test.com"
)
def test_dlist(self):
values = dict(email="all@test.com",
@@ -19,6 +19,7 @@ class DomainAliasTestCase(ModoTestCase):
domal = DomainAlias()
domal.name = "domalias.net"
domal.target = dom
domal.enabled = True
domal.save()
self.assertEqual(dom.domainalias_count, 1)
+21
View File
@@ -40,8 +40,29 @@ class PermissionsTestCase(ModoTestCase):
)
self.assertEqual(resp, "Permission denied")
def test_delete_forward(self):
"""Delete a forward created by a user.
This test was added to help fixing #689.
"""
self.clt.logout()
self.clt.login(username="user@test2.com", password="toto")
values = {
"dest": "rcpt@dest.com",
"keepcopies": True
}
self.ajax_post(reverse("user_forward"), values)
user = User.objects.get(username="user@test2.com")
self.clt.logout()
self.clt.login(username="admin", password="password")
self.ajax_post(reverse("admin:account_delete", args=[user.pk]))
class ResourceTestCase(ModoTestCase):
fixtures = ["initial_users.json"]
def setUp(self):
+10 -20
View File
@@ -48,22 +48,15 @@ def grant_access_to_object(user, obj, is_owner=False):
:param obj: an admin. object (Domain, Mailbox, ...)
:param is_owner: the user is the unique object's owner
"""
ct = ContentType.objects.get_for_model(obj)
try:
entry = user.objectaccess_set.get(content_type=ct, object_id=obj.id)
entry.is_owner = is_owner
entry.save()
except ObjectAccess.DoesNotExist:
pass
else:
return
ObjectAccess.objects.create(
user=user, content_type=ct, object_id=obj.id, is_owner=is_owner
)
if not is_owner:
return
from modoboa.core.models import User
ct = ContentType.objects.get_for_model(obj)
entry, created = ObjectAccess.objects.get_or_create(
user=user, content_type=ct, object_id=obj.id)
entry.is_owner = is_owner
entry.save()
if not created or not is_owner:
return
for su in User.objects.filter(is_superuser=True):
if su == user:
continue
@@ -83,11 +76,8 @@ def grant_access_to_objects(user, objects, ct):
:param ct: the content type
"""
for obj in objects:
try:
ObjectAccess.objects.create(
user=user, content_type=ct, object_id=obj.id)
except IntegrityError:
pass
ObjectAccess.objects.get_or_create(
user=user, content_type=ct, object_id=obj.id)
def ungrant_access_to_object(obj, user=None):