def organizer_pre_delete(sender, instance, **kwargs): """Called before an Organizer is deleted Removes competition-specific permissions from corresponding user """ for permission_code in Competition.get_organizer_permissions(): remove_perm(permission_code, instance.user, instance.competition)
def test_permissions_removed(self): """Organizers permissions are removed when deleted""" self.space_org.delete() for permission in Competition.get_organizer_permissions(): # No longer have space perms self.assertFalse(self.alice.has_perm(permission, self.space)) # But still have galapagos perms self.assertTrue(self.alice.has_perm(permission, self.galapagos))
def organizer_post_save(sender, instance, created, **kwargs): """Called after an Organizer is saved Adds competition-specific permissions to corresponding user """ # If django is filling in fixtures, don't change anything if kwargs['raw']: return # If we just made this organizer, grant them organizer permissions if created: for permission_code in Competition.get_organizer_permissions(): assign(permission_code, instance.user, instance.competition)
def test_permissions_set(self): """Organizers permissions are set when created""" for permission in Competition.get_organizer_permissions(): # Have both space and galapagos perms self.assertTrue(self.alice.has_perm(permission, self.space)) self.assertTrue(self.alice.has_perm(permission, self.galapagos))