diff --git a/dashboard/mixins.py b/dashboard/mixins.py index 5f57d9b..f8a33f6 100644 --- a/dashboard/mixins.py +++ b/dashboard/mixins.py @@ -31,22 +31,6 @@ class DashboardView(LoginRequiredMixin): subtitle = "" section = "" - def get_institution(self, request): - if request.user.institutions.count() == 1: - request.user.institution = request.user.institutions.first().institution - - def get(self, request, *args, **kwargs): - self.get_institution(request) - return super().get(request, *args, **kwargs) - - def post(self, request, *args, **kwargs): - - if request.user.institutions.count() == 1: - request.user.institution = request.user.institutions.first().institution - - return super().post(request, *args, **kwargs) - - def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) lot_tags = LotTag.objects.filter( @@ -79,7 +63,6 @@ class DashboardView(LoginRequiredMixin): class DetailsMixin(DashboardView, TemplateView): def get(self, request, *args, **kwargs): - self.get_institution(request) self.pk = kwargs['pk'] self.object = get_object_or_404( self.model, diff --git a/device/views.py b/device/views.py index b134916..b2b3192 100644 --- a/device/views.py +++ b/device/views.py @@ -79,7 +79,6 @@ class DetailsView(DashboardView, TemplateView): model = SystemProperty def get(self, request, *args, **kwargs): - self.get_institution(request) self.pk = kwargs['pk'] self.object = Device(id=self.pk) if not self.object.last_evidence: diff --git a/evidence/management/commands/up_snapshots.py b/evidence/management/commands/up_snapshots.py index 4490762..1c93eeb 100644 --- a/evidence/management/commands/up_snapshots.py +++ b/evidence/management/commands/up_snapshots.py @@ -30,10 +30,6 @@ class Command(BaseCommand): path = kwargs['path'] email = kwargs['email'] self.user = User.objects.get(email=email) - user_institution = self.user.institutions.first() - if not user_institution: - return - self.user.institution = user_institution.institution if os.path.isfile(path): self.open(path) diff --git a/evidence/views.py b/evidence/views.py index c932c63..963f4e9 100644 --- a/evidence/views.py +++ b/evidence/views.py @@ -91,7 +91,6 @@ class EvidenceView(DashboardView, FormView): form_class = UserTagForm def get(self, request, *args, **kwargs): - self.get_institution(request) self.pk = kwargs['pk'] self.object = Evidence(self.pk) if self.object.owner != self.request.user.institution: @@ -131,7 +130,6 @@ class EvidenceView(DashboardView, FormView): class DownloadEvidenceView(DashboardView, TemplateView): def get(self, request, *args, **kwargs): - self.get_institution(request) pk = kwargs['pk'] evidence = Evidence(pk) if evidence.owner != self.request.user.institution: @@ -153,7 +151,6 @@ class EraseServerView(DashboardView, FormView): form_class = EraseServerForm def get(self, request, *args, **kwargs): - self.get_institution(request) self.pk = kwargs['pk'] self.object = Evidence(self.pk) if self.object.owner != self.request.user.institution: diff --git a/user/migrations/0002_user_is_circuit_manager_user_is_shop.py b/user/migrations/0002_user_is_circuit_manager_user_is_shop.py deleted file mode 100644 index 44154c6..0000000 --- a/user/migrations/0002_user_is_circuit_manager_user_is_shop.py +++ /dev/null @@ -1,23 +0,0 @@ -# Generated by Django 5.0.6 on 2025-02-07 13:41 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('user', '0001_initial'), - ] - - operations = [ - migrations.AddField( - model_name='user', - name='is_circuit_manager', - field=models.BooleanField(default=False, verbose_name='is circuit manager'), - ), - migrations.AddField( - model_name='user', - name='is_shop', - field=models.BooleanField(default=False, verbose_name='is shop'), - ), - ] diff --git a/user/migrations/0003_remove_user_institution_remove_user_is_active_and_more.py b/user/migrations/0003_remove_user_institution_remove_user_is_active_and_more.py deleted file mode 100644 index f7ace95..0000000 --- a/user/migrations/0003_remove_user_institution_remove_user_is_active_and_more.py +++ /dev/null @@ -1,50 +0,0 @@ -# Generated by Django 5.0.6 on 2025-02-10 11:43 - -import django.db.models.deletion -from django.conf import settings -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('user', '0002_user_is_circuit_manager_user_is_shop'), - ] - - operations = [ - migrations.RemoveField( - model_name='user', - name='institution', - ), - migrations.RemoveField( - model_name='user', - name='is_active', - ), - migrations.RemoveField( - model_name='user', - name='is_admin', - ), - migrations.RemoveField( - model_name='user', - name='is_circuit_manager', - ), - migrations.RemoveField( - model_name='user', - name='is_shop', - ), - migrations.CreateModel( - name='UserInstitution', - fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('is_active', models.BooleanField(default=True, verbose_name='is active')), - ('is_admin', models.BooleanField(default=False, verbose_name='is admin')), - ('is_circuit_manager', models.BooleanField(default=False, verbose_name='is circuit manager')), - ('is_shop', models.BooleanField(default=False, verbose_name='is shop')), - ('institution', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='users', to='user.institution')), - ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='institutions', to=settings.AUTH_USER_MODEL)), - ], - options={ - 'unique_together': {('user', 'institution')}, - }, - ), - ] diff --git a/user/models.py b/user/models.py index 5462edd..9bde02a 100644 --- a/user/models.py +++ b/user/models.py @@ -33,7 +33,7 @@ class Institution(models.Model): class UserManager(BaseUserManager): - def create_user(self, email, password=None): + def create_user(self, email, institution, password=None, commit=True): """ Creates and saves a User with the given email, date of birth and password. @@ -42,11 +42,13 @@ class UserManager(BaseUserManager): raise ValueError("Users must have an email address") user = self.model( - email=self.normalize_email(email) + email=self.normalize_email(email), + institution=institution ) user.set_password(password) - user.save(using=self._db) + if commit: + user.save(using=self._db) return user def create_superuser(self, email, institution, password=None): @@ -55,16 +57,13 @@ class UserManager(BaseUserManager): """ user = self.create_user( email, + institution, password=password, + commit=False ) - user.institutions.create( - institution=institution, - is_active=True, - is_admin=True - ) - - + user.is_admin = True + user.save(using=self._db) return user def create_circuit_manager(self, email, institution, password=None): @@ -73,17 +72,13 @@ class UserManager(BaseUserManager): """ user = self.create_user( email, - institution=institution, + institution, password=password, + commit=False ) - user.institutions.create( - institution=institution, - is_active=True, - is_circuit_manager=True - ) - - + user.is_circuit_manager = True + user.save(using=self._db) return user def create_shop(self, email, institution, password=None): @@ -92,15 +87,13 @@ class UserManager(BaseUserManager): """ user = self.create_user( email, - institution=institution, + institution, password=password, - ) - user.institutions.create( - institution=institution, - is_active=True, - is_shop=True + commit=False ) + user.is_shop = True + user.save(using=self._db) return user @@ -114,6 +107,11 @@ class User(AbstractBaseUser): first_name = models.CharField(_("First name"), max_length=255, blank=True, null=True) last_name = models.CharField(_("Last name"), max_length=255, blank=True, null=True) accept_gdpr = models.BooleanField(default=False) + is_active = models.BooleanField(_("is active"), default=True) + is_admin = models.BooleanField(_("is admin"), default=False) + is_circuit_manager = models.BooleanField(_("is circuit manager"), default=False) + is_shop = models.BooleanField(_("is shop"), default=False) + institution = models.ForeignKey(Institution, on_delete=models.CASCADE, related_name="users") objects = UserManager() @@ -143,15 +141,3 @@ class User(AbstractBaseUser): def username(self): "Is the email of the user" return self.email - - -class UserInstitution(models.Model): - user = models.ForeignKey(User, on_delete=models.CASCADE, related_name="institutions") - institution = models.ForeignKey(Institution, on_delete=models.CASCADE, related_name="users") - is_active = models.BooleanField(_("is active"), default=True) - is_admin = models.BooleanField(_("is admin"), default=False) - is_circuit_manager = models.BooleanField(_("is circuit manager"), default=False) - is_shop = models.BooleanField(_("is shop"), default=False) - - class Meta: - unique_together = ('user', 'institution')