aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorstuppie2026-10-16 11:59:18 -0700
committerstuppie2026-10-16 11:59:18 -0700
commitd6051d9c99f2272bb4238e7986044d095474319e (patch)
tree8c3a8139046d62be0e0d275dbdf86bdb31e8ae11
parentb88d4a672e52be3b385b5d66e7c5829223e659f3 (diff)
downloadgeneralresearch-d6051d9c99f2272bb4238e7986044d095474319e.tar.gz
generalresearch-d6051d9c99f2272bb4238e7986044d095474319e.zip
gr django changes: add user email, change privileges, uniq membership user team
-rw-r--r--generalresearch/gr_django/migrations/0003_user_email_alter_membership_privilege_and_more.py27
-rw-r--r--generalresearch/gr_django/models.py13
2 files changed, 38 insertions, 2 deletions
diff --git a/generalresearch/gr_django/migrations/0003_user_email_alter_membership_privilege_and_more.py b/generalresearch/gr_django/migrations/0003_user_email_alter_membership_privilege_and_more.py
new file mode 100644
index 0000000..c072b1a
--- /dev/null
+++ b/generalresearch/gr_django/migrations/0003_user_email_alter_membership_privilege_and_more.py
@@ -0,0 +1,27 @@
+# Generated by Django 6.1.1 on 2026-10-16 18:56
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('common', '0002_business_balance_business_balance_net_7d_and_more'),
+ ]
+
+ operations = [
+ migrations.AddField(
+ model_name='user',
+ name='email',
+ field=models.EmailField(max_length=254, null=True, unique=True),
+ ),
+ migrations.AlterField(
+ model_name='membership',
+ name='privilege',
+ field=models.PositiveSmallIntegerField(choices=[(0, 'Admin'), (1, 'Member')], default=1),
+ ),
+ migrations.AddConstraint(
+ model_name='membership',
+ constraint=models.UniqueConstraint(fields=('user_id', 'team_id'), name='uniq_membership_user_team'),
+ ),
+ ]
diff --git a/generalresearch/gr_django/models.py b/generalresearch/gr_django/models.py
index 01bf749..8b2d91d 100644
--- a/generalresearch/gr_django/models.py
+++ b/generalresearch/gr_django/models.py
@@ -6,6 +6,7 @@ from django.db import models
class User(models.Model):
id = models.BigAutoField(primary_key=True)
sub = models.CharField(max_length=200, blank=False, null=False)
+ email = models.EmailField(null=True, unique=True)
is_superuser = models.BooleanField(default=False)
date_joined = models.DateTimeField(auto_now_add=True)
@@ -37,14 +38,22 @@ class Membership(models.Model):
PRIVILEGES = (
(0, "Admin"),
- (1, "Maintain"),
- (2, "Read"),
+ (1, "Member"),
)
privilege = models.PositiveSmallIntegerField(default=1, choices=PRIVILEGES)
+
+ # todo: delete this field once managers are not querying for it
owner = models.BooleanField(default=False)
created = models.DateTimeField(auto_now_add=True, null=False)
+ class Meta:
+ constraints = [
+ models.UniqueConstraint(
+ fields=['user_id', 'team_id'],
+ name='uniq_membership_user_team'
+ )
+ ]
class Team(models.Model):
"""