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))