Memberships
This commit is contained in:
Executable
+57
@@ -0,0 +1,57 @@
|
||||
import uuid
|
||||
|
||||
from django.db import models
|
||||
|
||||
|
||||
class Account(models.Model):
|
||||
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
|
||||
uid = models.CharField(max_length=48, unique=True)
|
||||
email = models.EmailField()
|
||||
ldap_dn = models.CharField(max_length=1024)
|
||||
ldap_uuid = models.CharField(max_length=64, unique=True)
|
||||
oidc_sub = models.CharField(max_length=512, unique=True, null=True)
|
||||
stripe_customer = models.CharField(max_length=128, unique=True, null=True)
|
||||
checkout_id = models.CharField(max_length=128, blank=True)
|
||||
checkout_key = models.UUIDField(default=uuid.uuid4)
|
||||
last_billing_sync = models.DateTimeField(null=True)
|
||||
last_ldap_sync = models.DateTimeField(null=True)
|
||||
created_at = models.DateTimeField(auto_now_add=True)
|
||||
|
||||
|
||||
class Registration(models.Model):
|
||||
token_hash = models.CharField(max_length=64, primary_key=True)
|
||||
uid = models.CharField(max_length=48)
|
||||
email = models.EmailField()
|
||||
expires_at = models.DateTimeField(db_index=True)
|
||||
|
||||
|
||||
class RateWindow(models.Model):
|
||||
key = models.CharField(max_length=64, primary_key=True)
|
||||
count = models.PositiveIntegerField(default=0)
|
||||
expires_at = models.DateTimeField(db_index=True)
|
||||
|
||||
|
||||
class Subscription(models.Model):
|
||||
stripe_id = models.CharField(max_length=128, primary_key=True)
|
||||
account = models.ForeignKey(Account, on_delete=models.CASCADE, related_name="subscriptions")
|
||||
tier = models.CharField(max_length=48, blank=True)
|
||||
status = models.CharField(max_length=32)
|
||||
paid_until = models.DateTimeField(null=True)
|
||||
cancel_at_period_end = models.BooleanField(default=False)
|
||||
|
||||
|
||||
class ManagedGroup(models.Model):
|
||||
"""Retain old mappings so removing a tier from config also revokes its group."""
|
||||
|
||||
account = models.ForeignKey(Account, on_delete=models.CASCADE, related_name="managed_groups")
|
||||
dn = models.CharField(max_length=1024)
|
||||
|
||||
class Meta:
|
||||
constraints = [models.UniqueConstraint(fields=["account", "dn"], name="unique_account_group")]
|
||||
|
||||
|
||||
class WebhookEvent(models.Model):
|
||||
stripe_id = models.CharField(max_length=128, primary_key=True)
|
||||
account = models.ForeignKey(Account, on_delete=models.CASCADE, null=True)
|
||||
received_at = models.DateTimeField(auto_now_add=True)
|
||||
processed_at = models.DateTimeField(null=True)
|
||||
Reference in New Issue
Block a user