Exemplo n.º 1
0
    def save(self, *args, **kwargs) -> None:
        """Save the session instance, starting or stopping the service if needed."""
        created = self._state.adding

        if created and not self.region:
            # Launch in the first active region if no preference set
            self.region = settings.WORKSTATIONS_ACTIVE_REGIONS[0]

        super().save(*args, **kwargs)

        if created:
            self.assign_permissions()
            on_commit(
                lambda: start_service.apply_async(
                    kwargs=self.task_kwargs,
                    queue=f"workstations-{self.region}",
                )
            )
        elif self.user_finished and self.status != self.STOPPED:
            on_commit(
                lambda: stop_service.apply_async(
                    kwargs=self.task_kwargs,
                    queue=f"workstations-{self.region}",
                )
            )
Exemplo n.º 2
0
    def save(self, *args, **kwargs) -> None:
        """Save the session instance, starting or stopping the service if needed."""
        created = self._state.adding

        if created and not self.region:
            # Launch in the first active region if no preference set
            self.region = settings.WORKSTATIONS_ACTIVE_REGIONS[0]

        super().save(*args, **kwargs)

        if self.auth_token and self.auth_token.expiry != (
            self.expires_at
            + timedelta(minutes=settings.WORKSTATIONS_GRACE_MINUTES)
        ):
            self.auth_token.expiry = self.expires_at + timedelta(
                minutes=settings.WORKSTATIONS_GRACE_MINUTES
            )
            self.auth_token.save(update_fields=("expiry",))

        if created:
            self.assign_permissions()
            on_commit(
                lambda: start_service.apply_async(
                    kwargs=self.task_kwargs,
                    queue=f"workstations-{self.region}",
                )
            )
        elif self.user_finished and self.status != self.STOPPED:
            on_commit(
                lambda: stop_service.apply_async(
                    kwargs=self.task_kwargs,
                    queue=f"workstations-{self.region}",
                )
            )