35765-vm/core/models.py
Flatlogic Bot 873880f7d1 1.1
2025-11-15 19:03:23 +00:00

81 lines
2.9 KiB
Python

from django.db import models
from django.contrib.auth.models import User
class Company(models.Model):
name = models.CharField(max_length=255)
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
def __str__(self):
return self.name
class Membership(models.Model):
ROLE_CHOICES = [
('owner', 'Owner'),
('admin', 'Admin'),
('member', 'Member'),
]
user = models.ForeignKey(User, on_delete=models.CASCADE)
company = models.ForeignKey(Company, on_delete=models.CASCADE)
role = models.CharField(max_length=20, choices=ROLE_CHOICES)
def __str__(self):
return f"{self.user.username} - {self.company.name} ({self.role})"
class Tender(models.Model):
company = models.ForeignKey(Company, on_delete=models.CASCADE)
title = models.CharField(max_length=255)
description = models.TextField()
deadline = models.DateTimeField()
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
def __str__(self):
return self.title
class Bid(models.Model):
tender = models.ForeignKey(Tender, on_delete=models.CASCADE)
company = models.ForeignKey(Company, on_delete=models.CASCADE)
amount = models.DecimalField(max_digits=10, decimal_places=2)
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
def __str__(self):
return f"Bid for {self.tender.title} by {self.company.name}"
class Document(models.Model):
tender = models.ForeignKey(Tender, on_delete=models.CASCADE, null=True, blank=True)
bid = models.ForeignKey(Bid, on_delete=models.CASCADE, null=True, blank=True)
uploaded_by = models.ForeignKey(User, on_delete=models.CASCADE, null=True)
file = models.FileField(upload_to='documents/')
description = models.TextField(blank=True)
uploaded_at = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.file.name
class Note(models.Model):
tender = models.ForeignKey(Tender, on_delete=models.CASCADE)
user = models.ForeignKey(User, on_delete=models.CASCADE)
note = models.TextField()
created_at = models.DateTimeField(auto_now_add=True)
def __str__(self):
return f"Note on {self.tender.title} by {self.user.username}"
class Approval(models.Model):
STATUS_CHOICES = [
('pending', 'Pending'),
('approved', 'Approved'),
('rejected', 'Rejected'),
]
bid = models.ForeignKey(Bid, on_delete=models.CASCADE)
approver = models.ForeignKey(User, on_delete=models.CASCADE)
status = models.CharField(max_length=20, choices=STATUS_CHOICES, default='pending')
comments = models.TextField(blank=True)
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
def __str__(self):
return f"Approval for {self.bid} by {self.approver.username}"