19_Tests #40
@ -380,7 +380,7 @@ class NewEcoAccountForm(AbstractCompensationForm, CompensationResponsibleFormMix
 | 
			
		||||
                legal=legal
 | 
			
		||||
            )
 | 
			
		||||
            acc.fundings.set(fundings)
 | 
			
		||||
            acc.users.add(user)
 | 
			
		||||
            acc.share_with(user)
 | 
			
		||||
 | 
			
		||||
            # Add the log entry to the main objects log list
 | 
			
		||||
            acc.log.add(action)
 | 
			
		||||
 | 
			
		||||
@ -235,12 +235,13 @@ class Compensation(AbstractCompensation):
 | 
			
		||||
        Checks whether a given user has access to this object
 | 
			
		||||
 | 
			
		||||
        Args:
 | 
			
		||||
            user ():
 | 
			
		||||
            user (User): The user to be checked
 | 
			
		||||
 | 
			
		||||
        Returns:
 | 
			
		||||
 | 
			
		||||
        """
 | 
			
		||||
        return self.intervention.users.filter(id=user.id)
 | 
			
		||||
        # Compensations inherit their shared state from the interventions
 | 
			
		||||
        return self.intervention.is_shared_with(user)
 | 
			
		||||
 | 
			
		||||
    def get_LANIS_link(self) -> str:
 | 
			
		||||
        """ Generates a link for LANIS depending on the geometry
 | 
			
		||||
 | 
			
		||||
@ -88,7 +88,7 @@ class CompensationViewTestCase(BaseViewTestCase):
 | 
			
		||||
        client = Client()
 | 
			
		||||
        client.login(username=self.superuser.username, password=self.superuser_pw)
 | 
			
		||||
        self.superuser.groups.set([])
 | 
			
		||||
        self.intervention.users.set([self.superuser])
 | 
			
		||||
        self.intervention.share_with_list([self.superuser])
 | 
			
		||||
 | 
			
		||||
        # Since the user has no groups, it does not matter that data has been shared. There SHOULD not be any difference
 | 
			
		||||
        # to a user without access, since the important permissions are missing
 | 
			
		||||
@ -126,7 +126,7 @@ class CompensationViewTestCase(BaseViewTestCase):
 | 
			
		||||
        client.login(username=self.superuser.username, password=self.superuser_pw)
 | 
			
		||||
        self.superuser.groups.set([])
 | 
			
		||||
        # Sharing is inherited by base intervention for compensation. Therefore configure the interventions share state
 | 
			
		||||
        self.intervention.users.set([])
 | 
			
		||||
        self.intervention.share_with_list([])
 | 
			
		||||
 | 
			
		||||
        # Since the user has no groups, it does not matter that data is unshared. There SHOULD not be any difference
 | 
			
		||||
        # to a user having shared access, since all important permissions are missing
 | 
			
		||||
@ -166,7 +166,7 @@ class CompensationViewTestCase(BaseViewTestCase):
 | 
			
		||||
        group = self.groups.get(name=DEFAULT_GROUP)
 | 
			
		||||
        self.superuser.groups.set([group])
 | 
			
		||||
        # Sharing is inherited by base intervention for compensation. Therefore configure the interventions share state
 | 
			
		||||
        self.intervention.users.set([self.superuser])
 | 
			
		||||
        self.intervention.share_with_list([self.superuser])
 | 
			
		||||
 | 
			
		||||
        success_urls = [
 | 
			
		||||
            self.index_url,
 | 
			
		||||
@ -200,7 +200,7 @@ class CompensationViewTestCase(BaseViewTestCase):
 | 
			
		||||
        group = self.groups.get(name=DEFAULT_GROUP)
 | 
			
		||||
        self.superuser.groups.set([group])
 | 
			
		||||
        # Sharing is inherited by base intervention for compensation. Therefore configure the interventions share state
 | 
			
		||||
        self.intervention.users.set([])
 | 
			
		||||
        self.intervention.share_with_list([])
 | 
			
		||||
 | 
			
		||||
        success_urls = [
 | 
			
		||||
            self.index_url,
 | 
			
		||||
@ -271,7 +271,7 @@ class EcoAccountViewTestCase(CompensationViewTestCase):
 | 
			
		||||
        client = Client()
 | 
			
		||||
        client.login(username=self.superuser.username, password=self.superuser_pw)
 | 
			
		||||
        self.superuser.groups.set([])
 | 
			
		||||
        self.eco_account.users.set([self.superuser])
 | 
			
		||||
        self.eco_account.share_with_list([self.superuser])
 | 
			
		||||
 | 
			
		||||
        # Since the user has no groups, it does not matter that data has been shared. There SHOULD not be any difference
 | 
			
		||||
        # to a user without access, since the important permissions are missing
 | 
			
		||||
@ -308,7 +308,7 @@ class EcoAccountViewTestCase(CompensationViewTestCase):
 | 
			
		||||
        client = Client()
 | 
			
		||||
        client.login(username=self.superuser.username, password=self.superuser_pw)
 | 
			
		||||
        self.superuser.groups.set([])
 | 
			
		||||
        self.eco_account.users.set([])
 | 
			
		||||
        self.eco_account.share_with_list([])
 | 
			
		||||
 | 
			
		||||
        # Since the user has no groups, it does not matter that data is unshared. There SHOULD not be any difference
 | 
			
		||||
        # to a user having shared access, since all important permissions are missing
 | 
			
		||||
@ -348,7 +348,7 @@ class EcoAccountViewTestCase(CompensationViewTestCase):
 | 
			
		||||
        group = self.groups.get(name=DEFAULT_GROUP)
 | 
			
		||||
        self.superuser.groups.set([group])
 | 
			
		||||
        # Sharing is inherited by base intervention for compensation. Therefore configure the interventions share state
 | 
			
		||||
        self.eco_account.users.set([self.superuser])
 | 
			
		||||
        self.eco_account.share_with_list([self.superuser])
 | 
			
		||||
 | 
			
		||||
        success_urls = [
 | 
			
		||||
            self.index_url,
 | 
			
		||||
@ -381,7 +381,7 @@ class EcoAccountViewTestCase(CompensationViewTestCase):
 | 
			
		||||
        client.login(username=self.superuser.username, password=self.superuser_pw)
 | 
			
		||||
        group = self.groups.get(name=DEFAULT_GROUP)
 | 
			
		||||
        self.superuser.groups.set([group])
 | 
			
		||||
        self.eco_account.users.set([])
 | 
			
		||||
        self.eco_account.share_with_list([])
 | 
			
		||||
 | 
			
		||||
        success_urls = [
 | 
			
		||||
            self.index_url,
 | 
			
		||||
 | 
			
		||||
@ -21,7 +21,7 @@ class CompensationWorkflowTestCase(BaseWorkflowTestCase):
 | 
			
		||||
        super().setUpTestData()
 | 
			
		||||
 | 
			
		||||
        # Give the user shared access to the dummy intervention -> inherits the access to the compensation
 | 
			
		||||
        cls.intervention.users.add(cls.superuser)
 | 
			
		||||
        cls.intervention.share_with(cls.superuser)
 | 
			
		||||
 | 
			
		||||
        # Make sure the intervention itself would be fine with valid data
 | 
			
		||||
        cls.intervention = cls.fill_out_intervention(cls.intervention)
 | 
			
		||||
@ -142,7 +142,7 @@ class EcoAccountWorkflowTestCase(BaseWorkflowTestCase):
 | 
			
		||||
 | 
			
		||||
        # Add user to conservation office group and give shared access to the account
 | 
			
		||||
        cls.superuser.groups.add(cls.groups.get(name=ETS_GROUP))
 | 
			
		||||
        cls.eco_account.users.set([cls.superuser])
 | 
			
		||||
        cls.eco_account.share_with_list([cls.superuser])
 | 
			
		||||
 | 
			
		||||
    def test_deductability(self):
 | 
			
		||||
        """
 | 
			
		||||
@ -154,7 +154,7 @@ class EcoAccountWorkflowTestCase(BaseWorkflowTestCase):
 | 
			
		||||
 | 
			
		||||
        """
 | 
			
		||||
        # Give user shared access to the dummy intervention, which will be needed here
 | 
			
		||||
        self.intervention.users.add(self.superuser)
 | 
			
		||||
        self.intervention.share_with(self.superuser)
 | 
			
		||||
 | 
			
		||||
        # Prepare data for deduction creation
 | 
			
		||||
        deduct_url = reverse("compensation:acc-new-deduction", args=(self.eco_account.id,))
 | 
			
		||||
 | 
			
		||||
@ -616,7 +616,7 @@ def share_view(request: HttpRequest, id: str, token: str):
 | 
			
		||||
                request,
 | 
			
		||||
                _("{} has been shared with you").format(obj.identifier)
 | 
			
		||||
            )
 | 
			
		||||
            obj.users.add(user)
 | 
			
		||||
            obj.share_with(user)
 | 
			
		||||
        return redirect("compensation:acc-detail", id=id)
 | 
			
		||||
    else:
 | 
			
		||||
        messages.error(
 | 
			
		||||
 | 
			
		||||
@ -83,7 +83,7 @@ class NewEmaForm(AbstractCompensationForm, CompensationResponsibleFormMixin):
 | 
			
		||||
            acc.fundings.set(fundings)
 | 
			
		||||
 | 
			
		||||
            # Add the creating user to the list of shared users
 | 
			
		||||
            acc.users.add(user)
 | 
			
		||||
            acc.share_with(user)
 | 
			
		||||
 | 
			
		||||
            # Add the log entry to the main objects log list
 | 
			
		||||
            acc.log.add(action)
 | 
			
		||||
 | 
			
		||||
@ -97,7 +97,7 @@ class EmaViewTestCase(CompensationViewTestCase):
 | 
			
		||||
 | 
			
		||||
        # Sharing does not have any effect in here, since the default group will prohibit further functionality access
 | 
			
		||||
        # to this user
 | 
			
		||||
        self.ema.users.set([self.superuser])
 | 
			
		||||
        self.ema.share_with_list([self.superuser])
 | 
			
		||||
 | 
			
		||||
        success_urls = [
 | 
			
		||||
            self.index_url,
 | 
			
		||||
@ -143,7 +143,7 @@ class EmaViewTestCase(CompensationViewTestCase):
 | 
			
		||||
 | 
			
		||||
        # Sharing does not have any effect in here, since the default group will prohibit further functionality access
 | 
			
		||||
        # to this user
 | 
			
		||||
        self.ema.users.set([])
 | 
			
		||||
        self.ema.share_with_list([])
 | 
			
		||||
 | 
			
		||||
        success_urls = [
 | 
			
		||||
            self.index_url,
 | 
			
		||||
@ -182,7 +182,7 @@ class EmaViewTestCase(CompensationViewTestCase):
 | 
			
		||||
        groups = self.groups.filter(Q(name=ETS_GROUP)|Q(name=DEFAULT_GROUP))
 | 
			
		||||
        self.superuser.groups.set(groups)
 | 
			
		||||
        # Sharing is inherited by base intervention for compensation. Therefore configure the interventions share state
 | 
			
		||||
        self.ema.users.set([self.superuser])
 | 
			
		||||
        self.ema.share_with_list([self.superuser])
 | 
			
		||||
 | 
			
		||||
        success_urls = [
 | 
			
		||||
            self.index_url,
 | 
			
		||||
@ -218,7 +218,7 @@ class EmaViewTestCase(CompensationViewTestCase):
 | 
			
		||||
        groups = self.groups.filter(Q(name=ETS_GROUP)|Q(name=DEFAULT_GROUP))
 | 
			
		||||
        self.superuser.groups.set(groups)
 | 
			
		||||
        # Sharing is inherited by base intervention for compensation. Therefore configure the interventions share state
 | 
			
		||||
        self.ema.users.set([])
 | 
			
		||||
        self.ema.share_with_list([])
 | 
			
		||||
 | 
			
		||||
        success_urls = [
 | 
			
		||||
            self.index_url,
 | 
			
		||||
 | 
			
		||||
@ -521,7 +521,7 @@ def share_view(request: HttpRequest, id: str, token: str):
 | 
			
		||||
                request,
 | 
			
		||||
                _("{} has been shared with you").format(obj.identifier)
 | 
			
		||||
            )
 | 
			
		||||
            obj.users.add(user)
 | 
			
		||||
            obj.share_with(user)
 | 
			
		||||
        return redirect("ema:detail", id=id)
 | 
			
		||||
    else:
 | 
			
		||||
        messages.error(
 | 
			
		||||
 | 
			
		||||
@ -255,7 +255,7 @@ class NewInterventionForm(BaseForm):
 | 
			
		||||
            intervention.log.add(action)
 | 
			
		||||
 | 
			
		||||
            # Add the performing user as the first user having access to the data
 | 
			
		||||
            intervention.users.add(user)
 | 
			
		||||
            intervention.share_with(user)
 | 
			
		||||
        return intervention
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -99,7 +99,7 @@ class ShareInterventionModalForm(BaseModalForm):
 | 
			
		||||
        accessing_users = User.objects.filter(
 | 
			
		||||
            id__in=self.cleaned_data["users"]
 | 
			
		||||
        )
 | 
			
		||||
        self.instance.users.set(accessing_users)
 | 
			
		||||
        self.instance.share_with_list(accessing_users)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class NewRevocationModalForm(BaseModalForm):
 | 
			
		||||
 | 
			
		||||
@ -323,7 +323,6 @@ class Intervention(BaseObject, ShareableObject, RecordableObject, CheckableObjec
 | 
			
		||||
            comp.log.add(log_entry)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class InterventionDocument(AbstractDocument):
 | 
			
		||||
    """
 | 
			
		||||
    Specializes document upload for an intervention with certain path
 | 
			
		||||
 | 
			
		||||
@ -116,7 +116,7 @@ class InterventionViewTestCase(BaseViewTestCase):
 | 
			
		||||
        # Add user to default group
 | 
			
		||||
        default_group = Group.objects.get(name=DEFAULT_GROUP)
 | 
			
		||||
        self.superuser.groups.set([default_group])
 | 
			
		||||
        self.intervention.users.set([self.superuser])
 | 
			
		||||
        self.intervention.share_with_list([self.superuser])
 | 
			
		||||
 | 
			
		||||
        success_urls = [
 | 
			
		||||
            self.index_url,
 | 
			
		||||
@ -156,7 +156,7 @@ class InterventionViewTestCase(BaseViewTestCase):
 | 
			
		||||
        # Add user to default group
 | 
			
		||||
        default_group = Group.objects.get(name=DEFAULT_GROUP)
 | 
			
		||||
        self.superuser.groups.set([default_group])
 | 
			
		||||
        self.intervention.users.set([])
 | 
			
		||||
        self.intervention.share_with_list([])
 | 
			
		||||
 | 
			
		||||
        success_urls = [
 | 
			
		||||
            self.index_url,
 | 
			
		||||
@ -196,7 +196,7 @@ class InterventionViewTestCase(BaseViewTestCase):
 | 
			
		||||
        # Add user to zb group
 | 
			
		||||
        zb_group = self.groups.get(name=ZB_GROUP)
 | 
			
		||||
        self.superuser.groups.set([zb_group])
 | 
			
		||||
        self.intervention.users.set([self.superuser])
 | 
			
		||||
        self.intervention.share_with_list([self.superuser])
 | 
			
		||||
 | 
			
		||||
        success_urls = [
 | 
			
		||||
            self.index_url,
 | 
			
		||||
@ -236,7 +236,7 @@ class InterventionViewTestCase(BaseViewTestCase):
 | 
			
		||||
        # Add user to zb group
 | 
			
		||||
        zb_group = self.groups.get(name=ZB_GROUP)
 | 
			
		||||
        self.superuser.groups.set([zb_group])
 | 
			
		||||
        self.intervention.users.set([])
 | 
			
		||||
        self.intervention.share_with_list([])
 | 
			
		||||
 | 
			
		||||
        success_urls = [
 | 
			
		||||
            self.index_url,
 | 
			
		||||
@ -276,7 +276,7 @@ class InterventionViewTestCase(BaseViewTestCase):
 | 
			
		||||
        # Add user to ets group
 | 
			
		||||
        ets_group = Group.objects.get(name=ETS_GROUP)
 | 
			
		||||
        self.superuser.groups.set([ets_group])
 | 
			
		||||
        self.intervention.users.set([self.superuser])
 | 
			
		||||
        self.intervention.share_with_list([self.superuser])
 | 
			
		||||
 | 
			
		||||
        success_urls = [
 | 
			
		||||
            self.index_url,
 | 
			
		||||
@ -316,7 +316,7 @@ class InterventionViewTestCase(BaseViewTestCase):
 | 
			
		||||
        # Add user to default group
 | 
			
		||||
        ets_group = Group.objects.get(name=ETS_GROUP)
 | 
			
		||||
        self.superuser.groups.set([ets_group])
 | 
			
		||||
        self.intervention.users.set([])
 | 
			
		||||
        self.intervention.share_with_list([])
 | 
			
		||||
 | 
			
		||||
        success_urls = [
 | 
			
		||||
            self.index_url,
 | 
			
		||||
 | 
			
		||||
@ -26,8 +26,7 @@ class InterventionWorkflowTestCase(BaseWorkflowTestCase):
 | 
			
		||||
    def setUpTestData(cls):
 | 
			
		||||
        super().setUpTestData()
 | 
			
		||||
 | 
			
		||||
        # Give the user shared access to the dummy intervention
 | 
			
		||||
        cls.intervention.users.add(cls.superuser)
 | 
			
		||||
        cls.intervention.share_with(cls.superuser)
 | 
			
		||||
 | 
			
		||||
    def test_new(self):
 | 
			
		||||
        """
 | 
			
		||||
@ -312,7 +311,7 @@ class InterventionWorkflowTestCase(BaseWorkflowTestCase):
 | 
			
		||||
 | 
			
		||||
        # Now restore the deductable surface to a valid size back again but remove the user from the shared list
 | 
			
		||||
        self.eco_account.deductable_surface = test_surface + 100.00
 | 
			
		||||
        self.eco_account.users.set([])
 | 
			
		||||
        self.eco_account.share_with_list([])
 | 
			
		||||
        self.eco_account.save()
 | 
			
		||||
 | 
			
		||||
        # Now perform the (expected) failing request (again)
 | 
			
		||||
@ -323,7 +322,7 @@ class InterventionWorkflowTestCase(BaseWorkflowTestCase):
 | 
			
		||||
        self.assertEqual(num_deductions_total, EcoAccountDeduction.objects.count())
 | 
			
		||||
 | 
			
		||||
        # Restore the sharing but remove the recording state
 | 
			
		||||
        self.eco_account.users.set([self.superuser])
 | 
			
		||||
        self.eco_account.share_with_list([self.superuser])
 | 
			
		||||
        self.eco_account.recorded.delete()
 | 
			
		||||
        self.eco_account.refresh_from_db()
 | 
			
		||||
        self.eco_account.save()
 | 
			
		||||
@ -354,7 +353,7 @@ class InterventionWorkflowTestCase(BaseWorkflowTestCase):
 | 
			
		||||
                action=UserAction.RECORDED
 | 
			
		||||
            )
 | 
			
		||||
            self.eco_account.recorded = rec_action
 | 
			
		||||
        self.eco_account.users.set([self.superuser])
 | 
			
		||||
        self.eco_account.share_with_list([self.superuser])
 | 
			
		||||
        self.eco_account.save()
 | 
			
		||||
 | 
			
		||||
        # Run the request
 | 
			
		||||
 | 
			
		||||
@ -378,7 +378,7 @@ def share_view(request: HttpRequest, id: str, token: str):
 | 
			
		||||
                request,
 | 
			
		||||
                _("{} has been shared with you").format(intervention.identifier)
 | 
			
		||||
            )
 | 
			
		||||
            intervention.users.add(user)
 | 
			
		||||
            intervention.share_with(user)
 | 
			
		||||
        return redirect("intervention:detail", id=id)
 | 
			
		||||
    else:
 | 
			
		||||
        messages.error(
 | 
			
		||||
 | 
			
		||||
@ -155,6 +155,29 @@ class BaseObject(BaseResource):
 | 
			
		||||
        else:
 | 
			
		||||
            return User.objects.none()
 | 
			
		||||
 | 
			
		||||
    def share_with(self, user: User):
 | 
			
		||||
        """ Adds user to list of shared access users
 | 
			
		||||
 | 
			
		||||
        Args:
 | 
			
		||||
            user (User): The user to be added to the object
 | 
			
		||||
 | 
			
		||||
        Returns:
 | 
			
		||||
 | 
			
		||||
        """
 | 
			
		||||
        if not self.is_shared_with(user):
 | 
			
		||||
            self.users.add(user)
 | 
			
		||||
 | 
			
		||||
    def share_with_list(self, user_list: list):
 | 
			
		||||
        """ Sets the list of shared access users
 | 
			
		||||
 | 
			
		||||
        Args:
 | 
			
		||||
            user_list (list): The users to be added to the object
 | 
			
		||||
 | 
			
		||||
        Returns:
 | 
			
		||||
 | 
			
		||||
        """
 | 
			
		||||
        self.users.set(user_list)
 | 
			
		||||
 | 
			
		||||
    def generate_new_identifier(self) -> str:
 | 
			
		||||
        """ Generates a new identifier for the intervention object
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user