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.
50 lines
1.9 KiB
50 lines
1.9 KiB
from django.contrib.auth.models import User |
|
from django.db import models |
|
|
|
class Category(models.Model): |
|
name = models.CharField(max_length=32) |
|
slug = models.CharField(max_length=32, unique=True) |
|
info = models.TextField(max_length=1024, blank=True) |
|
photo = models.ImageField(blank=True) |
|
def __str__(self): |
|
return self.name |
|
|
|
class Firmware(models.Model): |
|
version = models.CharField(unique=True, max_length=4) |
|
binary = models.FileField() |
|
def __str__(self): |
|
return self.version |
|
|
|
class Tool(models.Model): |
|
category = models.ForeignKey(Category, related_name='tools', on_delete=models.PROTECT) |
|
name = models.CharField(max_length=32) |
|
slug = models.CharField(max_length=32, unique=True) |
|
info = models.TextField(max_length=1024, blank=True) |
|
wiki_id = models.IntegerField() |
|
photo = models.ImageField(blank=True) |
|
mac = models.CharField(max_length=12) |
|
firmware = models.ForeignKey(Firmware, blank=True, null=True, related_name='tools', on_delete=models.SET_NULL) |
|
upgrade_group = models.CharField(max_length=32) |
|
def __str__(self): |
|
return self.name |
|
|
|
class Course(models.Model): |
|
name = models.CharField(max_length=64) |
|
slug = models.CharField(max_length=32, unique=True) |
|
tools = models.ManyToManyField(Tool, blank=True) |
|
def __str__(self): |
|
return self.name |
|
|
|
class Profile(models.Model): |
|
user = models.OneToOneField(User, on_delete=models.CASCADE, editable=False) |
|
lockout_admin = models.BooleanField(default=False) |
|
courses = models.ManyToManyField(Course, blank=True) |
|
selected_courses = models.BooleanField(default=False) |
|
def __str__(self): |
|
return self.user.username |
|
|
|
class Card(models.Model): |
|
profile = models.ForeignKey(Profile, related_name='cards', on_delete=models.CASCADE) |
|
number = models.CharField(max_length=10) |
|
def __str__(self): |
|
return self.number
|
|
|