From 457702be4750da003229622e67f54ff798b8b5f4 Mon Sep 17 00:00:00 2001 From: Mikko Nieminen Date: Mon, 3 Feb 2025 13:13:49 +0100 Subject: [PATCH] add project leaving (#918) --- CHANGELOG.rst | 1 + .../app_projectroles/sodar_role_list.png | Bin 106357 -> 113372 bytes docs/source/app_projectroles_usage.rst | 22 +- docs/source/major_changes.rst | 3 +- projectroles/email.py | 44 +- .../projectroles/_project_role_ops.html | 84 ++- .../templates/projectroles/project_roles.html | 20 +- .../roleassignment_confirm_delete_own.html | 55 ++ projectroles/tests/test_permissions.py | 543 +++++------------- projectroles/tests/test_ui.py | 27 +- projectroles/tests/test_views.py | 249 +++++++- projectroles/urls.py | 5 + projectroles/views.py | 199 ++++++- 13 files changed, 745 insertions(+), 507 deletions(-) create mode 100644 projectroles/templates/projectroles/roleassignment_confirm_delete_own.html diff --git a/CHANGELOG.rst b/CHANGELOG.rst index c61d2fc2..d89151c9 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -35,6 +35,7 @@ Added - ``SODARUserSerializer`` ``auth_type`` field (#1501) - ``UserRetrieveAPIView`` REST API view (#1555) - ``active`` arg in ``ProjectInviteMixin.make_invite()`` (#1403) + - Ability for users to leave project (#918) Changed ------- diff --git a/docs/source/_static/app_projectroles/sodar_role_list.png b/docs/source/_static/app_projectroles/sodar_role_list.png index bb6ba2469ce2282d062400a57d62946710dceee6..3150769db0f2980c365115be1150d3b65b2bfb1b 100644 GIT binary patch literal 113372 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 z zADfp&6>5_P?$&Y0oNEYt^!sLt|Yev)tU?= zEfC23k41@&WRDcelC1`5JkDXltv@{^p$;I)6aH*E%5U%iLd7T2n-VS z8F2xQI>-P{ICdPkb%@0Q;Btm+ydbmCzQW=9F0h|FgL({W zSs}=_&?fjj{$>HA1mo$C2FavO|2yO9L_o#ThRCZv{@a5Yj(~KwZ?OC5g(P^t(TmIO zQhws&?ijY#dCfhcQe9$iB%aIl5H+2<;lmU`J{Jd2&>*xtRN*~Mqh`^`|@TDR@dYL8=qC|_UA?FU+u*BUY? zuSLM`pw+|hDf-8n~%<3EwQnd44H7*!6+AS zDp=M?oY1G_7H>61ZeZf~?04(|z@12QQz(f4G5(gq_DcBe^pggL@|iuBoTlX50gvLG zdw>XW`A*xzj)zk?eHr|qOHIGL(}4Wo@woYE{6vQNj)w6AS$Jl#@07Z~i>|Irbo9p7 z$^8wEVm&>{yNOAe=GZw=FTp#e4EAhct~&0s*Bzl<}*7m&`Rv)Z>EdQp`#0(|AKOe9GBU|xvs zg<)`=K$yssPsT0Y@`bB`g0mUV+7ZOLLHAh3^01~Bcq`Ell+_oUxDfh;WVHl48Zp_B zHj+_}m!OHU-gfo3;QEWss&WTU&ZUtf($4du>pk}6dN%55A!9c2W2XF3yKeS?4H8PD zuWib1!j!tymK#Sr{3s?bP)LiiiJfwabw|@WIgQ%bS*F za<%j*3(=)0Vb!S5Mng|{Ow}>wp#@Bi)vZo$_RTNGRYIYZpTTd8?&OQXzP*_7a_m2Z zRX`)?iq+~H@u&}j9dB?&^4*~dV21}%=ojd!-PU{$&NsuddEn*ola@W5C}CNbG0$a8 zcipQEMP=vF;Os|zP6<=OB^xo5yDAhPc7>64E;u@7L*)i!O=q#A+E$nS=e)1N87_k`p1#V(Jdk zd%Rj1ck(WvmwZ$#@HEd>kcy9u8RSCU@EfRb=8Ug(c-ysM7gNp)0{&*Y*DoHX2TRyd zJk5piGRxC$^4tR4b<>6?GX_JLxxUW6%XB17(zn+8qL**HCorU~>(Ar2KXFR<=K@i! zGcpFXdM%Aa*2{g4e|0iNXX)_z$yR1i_GWWu_ww)fdj&G@gbGQYray5;uRj*m_fD;4 z?!OhXoCVr&Nm!;6KL?OEP)WaEYjDfSiU6*&6$&{t7+bt;475u9=y$o+zby6d4pKVO z>V_Mx!6jc0hX=e`zsR5i`Co`RfWFdQqn+1=xePe9H3TSQUKFMpy3iYY`E%__{9d?c z*te#KyNz7W&xO1T0RAA0>|1=UMk5gtZS0egGhNSaCIM_j5#W-5=m?uWQ?w6)gqdKnY|!Pfs3M{KEm2w6px-I!1?$^-eI& z
- - + + diff --git a/projectroles/templates/projectroles/project_roles.html b/projectroles/templates/projectroles/project_roles.html index 5acd09ba..781ceb13 100644 --- a/projectroles/templates/projectroles/project_roles.html +++ b/projectroles/templates/projectroles/project_roles.html @@ -33,15 +33,33 @@ {% get_role_perms project request.user as role_perms %} {% get_info_link finder_info as finder_info_link %} +{% get_display_name project.type title=True as project_type_title %}

- {% get_display_name project.type title=True %} Members + {{ project_type_title }} Members

+
+ + + + Leave {{ project_type_title }} + + {% if role_perms.can_update_members or role_perms.can_invite %} {% include 'projectroles/_project_role_ops.html' %} {% endif %} +
diff --git a/projectroles/templates/projectroles/roleassignment_confirm_delete_own.html b/projectroles/templates/projectroles/roleassignment_confirm_delete_own.html new file mode 100644 index 00000000..fce1da46 --- /dev/null +++ b/projectroles/templates/projectroles/roleassignment_confirm_delete_own.html @@ -0,0 +1,55 @@ +{% extends 'projectroles/project_base.html' %} + +{% load rules %} +{% load projectroles_tags %} +{% load projectroles_common_tags %} + +{% block title %} + Confirm Leaving {{ object.project.title }} +{% endblock title %} + +{% block projectroles_extend %} + +{% get_display_name object.project.type as project_type %} + +
+

Confirm Leaving {{ object.project.title }}

+ + + {% if inh_child_projects %} + + {% endif %} + +
+ {% csrf_token %} +
+ + Cancel + + +
+
+
+ +{% endblock projectroles_extend %} diff --git a/projectroles/tests/test_permissions.py b/projectroles/tests/test_permissions.py index 6b72d27a..ef3ea9ee 100644 --- a/projectroles/tests/test_permissions.py +++ b/projectroles/tests/test_permissions.py @@ -283,202 +283,64 @@ class TestGeneralViews(ProjectPermissionTestBase): def test_get_home(self): """Test HomeView GET""" url = reverse('home') - good_users = [ - self.superuser, - self.user_owner_cat, - self.user_delegate_cat, - self.user_contributor_cat, - self.user_guest_cat, - self.user_finder_cat, - self.user_owner, - self.user_delegate, - self.user_contributor, - self.user_guest, - self.user_no_roles, - ] - bad_users = [self.anonymous] - self.assert_response(url, good_users, 200) - self.assert_response(url, bad_users, 302) + self.assert_response(url, self.auth_users, 200) + self.assert_response(url, self.anonymous, 302) @override_settings(PROJECTROLES_ALLOW_ANONYMOUS=True) def test_get_home_anon(self): """Test HomeView GET with anonymous access""" url = reverse('home') - good_users = [ - self.superuser, - self.user_owner_cat, - self.user_delegate_cat, - self.user_contributor_cat, - self.user_guest_cat, - self.user_finder_cat, - self.user_owner, - self.user_delegate, - self.user_contributor, - self.user_guest, - self.user_no_roles, - self.anonymous, - ] - self.assert_response(url, good_users, 200) + self.assert_response(url, self.all_users, 200) def test_get_home_read_only(self): """Test HomeView GET with site read-only mode""" self.set_site_read_only() url = reverse('home') - good_users = [ - self.superuser, - self.user_owner_cat, - self.user_delegate_cat, - self.user_contributor_cat, - self.user_guest_cat, - self.user_finder_cat, - self.user_owner, - self.user_delegate, - self.user_contributor, - self.user_guest, - self.user_no_roles, - ] - bad_users = [self.anonymous] - self.assert_response(url, good_users, 200) - self.assert_response(url, bad_users, 302) + self.assert_response(url, self.auth_users, 200) + self.assert_response(url, self.anonymous, 302) def test_get_search(self): """Test ProjectSearchResultsView GET""" url = reverse('projectroles:search') + '?' + urlencode({'s': 'test'}) - good_users = [ - self.superuser, - self.user_owner_cat, - self.user_delegate_cat, - self.user_contributor_cat, - self.user_guest_cat, - self.user_finder_cat, - self.user_owner, - self.user_delegate, - self.user_contributor, - self.user_guest, - self.user_no_roles, - ] - bad_users = [self.anonymous] - self.assert_response(url, good_users, 200) - self.assert_response(reverse('home'), bad_users, 302) + self.assert_response(url, self.auth_users, 200) + self.assert_response(url, self.anonymous, 302) @override_settings(PROJECTROLES_ALLOW_ANONYMOUS=True) def test_get_search_anon(self): """Test ProjectSearchResultsView GET with anonymous access""" url = reverse('projectroles:search') + '?' + urlencode({'s': 'test'}) - good_users = [ - self.superuser, - self.user_owner_cat, - self.user_delegate_cat, - self.user_contributor_cat, - self.user_guest_cat, - self.user_finder_cat, - self.user_owner, - self.user_delegate, - self.user_contributor, - self.user_guest, - self.user_no_roles, - self.anonymous, - ] - self.assert_response(url, good_users, 200) + self.assert_response(url, self.all_users, 200) def test_get_search_read_only(self): """Test ProjectSearchResultsView GET with site read-only mode""" self.set_site_read_only() url = reverse('projectroles:search') + '?' + urlencode({'s': 'test'}) - good_users = [ - self.superuser, - self.user_owner_cat, - self.user_delegate_cat, - self.user_contributor_cat, - self.user_guest_cat, - self.user_finder_cat, - self.user_owner, - self.user_delegate, - self.user_contributor, - self.user_guest, - self.user_no_roles, - ] - bad_users = [self.anonymous] - self.assert_response(url, good_users, 200) - self.assert_response(reverse('home'), bad_users, 302) + self.assert_response(url, self.auth_users, 200) + self.assert_response(url, self.anonymous, 302) def test_get_search_advanced(self): """Test ProjectAdvancedSearchView GET""" url = reverse('projectroles:search_advanced') - good_users = [ - self.superuser, - self.user_owner_cat, - self.user_delegate_cat, - self.user_contributor_cat, - self.user_guest_cat, - self.user_finder_cat, - self.user_owner, - self.user_delegate, - self.user_contributor, - self.user_guest, - self.user_no_roles, - ] - bad_users = [self.anonymous] - self.assert_response(url, good_users, 200) - self.assert_response(reverse('home'), bad_users, 302) + self.assert_response(url, self.auth_users, 200) + self.assert_response(url, self.anonymous, 302) @override_settings(PROJECTROLES_ALLOW_ANONYMOUS=True) def test_get_search_advanced_anon(self): """Test ProjectAdvancedSearchView GET with anonymous access""" url = reverse('projectroles:search_advanced') - good_users = [ - self.superuser, - self.user_owner_cat, - self.user_delegate_cat, - self.user_contributor_cat, - self.user_guest_cat, - self.user_finder_cat, - self.user_owner, - self.user_delegate, - self.user_contributor, - self.user_guest, - self.user_no_roles, - self.anonymous, - ] - self.assert_response(url, good_users, 200) + self.assert_response(url, self.all_users, 200) def test_get_login(self): """Test LoginView GET""" url = reverse('login') - good_users = [ - self.superuser, - self.user_owner_cat, - self.user_delegate_cat, - self.user_contributor_cat, - self.user_guest_cat, - self.user_finder_cat, - self.user_owner, - self.user_delegate, - self.user_contributor, - self.user_guest, - self.anonymous, - ] - self.assert_response(url, good_users, 200) + self.assert_response(url, self.all_users, 200) def test_get_logout(self): """Test logout view GET""" url = reverse('logout') - good_users = [ - self.superuser, - self.user_owner_cat, - self.user_delegate_cat, - self.user_contributor_cat, - self.user_guest_cat, - self.user_finder_cat, - self.user_owner, - self.user_delegate, - self.user_contributor, - self.user_guest, - self.user_no_roles, - ] self.assert_response( url, - good_users, + self.auth_users, 302, redirect_user='/login/', redirect_anon='/login/', @@ -487,24 +349,10 @@ def test_get_logout(self): def test_get_admin(self): """Test admin view GET""" url = '/admin/' - good_users = [self.superuser] - bad_users = [ - self.user_owner_cat, - self.user_delegate_cat, - self.user_contributor_cat, - self.user_guest_cat, - self.user_finder_cat, - self.user_owner, - self.user_delegate, - self.user_contributor, - self.user_guest, - self.user_no_roles, - self.anonymous, - ] - self.assert_response(url, good_users, 200) + self.assert_response(url, self.superuser, 200) self.assert_response( url, - bad_users, + self.non_superusers, 302, redirect_user='/admin/login/?next=/admin/', redirect_anon='/admin/login/?next=/admin/', @@ -514,24 +362,10 @@ def test_get_admin(self): def test_get_admin_anon(self): """Test admin view GET with anonymous access""" url = '/admin/' - good_users = [self.superuser] - bad_users = [ - self.user_owner_cat, - self.user_delegate_cat, - self.user_contributor_cat, - self.user_guest_cat, - self.user_finder_cat, - self.user_owner, - self.user_delegate, - self.user_contributor, - self.user_guest, - self.user_no_roles, - self.anonymous, - ] - self.assert_response(url, good_users, 200) + self.assert_response(url, self.superuser, 200) self.assert_response( url, - bad_users, + self.non_superusers, 302, redirect_user='/admin/login/?next=/admin/', redirect_anon='/admin/login/?next=/admin/', @@ -967,21 +801,7 @@ def test_get_read_only(self): def test_get_category_with_children(self): """Test GET with category and children""" - bad_users = [ - self.superuser, # We don't even allow this for superusers - self.user_owner_cat, - self.user_delegate_cat, - self.user_contributor_cat, - self.user_guest_cat, - self.user_finder_cat, - self.user_owner, - self.user_delegate, - self.user_contributor, - self.user_guest, - self.user_no_roles, - self.anonymous, - ] - self.assert_response(self.url_cat, bad_users, 302) + self.assert_response(self.url_cat, self.all_users, 302) self.project.set_public() self.assert_response(self.url_cat, self.user_no_roles, 302) @@ -1031,21 +851,7 @@ def test_get_remote_not_revoked(self): site=site, level=SODAR_CONSTANTS['REMOTE_LEVEL_READ_ROLES'], ) - bad_users = [ - self.superuser, - self.user_owner_cat, - self.user_delegate_cat, - self.user_contributor_cat, - self.user_guest_cat, - self.user_finder_cat, - self.user_owner, - self.user_delegate, - self.user_contributor, - self.user_guest, - self.user_no_roles, - self.anonymous, - ] - self.assert_response(self.url, bad_users, 302) + self.assert_response(self.url, self.all_users, 302) self.project.set_public() self.assert_response(self.url, self.user_no_roles, 302) @@ -1107,21 +913,7 @@ def test_get_remote_not_revoked_target(self): site=site, level=SODAR_CONSTANTS['REMOTE_LEVEL_READ_ROLES'], ) - bad_users = [ - self.superuser, - self.user_owner_cat, - self.user_delegate_cat, - self.user_contributor_cat, - self.user_guest_cat, - self.user_finder_cat, - self.user_owner, - self.user_delegate, - self.user_contributor, - self.user_guest, - self.user_no_roles, - self.anonymous, - ] - self.assert_response(self.url, bad_users, 302) + self.assert_response(self.url, self.all_users, 302) self.project.set_public() self.assert_response(self.url, self.user_no_roles, 302) @@ -1451,21 +1243,7 @@ def test_get_owner(self): 'projectroles:role_update', kwargs={'roleassignment': self.owner_as.sodar_uuid}, ) - bad_users = [ - self.superuser, - self.user_owner_cat, - self.user_delegate_cat, - self.user_contributor_cat, - self.user_guest_cat, - self.user_finder_cat, - self.user_owner, - self.user_delegate, - self.user_contributor, - self.user_guest, - self.user_no_roles, - self.anonymous, - ] - self.assert_response(url, bad_users, 302) + self.assert_response(url, self.all_users, 302) self.project.set_public() self.assert_response(url, self.user_no_roles, 302) @@ -1608,21 +1386,7 @@ def test_get_owner(self): 'projectroles:role_delete', kwargs={'roleassignment': self.owner_as.sodar_uuid}, ) - bad_users = [ - self.superuser, - self.user_owner_cat, - self.user_delegate_cat, - self.user_contributor_cat, - self.user_guest_cat, - self.user_finder_cat, - self.user_owner, - self.user_delegate, - self.user_contributor, - self.user_guest, - self.user_no_roles, - self.anonymous, - ] - self.assert_response(url, bad_users, 302) + self.assert_response(url, self.all_users, 302) self.project.set_public() self.assert_response(url, self.user_no_roles, 302) @@ -1664,6 +1428,87 @@ def test_get_delegate(self): self.assert_response(url, self.user_no_roles, 302) +class TestRoleAssignmentOwnDeleteView(ProjectPermissionTestBase): + """Tests for RoleAssignmentOwnDeleteView permissions""" + + def setUp(self): + super().setUp() + self.url = reverse( + 'projectroles:role_delete_own', + kwargs={'roleassignment': self.contributor_as.sodar_uuid}, + ) + self.url_cat = reverse( + 'projectroles:role_delete_own', + kwargs={'roleassignment': self.contributor_as_cat.sodar_uuid}, + ) + + def test_get(self): + """Test RoleAssignmentOwnDeleteView GET""" + good_users = [self.user_contributor] + bad_users = [u for u in self.all_users if u != self.user_contributor] + self.assert_response(self.url, good_users, 200) + self.assert_response(self.url, bad_users, 302) + self.project.set_public() + self.assert_response(self.url, self.user_no_roles, 302) + + @override_settings(PROJECTROLES_ALLOW_ANONYMOUS=True) + def test_get_anon(self): + """Test GET with anonymous access""" + self.project.set_public() + self.assert_response( + self.url, [self.user_no_roles, self.anonymous], 302 + ) + + def test_get_archive(self): + """Test GET with archived project""" + self.project.set_archive() + good_users = [self.user_contributor] + bad_users = [u for u in self.all_users if u != self.user_contributor] + self.assert_response(self.url, good_users, 200) + self.assert_response(self.url, bad_users, 302) + self.project.set_public() + self.assert_response(self.url, self.user_no_roles, 302) + + def test_get_read_only(self): + """Test GET with site read-only mode""" + self.set_site_read_only() + self.assert_response(self.url, self.all_users, 302) + + def test_get_category(self): + """Test GET with category""" + good_users = [self.user_contributor_cat] + bad_users = [ + u for u in self.all_users if u != self.user_contributor_cat + ] + self.assert_response(self.url_cat, good_users, 200) + self.assert_response(self.url_cat, bad_users, 302) + self.project.set_public() + self.assert_response(self.url_cat, self.user_no_roles, 302) + + @override_settings(PROJECTROLES_ALLOW_ANONYMOUS=True) + def test_get_category_anon(self): + """Test GET with category and anonymous access""" + self.project.set_public() + self.assert_response( + self.url_cat, [self.user_no_roles, self.anonymous], 302 + ) + + def test_get_category_read_only(self): + """Test GET with category and site read-only mode""" + self.set_site_read_only() + self.assert_response(self.url, self.all_users, 302) + + def test_get_owner(self): + """Test GET with owner role (should fail)""" + url = reverse( + 'projectroles:role_delete_own', + kwargs={'roleassignment': self.owner_as.sodar_uuid}, + ) + self.assert_response(url, self.all_users, 302) + self.project.set_public() + self.assert_response(url, self.user_no_roles, 302) + + class TestRoleAssignmentOwnerTransferView(ProjectPermissionTestBase): """Tests for RoleAssignmentOwnerTransferView permissions""" @@ -2241,22 +2086,8 @@ def test_get_project_update(self): def test_get_create_top(self): """Test ProjectCreateView GET""" url = reverse('projectroles:create') - good_users = [self.superuser] - bad_users = [ - self.user_owner_cat, - self.user_delegate_cat, - self.user_contributor_cat, - self.user_guest_cat, - self.user_finder_cat, - self.user_owner, - self.user_delegate, - self.user_contributor, - self.user_guest, - self.user_no_roles, - self.anonymous, - ] - self.assert_response(url, good_users, 200) - self.assert_response(url, bad_users, 302) + self.assert_response(url, self.superuser, 200) + self.assert_response(url, self.non_superusers, 302) # TODO: Add separate tests for local/remote creation # TODO: Remote creation should fail @@ -2291,21 +2122,7 @@ def test_get_project_create_remote(self): url = reverse( 'projectroles:create', kwargs={'project': self.category.sodar_uuid} ) - bad_users = [ - self.superuser, - self.user_owner_cat, - self.user_delegate_cat, - self.user_contributor_cat, - self.user_guest_cat, - self.user_finder_cat, - self.user_owner, - self.user_delegate, - self.user_contributor, - self.user_guest, - self.user_no_roles, - self.anonymous, - ] - self.assert_response(url, bad_users, 302) + self.assert_response(url, self.all_users, 302) @override_settings(PROJECTROLES_TARGET_CREATE=False) def test_get_project_create_disallowed(self): @@ -2313,21 +2130,9 @@ def test_get_project_create_disallowed(self): url = reverse( 'projectroles:create', kwargs={'project': self.category.sodar_uuid} ) - bad_users = [ - self.superuser, - self.user_owner_cat, - self.user_delegate_cat, - self.user_contributor_cat, - self.user_guest_cat, - self.user_finder_cat, - self.user_owner, - self.user_delegate, - self.user_contributor, - self.user_guest, - self.user_no_roles, - self.anonymous, - ] - self.assert_response(url, bad_users, 302, redirect_anon=reverse('home')) + self.assert_response( + url, self.all_users, 302, redirect_anon=reverse('home') + ) def test_get_role_create(self): """Test RoleAssignmentCreateView GET""" @@ -2335,21 +2140,9 @@ def test_get_role_create(self): 'projectroles:role_create', kwargs={'project': self.project.sodar_uuid}, ) - bad_users = [ - self.superuser, - self.user_owner_cat, - self.user_delegate_cat, - self.user_contributor_cat, - self.user_guest_cat, - self.user_finder_cat, - self.user_owner, - self.user_delegate, - self.user_contributor, - self.user_guest, - self.user_no_roles, - self.anonymous, - ] - self.assert_response(url, bad_users, 302, redirect_anon=reverse('home')) + self.assert_response( + url, self.all_users, 302, redirect_anon=reverse('home') + ) def test_get_role_update(self): """Test RoleAssignmentUpdateView GET""" @@ -2357,21 +2150,9 @@ def test_get_role_update(self): 'projectroles:role_update', kwargs={'roleassignment': self.contributor_as.sodar_uuid}, ) - bad_users = [ - self.superuser, - self.user_owner_cat, - self.user_delegate_cat, - self.user_contributor_cat, - self.user_guest_cat, - self.user_finder_cat, - self.user_owner, - self.user_delegate, - self.user_contributor, - self.user_guest, - self.user_no_roles, - self.anonymous, - ] - self.assert_response(url, bad_users, 302, redirect_anon=reverse('home')) + self.assert_response( + url, self.all_users, 302, redirect_anon=reverse('home') + ) def test_get_role_update_delegate(self): """Test RoleAssignmentUpdateView GET for delegate role""" @@ -2379,21 +2160,9 @@ def test_get_role_update_delegate(self): 'projectroles:role_update', kwargs={'roleassignment': self.delegate_as.sodar_uuid}, ) - bad_users = [ - self.superuser, - self.user_owner_cat, - self.user_delegate_cat, - self.user_contributor_cat, - self.user_guest_cat, - self.user_finder_cat, - self.user_owner, - self.user_delegate, - self.user_contributor, - self.user_guest, - self.user_no_roles, - self.anonymous, - ] - self.assert_response(url, bad_users, 302, redirect_anon=reverse('home')) + self.assert_response( + url, self.all_users, 302, redirect_anon=reverse('home') + ) def test_get_role_delete(self): """Test RoleAssignmentDeleteView GET""" @@ -2401,20 +2170,10 @@ def test_get_role_delete(self): 'projectroles:role_delete', kwargs={'roleassignment': self.contributor_as.sodar_uuid}, ) - bad_users = [ - self.user_owner_cat, - self.user_delegate_cat, - self.user_contributor_cat, - self.user_guest_cat, - self.user_finder_cat, - self.user_owner, - self.user_delegate, - self.user_contributor, - self.user_guest, - self.user_no_roles, - self.anonymous, - ] - self.assert_response(url, bad_users, 302, redirect_anon=reverse('home')) + # TODO: Superuser? + self.assert_response( + url, self.all_users, 302, redirect_anon=reverse('home') + ) def test_get_role_delete_delegate(self): """Test RoleAssignmentDeleteView GET for delegate role""" @@ -2422,21 +2181,9 @@ def test_get_role_delete_delegate(self): 'projectroles:role_delete', kwargs={'roleassignment': self.delegate_as.sodar_uuid}, ) - bad_users = [ - self.anonymous, - self.superuser, - self.user_owner_cat, - self.user_delegate_cat, - self.user_contributor_cat, - self.user_guest_cat, - self.user_finder_cat, - self.user_owner, - self.user_delegate, - self.user_contributor, - self.user_guest, - self.user_no_roles, - ] - self.assert_response(url, bad_users, 302, redirect_anon=reverse('home')) + self.assert_response( + url, self.all_users, 302, redirect_anon=reverse('home') + ) def test_get_project_invite_create(self): """Test ProjectInviteCreateView GET""" @@ -2444,42 +2191,18 @@ def test_get_project_invite_create(self): 'projectroles:invite_create', kwargs={'project': self.project.sodar_uuid}, ) - bad_users = [ - self.superuser, - self.user_owner_cat, - self.user_delegate_cat, - self.user_contributor_cat, - self.user_guest_cat, - self.user_finder_cat, - self.user_owner, - self.user_delegate, - self.user_contributor, - self.user_guest, - self.user_no_roles, - self.anonymous, - ] - self.assert_response(url, bad_users, 302, redirect_anon=reverse('home')) + self.assert_response( + url, self.all_users, 302, redirect_anon=reverse('home') + ) def test_get_project_invite_list(self): """Test ProjectInviteListView GET""" url = reverse( 'projectroles:invites', kwargs={'project': self.project.sodar_uuid} ) - bad_users = [ - self.superuser, - self.user_owner_cat, - self.user_delegate_cat, - self.user_contributor_cat, - self.user_guest_cat, - self.user_finder_cat, - self.user_owner, - self.user_delegate, - self.user_contributor, - self.user_guest, - self.user_no_roles, - self.anonymous, - ] - self.assert_response(url, bad_users, 302, redirect_anon=reverse('home')) + self.assert_response( + url, self.all_users, 302, redirect_anon=reverse('home') + ) @override_settings(PROJECTROLES_SITE_MODE=SITE_MODE_TARGET) diff --git a/projectroles/tests/test_ui.py b/projectroles/tests/test_ui.py index 4bf1c252..a11d96e1 100644 --- a/projectroles/tests/test_ui.py +++ b/projectroles/tests/test_ui.py @@ -2107,6 +2107,32 @@ def setUp(self): 'projectroles:roles', kwargs={'project': self.project.sodar_uuid} ) + def test_leave_button_owner(self): + """Test rendering leave project button as owner""" + self.login_and_redirect(self.user_owner, self.url) + elem = self.selenium.find_element(By.ID, 'sodar-pr-btn-leave-project') + self.assertEqual(elem.get_attribute('disabled'), 'true') + + def test_leave_button_contributor(self): + """Test rendering leave project button as contributor""" + self.login_and_redirect(self.user_contributor, self.url) + elem = self.selenium.find_element(By.ID, 'sodar-pr-btn-leave-project') + self.assertIsNone(elem.get_attribute('disabled')) + + def test_leave_button_inherit(self): + """Test rendering leave project button as inherited contributor""" + self.login_and_redirect(self.user_contributor_cat, self.url) + elem = self.selenium.find_element(By.ID, 'sodar-pr-btn-leave-project') + self.assertEqual(elem.get_attribute('disabled'), 'true') + + @override_settings(PROJECTROLES_SITE_MODE=SITE_MODE_TARGET) + def test_leave_button_target(self): + """Test rendering leave project button as target""" + self.set_up_as_target(projects=[self.category, self.project]) + self.login_and_redirect(self.user_contributor, self.url) + elem = self.selenium.find_element(By.ID, 'sodar-pr-btn-leave-project') + self.assertEqual(elem.get_attribute('disabled'), 'true') + def test_role_ops(self): """Test rendering role operations dropdown""" good_users = [self.superuser, self.user_owner, self.user_delegate] @@ -2228,7 +2254,6 @@ def test_role_dropdown_owner_local(self): self.assertIsNotNone( elem.find_element(By.CLASS_NAME, 'sodar-pr-role-item-transfer') ) - # TODO: Assert link enabling/disabling after updating owner transfer def test_role_dropdown_owner_inherited(self): """Test role dropdown items for inherited owner""" diff --git a/projectroles/tests/test_views.py b/projectroles/tests/test_views.py index 465441cb..7627c2bf 100644 --- a/projectroles/tests/test_views.py +++ b/projectroles/tests/test_views.py @@ -34,6 +34,7 @@ SUBJECT_ROLE_CREATE, SUBJECT_ROLE_UPDATE, SUBJECT_ROLE_DELETE, + SUBJECT_ROLE_LEAVE, SUBJECT_ACCEPT, SUBJECT_EXPIRY, ) @@ -69,6 +70,9 @@ FORM_INVALID_MSG, PROJECT_WELCOME_MSG, USER_PROFILE_LDAP_MSG, + ROLE_LEAVE_INHERIT_MSG, + ROLE_LEAVE_OWNER_MSG, + ROLE_LEAVE_REMOTE_MSG, ROLE_FINDER_INFO, INVITE_LDAP_LOCAL_VIEW_MSG, INVITE_LOCAL_NOT_ALLOWED_MSG, @@ -2823,49 +2827,63 @@ def test_post_invalid_host_name(self): self.assertEqual(Project.objects.count(), 2) -class TestProjectRoleView(ProjectMixin, RoleAssignmentMixin, ViewTestBase): +class TestProjectRoleView( + ProjectMixin, RoleAssignmentMixin, RemoteTargetMixin, ViewTestBase +): """Tests for ProjectRoleView""" def setUp(self): super().setUp() + # Set up users + self.user_owner_cat = self.make_user('user_owner_cat') + self.user_owner = self.make_user('user_owner') + self.user_delegate = self.make_user('user_delegate') + self.user_guest = self.make_user('user_guest') + # Set up projects and roles + self.category = self.make_project( + 'TestCategory', PROJECT_TYPE_CATEGORY, None + ) + self.owner_as_cat = self.make_assignment( + self.category, self.user_owner_cat, self.role_owner + ) self.project = self.make_project( - 'TestProject', PROJECT_TYPE_PROJECT, None + 'TestProject', PROJECT_TYPE_PROJECT, self.category ) - # Set superuser as owner self.owner_as = self.make_assignment( - self.project, self.user, self.role_owner + self.project, self.user_owner, self.role_owner ) - # Set new user as delegate - self.user_delegate = self.make_user('user_delegate') self.delegate_as = self.make_assignment( self.project, self.user_delegate, self.role_delegate ) - # Set another new user as guest (= one of the member roles) - self.user_guest = self.make_user('user_guest') self.guest_as = self.make_assignment( self.project, self.user_guest, self.role_guest ) + self.url = reverse( + 'projectroles:roles', + kwargs={'project': self.project.sodar_uuid}, + ) def test_get(self): """Test ProjectRoleView GET""" - with self.login(self.user): - response = self.client.get( - reverse( - 'projectroles:roles', - kwargs={'project': self.project.sodar_uuid}, - ) - ) + with self.login(self.user_owner): + response = self.client.get(self.url) self.assertEqual(response.status_code, 200) self.assertEqual(response.context['project'].pk, self.project.pk) - expected = [ { 'id': self.owner_as.pk, 'project': self.project.pk, 'role': self.role_owner.pk, - 'user': self.user.pk, + 'user': self.user_owner.pk, 'sodar_uuid': self.owner_as.sodar_uuid, }, + { + 'id': self.owner_as_cat.pk, + 'project': self.category.pk, + 'role': self.role_owner.pk, + 'user': self.user_owner_cat.pk, + 'sodar_uuid': self.owner_as_cat.sodar_uuid, + }, { 'id': self.delegate_as.pk, 'project': self.project.pk, @@ -2891,10 +2909,51 @@ def test_get(self): categories='categories', projects='projects' ), ) + self.assertEqual(response.context['own_local_as'], self.owner_as) + self.assertEqual(response.context['project_leave_access'], False) + self.assertEqual( + response.context['project_leave_msg'], ROLE_LEAVE_OWNER_MSG + ) + + def test_get_inherited(self): + """Test GET as user with inherited role""" + with self.login(self.user_owner_cat): + response = self.client.get(self.url) + self.assertEqual(response.status_code, 200) + self.assertEqual(response.context['own_local_as'], None) + self.assertEqual(response.context['project_leave_access'], False) + self.assertEqual( + response.context['project_leave_msg'], + ROLE_LEAVE_INHERIT_MSG.format(category_type='category'), + ) + + def test_get_guest(self): + """Test GET as guest""" + with self.login(self.user_guest): + response = self.client.get(self.url) + self.assertEqual(response.status_code, 200) + self.assertEqual(response.context['own_local_as'], self.guest_as) + self.assertEqual(response.context['project_leave_access'], True) + self.assertEqual(response.context['project_leave_msg'], '') + + @override_settings(PROJECTROLES_SITE_MODE=SITE_MODE_TARGET) + def test_get_guest_target(self): + """Test GET as guest on target site""" + self.set_up_as_target([self.project]) + self.assertEqual(self.project.is_remote(), True) + with self.login(self.user_guest): + response = self.client.get(self.url) + self.assertEqual(response.status_code, 200) + self.assertEqual(response.context['own_local_as'], self.guest_as) + self.assertEqual(response.context['project_leave_access'], False) + self.assertEqual( + response.context['project_leave_msg'], + ROLE_LEAVE_REMOTE_MSG.format(project_type='Project'), + ) def test_get_not_found(self): """Test GET view with invalid project UUID""" - with self.login(self.user): + with self.login(self.user_owner): response = self.client.get( reverse( 'projectroles:roles', @@ -3815,6 +3874,9 @@ def test_post(self): ) self.assertEqual(alert.active, True) self.assertEqual(RoleAssignment.objects.all().count(), 3) + self.assertEqual( + TimelineEvent.objects.filter(event_name='role_delete').count(), 0 + ) self.assertEqual( self.app_alert_model.objects.filter( alert_name='role_delete' @@ -3832,6 +3894,9 @@ def test_post(self): ), ) self.assertEqual(RoleAssignment.objects.all().count(), 2) + self.assertEqual( + TimelineEvent.objects.filter(event_name='role_delete').count(), 1 + ) self.assertEqual( self.app_alert_model.objects.filter( alert_name='role_delete' @@ -4070,6 +4135,154 @@ def test_post_app_settings_children(self): ) +class TestRoleAssignmentOwnDeleteView( + ProjectMixin, RoleAssignmentMixin, ViewTestBase +): + """Tests for RoleAssignmentOwnDeleteView""" + + def setUp(self): + super().setUp() + self.category = self.make_project( + 'TestCategory', PROJECT_TYPE_CATEGORY, None + ) + self.owner_as_cat = self.make_assignment( + self.category, self.user, self.role_owner + ) + self.project = self.make_project( + 'TestProject', PROJECT_TYPE_PROJECT, self.category + ) + self.owner_as = self.make_assignment( + self.project, self.user, self.role_owner + ) + # Create guest user and role + self.user_contrib = self.make_user('user_contrib') + self.contrib_as = self.make_assignment( + self.project, self.user_contrib, self.role_contributor + ) + self.user_new = self.make_user('user_new') + # Set up helpers + self.app_alerts = get_backend_api('appalerts_backend') + self.app_alert_model = self.app_alerts.get_model() + + def test_get(self): + """Test RoleAssignmentOwnDeleteView GET""" + url = reverse( + 'projectroles:role_delete_own', + kwargs={'roleassignment': self.contrib_as.sodar_uuid}, + ) + with self.login(self.user_contrib): + response = self.client.get(url) + self.assertEqual(response.context['inh_child_projects'], []) + self.assertEqual(response.status_code, 200) + + def test_get_category_inherited(self): + """Test GET with category and inherited role""" + new_as = self.make_assignment( + self.category, self.user_new, self.role_contributor + ) + url = reverse( + 'projectroles:role_delete_own', + kwargs={'roleassignment': new_as.sodar_uuid}, + ) + with self.login(self.user_new): + response = self.client.get(url) + self.assertEqual(response.context['inh_child_projects'], [self.project]) + self.assertEqual(response.status_code, 200) + + def test_get_category_child_local(self): + """Test GET with category and local child role""" + new_as = self.make_assignment( + self.category, self.user_new, self.role_contributor + ) + self.make_assignment(self.project, self.user_new, self.role_contributor) + url = reverse( + 'projectroles:role_delete_own', + kwargs={'roleassignment': new_as.sodar_uuid}, + ) + with self.login(self.user_new): + response = self.client.get(url) + self.assertEqual(response.context['inh_child_projects'], []) + self.assertEqual(response.status_code, 200) + + def test_get_owner(self): + """Test GET with owner role (should fail)""" + url = reverse( + 'projectroles:role_delete_own', + kwargs={'roleassignment': self.owner_as.sodar_uuid}, + ) + with self.login(self.user): + response = self.client.get(url) + self.assertEqual(response.status_code, 302) + + def test_post(self): + """Test POST""" + self.assertEqual(RoleAssignment.objects.count(), 3) + self.assertIsNotNone( + RoleAssignment.objects.filter( + project=self.project, user=self.user_contrib + ).first() + ) + self.assertEqual( + TimelineEvent.objects.filter(event_name='role_delete').count(), 0 + ) + self.assertEqual( + self.app_alert_model.objects.filter( + alert_name='role_delete_own' + ).count(), + 0, + ) + self.assertEqual(len(mail.outbox), 0) + + url = reverse( + 'projectroles:role_delete_own', + kwargs={'roleassignment': self.contrib_as.sodar_uuid}, + ) + with self.login(self.user_contrib): + response = self.client.post(url) + self.assertRedirects(response, reverse('home')) + + self.assertEqual(RoleAssignment.objects.count(), 2) + self.assertIsNone( + RoleAssignment.objects.filter( + project=self.project, user=self.user_contrib + ).first() + ) + self.assertEqual( + TimelineEvent.objects.filter(event_name='role_delete').count(), 1 + ) + self.assertEqual( + self.app_alert_model.objects.filter( + alert_name='role_delete_own' + ).count(), + 1, + ) + self.assertEqual( + self.app_alert_model.objects.get(alert_name='role_delete_own').user, + self.user, + ) + self.assertEqual(len(mail.outbox), 1) + self.assertIn( + SUBJECT_ROLE_LEAVE.format( + user_name=self.user_contrib.username, + project_label='project', + project=self.project.title, + ), + mail.outbox[0].subject, + ) + + def test_post_owner(self): + """Test POST with owner role (should fail)""" + self.assertEqual(RoleAssignment.objects.count(), 3) + url = reverse( + 'projectroles:role_delete_own', + kwargs={'roleassignment': self.owner_as.sodar_uuid}, + ) + with self.login(self.user): + response = self.client.post(url) + self.assertRedirects(response, reverse('home')) + self.assertEqual(RoleAssignment.objects.count(), 3) + + class TestRoleAssignmentOwnerTransferView( ProjectMixin, RoleAssignmentMixin, ViewTestBase ): diff --git a/projectroles/urls.py b/projectroles/urls.py index c8db589e..b841a5a0 100644 --- a/projectroles/urls.py +++ b/projectroles/urls.py @@ -78,6 +78,11 @@ view=views.RoleAssignmentDeleteView.as_view(), name='role_delete', ), + path( + route='members/delete/own/', + view=views.RoleAssignmentOwnDeleteView.as_view(), + name='role_delete_own', + ), path( route='members/owner/transfer/', view=views.RoleAssignmentOwnerTransferView.as_view(), diff --git a/projectroles/views.py b/projectroles/views.py index 3caa6d7a..8b6f97af 100644 --- a/projectroles/views.py +++ b/projectroles/views.py @@ -126,6 +126,12 @@ ROLE_CREATE_MSG = 'Membership granted with the role of "{role}".' ROLE_UPDATE_MSG = 'Member role changed to "{role}".' ROLE_DELETE_MSG = 'Your membership in this {project_type} has been removed.' +ROLE_LEAVE_MSG = 'Member {user_name} left the {project_type}.' +ROLE_LEAVE_INHERIT_MSG = 'Role inherited from parent {category_type}' +ROLE_LEAVE_OWNER_MSG = 'Owner role must be transferred to another user' +ROLE_LEAVE_REMOTE_MSG = ( + '{project_type} is remote, role must be changed on source site' +) ROLE_FINDER_INFO = ( 'User can see nested {categories} and {projects}, but can not access them ' 'without having a role explicitly assigned.' @@ -1906,6 +1912,7 @@ class ProjectRoleView( def get_context_data(self, *args, **kwargs): project = self.get_project() + project_remote = project.is_remote() context = super().get_context_data(*args, **kwargs) context['roles'] = sorted( project.get_roles(), key=lambda x: [x.role.rank, x.user.username] @@ -1924,6 +1931,28 @@ def get_context_data(self, *args, **kwargs): categories=get_display_name(PROJECT_TYPE_CATEGORY, plural=True), projects=get_display_name(PROJECT_TYPE_PROJECT, plural=True), ) + if self.request.user.is_authenticated: + own_local_as = RoleAssignment.objects.filter( + project=project, user=self.request.user + ).first() + context['own_local_as'] = own_local_as + context['project_leave_access'] = ( + own_local_as is not None + and own_local_as.role.rank > ROLE_RANKING[PROJECT_ROLE_OWNER] + and not project_remote + ) + leave_msg = '' + if not own_local_as: + leave_msg = ROLE_LEAVE_INHERIT_MSG.format( + category_type=get_display_name(PROJECT_TYPE_CATEGORY) + ) + elif own_local_as.role.rank == ROLE_RANKING[PROJECT_ROLE_OWNER]: + leave_msg = ROLE_LEAVE_OWNER_MSG + elif project_remote: + leave_msg = ROLE_LEAVE_REMOTE_MSG.format( + project_type=get_display_name(project.type, title=True) + ) + context['project_leave_msg'] = leave_msg return context @@ -2082,10 +2111,10 @@ def form_valid(self, form): class RoleAssignmentDeleteMixin(ProjectModifyPluginViewMixin): """Mixin for RoleAssignment deletion/destroying in UI and API views""" - @transaction.atomic - def _update_app_alerts(self, app_alerts, project, user, inh_as): + @classmethod + def _add_user_alert(cls, app_alerts, project, user, inh_as=None): """ - Update app alerts for user on role assignment deletion. Creates a new + Create app alert for user on role assignment deletion. Creates a new alert as appropriate and dismisses alerts in projects the user can no longer access. @@ -2102,22 +2131,6 @@ def _update_app_alerts(self, app_alerts, project, user, inh_as): message = ROLE_DELETE_MSG.format( project_type=get_display_name(project.type) ) - # Dismiss existing alerts - AppAlert = app_alerts.get_model() - dis_projects = [project] - if project.type == PROJECT_TYPE_CATEGORY: - for c in project.get_children(flat=True): - c_role_as = RoleAssignment.objects.filter( - project=c, user=user - ).first() - if not c.public_guest_access and not c_role_as: - dis_projects.append(c) - for a in AppAlert.objects.filter( - user=user, project__in=dis_projects, active=True - ): - a.active = False - a.save() - app_alerts.add_alert( app_name=APP_NAME, alert_name='role_{}'.format('update' if inh_as else 'delete'), @@ -2126,6 +2139,60 @@ def _update_app_alerts(self, app_alerts, project, user, inh_as): project=project, ) + @classmethod + def _add_leave_alerts(cls, app_alerts, project, user): + """ + Send alerts to project owners and delegates about user leaving. + + :param app_alerts: AppAlertAPI object + :param project: Project object + :param user: SODARUser object + """ + recipients = [ + a.user + for a in project.get_roles( + max_rank=ROLE_RANKING[PROJECT_ROLE_DELEGATE] + ) + if a.user != user + ] + for r in recipients: + app_alerts.add_alert( + app_name=APP_NAME, + alert_name='role_delete_own', + user=r, + message=ROLE_LEAVE_MSG.format( + user_name=user.username, + project_type=get_display_name(project.type), + ), + project=project, + ) + + @classmethod + @transaction.atomic + def _dismiss_user_alerts(cls, app_alerts, project, user): + """ + Dismiss user alerts in project and children without local role. + + :param app_alerts: AppAlertAPI object + :param project: Project object + :param user: SODARUser object + """ + AppAlert = app_alerts.get_model() + dis_projects = [project] + if project.type == PROJECT_TYPE_CATEGORY: + for c in project.get_children(flat=True): + c_role_as = RoleAssignment.objects.filter( + project=c, user=user + ).first() + # TODO: Fix handling of children (see #1556) + if not c.public_guest_access and not c_role_as: + dis_projects.append(c) + for a in AppAlert.objects.filter( + user=user, project__in=dis_projects, active=True + ): + a.active = False + a.save() + def delete_assignment(self, role_as, request=None, notify=True): """ Delete RoleAssignment. Calls the modify API for additional actions, @@ -2177,15 +2244,21 @@ def delete_assignment(self, role_as, request=None, notify=True): if tl_event: tl_event.set_status(timeline.TL_STATUS_OK) - if notify: - inh_as = project.get_role(user, inherited_only=True) - if app_alerts: - self._update_app_alerts(app_alerts, project, user, inh_as) - if ( - SEND_EMAIL - and request - and app_settings.get(APP_NAME, 'notify_email_role', user=user) - ): + if not notify: + return role_as + + inh_as = project.get_role(user, inherited_only=True) + if app_alerts: + if request and request.user == user: + self._add_leave_alerts(app_alerts, project, user) + else: + self._add_user_alert(app_alerts, project, user, inh_as) + if not inh_as: + self._dismiss_user_alerts(app_alerts, project, user) + if SEND_EMAIL and request: + if request and request.user == user: + email.send_project_leave_mail(project, user, request) + elif app_settings.get(APP_NAME, 'notify_email_role', user=user): if inh_as: email.send_role_change_mail( 'update', project, user, inh_as.role, request @@ -2367,6 +2440,76 @@ def post(self, *args, **kwargs): ) +class RoleAssignmentOwnDeleteView( + LoginRequiredMixin, + LoggedInPermissionMixin, + ProjectContextMixin, + RoleAssignmentDeleteMixin, + DeleteView, +): + """RoleAssignment deletion view for leaving project""" + + model = RoleAssignment + # Perm overridden in has_permission() + permission_required = 'projectroles.view_project' + slug_url_kwarg = 'roleassignment' + slug_field = 'sodar_uuid' + template_name = 'projectroles/roleassignment_confirm_delete_own.html' + + def has_permission(self): + """ + Override has_permission() for one time check for view perms. + + NOTE: Single use case so we're not writing a common rules perm + """ + role_as = self.get_object() + user = self.request.user + if ( + app_settings.get('projectroles', 'site_read_only') + or role_as.user != user + or role_as.role.rank < ROLE_RANKING[PROJECT_ROLE_DELEGATE] + ): + return False + return True + + def get_context_data(self, *args, **kwargs): + context = super().get_context_data(*args, **kwargs) + role_as = self.get_object() + user = role_as.user + children = role_as.project.get_children(flat=True) + local_child_projects = [ + a.project + for a in RoleAssignment.objects.filter( + user=user, project__in=children + ) + ] + context['inh_child_projects'] = [ + p for p in children if p not in local_child_projects + ] + return context + + def post(self, *args, **kwargs): + role_as = self.get_object() + project = role_as.project + try: + self.object = self.delete_assignment( + role_as=role_as, request=self.request + ) + messages.success( + self.request, 'Successfully left {}.'.format(project.title) + ) + return redirect(reverse('home')) + except Exception as ex: + messages.error( + self.request, 'Failed to leave {}: {}'.format(project.title, ex) + ) + return redirect( + reverse( + 'projectroles:roles', kwargs={'project': project.sodar_uuid} + ) + ) + + class RoleAssignmentOwnerTransferMixin(ProjectModifyPluginViewMixin): """Mixin for owner RoleAssignment transfer in UI and API views"""

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 l)@ag`LUF?lSFhuhnn;SaaH`)xtU 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 for more information on how to support this feature in your apps. - AppSettingAPI Definition Getter Return Data ------------------------------------------- @@ -114,7 +114,6 @@ REST API View Changes * ``TimelineEventRetrieveAPIView``: Return ``user`` as UUID instead of ``SODARUserSerializer`` dict - Deprecated Features ------------------- diff --git a/projectroles/email.py b/projectroles/email.py index bbbd344e..b004bec6 100644 --- a/projectroles/email.py +++ b/projectroles/email.py @@ -10,7 +10,11 @@ from django.utils.timezone import localtime from projectroles.app_settings import AppSettingAPI -from projectroles.models import SODARUserAdditionalEmail +from projectroles.models import ( + SODARUserAdditionalEmail, + SODAR_CONSTANTS, + ROLE_RANKING, +) from projectroles.plugins import get_app_plugin from projectroles.utils import get_display_name @@ -26,6 +30,9 @@ DEBUG = settings.DEBUG SITE_TITLE = settings.SITE_INSTANCE_TITLE +# SODAR constants +PROJECT_ROLE_DELEGATE = SODAR_CONSTANTS['PROJECT_ROLE_DELEGATE'] + # Local constants APP_NAME = 'projectroles' EMAIL_RE = re.compile(r'(^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$)') @@ -67,6 +74,7 @@ SUBJECT_ROLE_CREATE = 'Membership granted for {project_label} "{project}"' SUBJECT_ROLE_UPDATE = 'Membership changed in {project_label} "{project}"' SUBJECT_ROLE_DELETE = 'Membership removed from {project_label} "{project}"' +SUBJECT_ROLE_LEAVE = 'Member {user_name} left {project_label} "{project}"' MESSAGE_ROLE_CREATE = r''' {issuer} has granted you the membership @@ -90,6 +98,12 @@ {issuer} has removed your membership from {project_label} "{project}". '''.lstrip() +MESSAGE_ROLE_LEAVE = r''' +Member {user_name} has left the {project_label} "{project}". +For them to regain access, it has to be granted again by {project_label} +owner or delegate. +'''.lstrip() + # Invite Template -------------------------------------------------------------- @@ -505,6 +519,34 @@ def send_role_change_mail(change_type, project, user, role, request): ) +def send_project_leave_mail(project, user, request=None): + """ + Send email to project owners and delegates when a user leaves a project. + + :param project: Project object + :param user: User object + :param request: HttpRequest object or None + :return: Amount of sent email (int) + """ + p_label = get_display_name(project.type) + subject = SUBJECT_ROLE_LEAVE.format( + user_name=user.username, project_label=p_label, project=project.title + ) + message = MESSAGE_ROLE_LEAVE.format( + user_name=user.username, project_label=p_label, project=project.title + ) + mail_count = 0 + recipients = [ + a.user + for a in project.get_roles(max_rank=ROLE_RANKING[PROJECT_ROLE_DELEGATE]) + if a.user != user + and app_settings.get(APP_NAME, 'notify_email_role', user=a.user) + ] + for r in recipients: + mail_count += send_mail(subject, message, get_user_addr(r), request) + return mail_count + + def send_invite_mail(invite, request): """ Send an email invitation to user not yet registered in the system. diff --git a/projectroles/templates/projectroles/_project_role_ops.html b/projectroles/templates/projectroles/_project_role_ops.html index 128f1bc0..20f3e3aa 100644 --- a/projectroles/templates/projectroles/_project_role_ops.html +++ b/projectroles/templates/projectroles/_project_role_ops.html @@ -1,44 +1,42 @@ -