mirror of
				https://github.com/zulip/zulip.git
				synced 2025-11-04 05:53:43 +00:00 
			
		
		
		
	models: Move billing models from zilencer to corporate.
This commit is contained in:
		@@ -2,8 +2,7 @@ import datetime
 | 
			
		||||
 | 
			
		||||
from django.db import models
 | 
			
		||||
 | 
			
		||||
from zerver.models import AbstractPushDeviceToken, Realm, UserProfile, \
 | 
			
		||||
    RealmAuditLog
 | 
			
		||||
from zerver.models import AbstractPushDeviceToken
 | 
			
		||||
 | 
			
		||||
def get_remote_server_by_uuid(uuid: str) -> 'RemoteZulipServer':
 | 
			
		||||
    return RemoteZulipServer.objects.get(uuid=uuid)
 | 
			
		||||
@@ -35,44 +34,3 @@ class RemotePushDeviceToken(AbstractPushDeviceToken):
 | 
			
		||||
 | 
			
		||||
    def __str__(self) -> str:
 | 
			
		||||
        return "<RemotePushDeviceToken %s %s>" % (self.server, self.user_id)
 | 
			
		||||
 | 
			
		||||
class Customer(models.Model):
 | 
			
		||||
    realm = models.OneToOneField(Realm, on_delete=models.CASCADE)  # type: Realm
 | 
			
		||||
    stripe_customer_id = models.CharField(max_length=255, unique=True)  # type: str
 | 
			
		||||
    # Becomes True the first time a payment successfully goes through, and never
 | 
			
		||||
    # goes back to being False
 | 
			
		||||
    has_billing_relationship = models.BooleanField(default=False)  # type: bool
 | 
			
		||||
 | 
			
		||||
    def __str__(self) -> str:
 | 
			
		||||
        return "<Customer %s %s>" % (self.realm, self.stripe_customer_id)
 | 
			
		||||
 | 
			
		||||
class Plan(models.Model):
 | 
			
		||||
    # The two possible values for nickname
 | 
			
		||||
    CLOUD_MONTHLY = 'monthly'
 | 
			
		||||
    CLOUD_ANNUAL = 'annual'
 | 
			
		||||
    nickname = models.CharField(max_length=40, unique=True)  # type: str
 | 
			
		||||
 | 
			
		||||
    stripe_plan_id = models.CharField(max_length=255, unique=True)  # type: str
 | 
			
		||||
 | 
			
		||||
class Coupon(models.Model):
 | 
			
		||||
    percent_off = models.SmallIntegerField(unique=True)  # type: int
 | 
			
		||||
    stripe_coupon_id = models.CharField(max_length=255, unique=True)  # type: str
 | 
			
		||||
 | 
			
		||||
    def __str__(self) -> str:
 | 
			
		||||
        return '<Coupon: %s %s %s>' % (self.percent_off, self.stripe_coupon_id, self.id)
 | 
			
		||||
 | 
			
		||||
class BillingProcessor(models.Model):
 | 
			
		||||
    log_row = models.ForeignKey(RealmAuditLog, on_delete=models.CASCADE)  # RealmAuditLog
 | 
			
		||||
    # Exactly one processor, the global processor, has realm=None.
 | 
			
		||||
    realm = models.OneToOneField(Realm, null=True, on_delete=models.CASCADE)  # type: Realm
 | 
			
		||||
 | 
			
		||||
    DONE = 'done'
 | 
			
		||||
    STARTED = 'started'
 | 
			
		||||
    SKIPPED = 'skipped'  # global processor only
 | 
			
		||||
    STALLED = 'stalled'  # realm processors only
 | 
			
		||||
    state = models.CharField(max_length=20)  # type: str
 | 
			
		||||
 | 
			
		||||
    last_modified = models.DateTimeField(auto_now=True)  # type: datetime.datetime
 | 
			
		||||
 | 
			
		||||
    def __str__(self) -> str:
 | 
			
		||||
        return '<BillingProcessor: %s %s %s>' % (self.realm, self.log_row, self.id)
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user