i701 4db9d7fabd
All checks were successful
Build and Push Docker Images / Build and Push Docker Images (push) Successful in 4m18s
Refactor device management: add vendor field, enhance admin display, and improve MAC address handling
2025-06-01 19:27:04 +05:00

46 lines
1.5 KiB
Python

from django.db import models
from django.utils import timezone
from api.models import User
import re
from django.core.exceptions import ValidationError
def validate_mac_address(value):
if not re.match(r"^([0-9A-Fa-f]{2}-){5}[0-9A-Fa-f]{2}$", value):
raise ValidationError(
"This field accepts a valid MAC address in the format XX-XX-XX-XX-XX-XX using '-' as the separator."
)
return value
class Device(models.Model):
name = models.CharField(max_length=255)
mac = models.CharField(
max_length=255,
validators=[
validate_mac_address,
],
)
vendor = models.CharField(max_length=255, null=True, blank=True, default="")
has_a_pending_payment = models.BooleanField(default=False)
reason_for_blocking = models.CharField(max_length=255, null=True, blank=True)
is_active = models.BooleanField(default=False)
registered = models.BooleanField(default=False)
blocked = models.BooleanField(default=False)
blocked_by = models.CharField(
max_length=255,
choices=[("ADMIN", "Admin"), ("PARENT", "Parent")],
default=None,
blank=True,
null=True,
)
expiry_date = models.DateTimeField(null=True, blank=True)
created_at = models.DateTimeField(default=timezone.now)
updated_at = models.DateTimeField(auto_now=True)
user = models.ForeignKey(
User, on_delete=models.SET_NULL, null=True, blank=True, related_name="devices"
)
def __str__(self):
return self.name