You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
42 lines
1.9 KiB
42 lines
1.9 KiB
from django.contrib.auth.models import User |
|
from django.db import models |
|
from django.core.validators import RegexValidator |
|
|
|
# Create your models here. |
|
class UserInfo(models.Model): |
|
user = models.OneToOneField(User, on_delete=models.CASCADE) |
|
phone_regex = RegexValidator(regex=r'^\+?1?\d{9,15}$', message="Phone number must be entered in the format: '+999999999'. Up to 15 digits allowed.") |
|
phone_number = models.CharField(validators=[phone_regex], max_length=16, blank=True) |
|
|
|
class Client(models.Model): |
|
user = models.OneToOneField(User, on_delete=models.CASCADE) |
|
business_number = models.CharField(max_length=16, blank=True) |
|
|
|
class Provider(models.Model): |
|
user = models.OneToOneField(User, on_delete=models.CASCADE) |
|
sin = models.CharField(max_length=16, blank=True) |
|
|
|
class Work(models.Model): |
|
client = models.ForeignKey(Client, on_delete=models.CASCADE) |
|
color = models.CharField(max_length=16, blank=True) |
|
label = models.CharField(max_length=100, blank=True) |
|
|
|
class Manage(models.Model): |
|
client = models.ForeignKey(Client, on_delete=models.CASCADE) |
|
provider = models.ForeignKey(Provider, on_delete=models.CASCADE) |
|
note = models.CharField(max_length=500, blank=True) |
|
|
|
class Price(models.Model): |
|
client = models.ForeignKey(Client, on_delete=models.CASCADE) |
|
provider = models.ForeignKey(Provider, on_delete=models.CASCADE) |
|
work = models.ForeignKey(Work, on_delete=models.CASCADE) |
|
amount = models.DecimalField(max_digits=8, decimal_places=2) |
|
|
|
class Shift(models.Model): |
|
client = models.ForeignKey(Client, on_delete=models.CASCADE) |
|
provider = models.ForeignKey(Provider, on_delete=models.CASCADE) |
|
work = models.ForeignKey(Work, on_delete=models.CASCADE) |
|
set_start = models.DateTimeField() |
|
set_end = models.DateTimeField() |
|
amount = models.DecimalField(max_digits=8, decimal_places=2) |
|
description = models.CharField(max_length=100, blank=True)
|
|
|