Changeset 857 in main


Ignore:
Timestamp:
03/07/12 15:50:13 (10 years ago)
Author:
pcosquer
Message:

groups: allow only the owner or guest to resend an invitation

Location:
trunk/openPLM/plmapp
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/openPLM/plmapp/controllers/group.py

    r834 r857  
    216216        if invitation.state != models.Invitation.PENDING: 
    217217            raise ValueError("Invalid invitation") 
     218        if self._user != invitation.guest: 
     219            raise PermissionError("You can not send this invitation.") 
    218220        ctx = { "group" : self.object, 
    219221                "invitation" : invitation, 
    220222                "guest" : self._user, 
    221223                } 
    222         subject = "[PLM] %s ask you to join the group %s" % (self._user, self.name)  
     224        subject = "[PLM] %s asks you to join the group %s" % (self._user, self.name)  
    223225        self._send_mail(send_mail, subject, [self.owner], ctx, "mails/invitation2") 
    224226 
     
    235237        if invitation.state != models.Invitation.PENDING: 
    236238            raise ValueError("Invalid invitation") 
     239        if self._user != invitation.owner: 
     240            raise PermissionError("You can not send this invitation.") 
    237241        ctx = { "group" : self.object, 
    238242                "invitation" : invitation, 
  • trunk/openPLM/plmapp/tests/views.py

    r847 r857  
    17171717        self._do_test_accept_invitation_get() 
    17181718 
     1719    def _do_test_accept_invitation_post_error(self): 
     1720        mail.outbox = [] 
     1721        inv = m.Invitation.objects.get(group=self.group, 
     1722                guest=self.brian, owner=self.user) 
     1723        data = {"invitation" : inv.pk } 
     1724        response = self.client.post(self.group_url + "invitation/accept/%s/" % inv.token, 
     1725                data=data) 
     1726        self.assertTemplateUsed(response, "error.html") 
     1727        # checks that brian does not belong to the group 
     1728        self.assertFalse(self.brian.groups.filter(id=self.group.id).exists()) 
     1729        self.assertEqual(0, len(mail.outbox)) 
     1730        inv = m.Invitation.objects.get(group=self.group, 
     1731                guest=self.brian, owner=self.user) 
     1732        self.assertEqual(m.Invitation.PENDING, inv.state) 
     1733 
     1734    def test_accept_invitation_from_guest_post_error(self): 
     1735        """ 
     1736        Tests the page to accept an invitation, post version, 
     1737        Error: not the guest asks and accepts. 
     1738        """ 
     1739        GroupController(self.group, self.brian).ask_to_join() 
     1740        self.client.login(username="Brian", password="life") 
     1741        self._do_test_accept_invitation_post_error() 
     1742 
     1743    def test_accept_invitation_from_owner_post_error(self): 
     1744        """ 
     1745        Tests the page to accept an invitation, post version. 
     1746        Error: the owner adds and accepts. 
     1747        """ 
     1748        self.controller.add_user(self.brian) 
     1749        self._do_test_accept_invitation_post_error() 
     1750 
    17191751    def _do_test_accept_invitation_post(self): 
    17201752        mail.outbox = [] 
     
    18181850        self._do_test_refuse_invitation_post() 
    18191851 
     1852    def _do_test_refuse_invitation_post_error(self): 
     1853        mail.outbox = [] 
     1854        inv = m.Invitation.objects.get(group=self.group, 
     1855                guest=self.brian, owner=self.user) 
     1856        data = {"invitation" : inv.pk } 
     1857        response = self.client.post(self.group_url + "invitation/refuse/%s/" % inv.token, 
     1858                data=data) 
     1859        self.assertTemplateUsed(response, "error.html") 
     1860        # checks that brian does not belong to the group 
     1861        self.assertFalse(self.brian.groups.filter(id=self.group.id).exists()) 
     1862        self.assertEqual(0, len(mail.outbox)) 
     1863        inv = m.Invitation.objects.get(group=self.group, 
     1864                guest=self.brian, owner=self.user) 
     1865        self.assertEqual(m.Invitation.PENDING, inv.state) 
     1866 
     1867    def test_refuse_invitation_from_guest_post_error(self): 
     1868        """ 
     1869        Tests the page to refuse an invitation, post version, 
     1870        Error: not the guest asks and refuses. 
     1871        """ 
     1872        GroupController(self.group, self.brian).ask_to_join() 
     1873        self.client.login(username="Brian", password="life") 
     1874        self._do_test_refuse_invitation_post_error() 
     1875 
     1876    def test_refuse_invitation_from_owner_post_error(self): 
     1877        """ 
     1878        Tests the page to refuse an invitation, post version. 
     1879        Error: the owner adds and refuses. 
     1880        """ 
     1881        self.controller.add_user(self.brian) 
     1882        self._do_test_refuse_invitation_post_error() 
     1883 
     1884    def _do_test_send_invitation_post_error(self): 
     1885        mail.outbox = [] 
     1886        inv = m.Invitation.objects.get(group=self.group, 
     1887                guest=self.brian, owner=self.user) 
     1888        data = {"invitation" : inv.pk } 
     1889        response = self.client.post(self.group_url + "invitation/send/%s/" % inv.token, 
     1890                data=data) 
     1891        self.assertTemplateUsed(response, "error.html") 
     1892        # checks that brian does not belong to the group 
     1893        self.assertFalse(self.brian.groups.filter(id=self.group.id).exists()) 
     1894        self.assertEqual(0, len(mail.outbox)) 
     1895        inv = m.Invitation.objects.get(group=self.group, 
     1896                guest=self.brian, owner=self.user) 
     1897        self.assertEqual(m.Invitation.PENDING, inv.state) 
     1898 
     1899    def test_send_invitation_from_guest_post_error(self): 
     1900        """ 
     1901        Tests the page to send an invitation, post version, 
     1902        Error: not the guest asks and sends. 
     1903        """ 
     1904        GroupController(self.group, self.brian).ask_to_join() 
     1905        self._do_test_send_invitation_post_error() 
     1906 
     1907    def test_send_invitation_from_owner_post_error(self): 
     1908        """ 
     1909        Tests the page to send an invitation, post version. 
     1910        Error: the owner adds and sends. 
     1911        """ 
     1912        self.controller.add_user(self.brian) 
     1913        self.client.login(username="Brian", password="life") 
     1914        self._do_test_send_invitation_post_error() 
     1915 
    18201916    def _do_test_send_invitation_get(self): 
    18211917        mail.outbox = [] 
     
    18331929        """ 
    18341930        GroupController(self.group, self.brian).ask_to_join() 
     1931        self.client.login(username="Brian", password="life") 
    18351932        self._do_test_send_invitation_get() 
    18361933 
     
    18591956        """ 
    18601957        GroupController(self.group, self.brian).ask_to_join() 
     1958        self.client.login(username="Brian", password="life") 
    18611959        self._do_test_send_invitation_post(False) 
    18621960     
     
    18661964        """ 
    18671965        self.controller.add_user(self.brian) 
    1868         self.client.login(username="Brian", password="life") 
    18691966        self._do_test_send_invitation_get() 
    18701967 
     
    18741971        """ 
    18751972        self.controller.add_user(self.brian) 
    1876         self.client.login(username="Brian", password="life") 
    18771973        self._do_test_send_invitation_post(True) 
    18781974 
Note: See TracChangeset for help on using the changeset viewer.