class Stats(models.Model): goals = models.PositiveSmallIntegerField(verbose_name='Goals', default=0) wins = models.PositiveSmallIntegerField(verbose_name='Wins', default=0) loses = models.PositiveSmallIntegerField(verbose_name='Loses', default=0) draws = models.PositiveSmallIntegerField(verbose_name='Draws', default=0) class Meta: abstract = True
class Classes(models.Model): class_id = models.UUIDField(primary_key=True, blank=False, default=uuid.uuid4, editable=False) credit = models.IntegerField(blank=False, verbose_name='credit') section_id = models.PositiveSmallIntegerField( verbose_name="class section ID", blank=False) start_time = models.TimeField(auto_now=False, blank=False, verbose_name="class start time") end_time = models.TimeField(auto_now=False, blank=False, verbose_name="class end time") course_part = models.ForeignKey(to='Courses', on_delete=models.CASCADE, verbose_name='Course part') grade_scale = models.ForeignKey(to='GpaScale', on_delete=models.CASCADE, verbose_name='Grade Scale', blank=False) weights = models.ForeignKey(to='Weights', on_delete=models.CASCADE, verbose_name='Grade weights', blank=False) students = models.ArrayReferenceField(to=Student, on_delete=models.CASCADE) teachers = models.ArrayReferenceField(to=Teacher, on_delete=models.CASCADE) def __str__(self): return str(self.course_part) + '_' + str(self.section_id)
class GenericModel(models.Model): big_int = models.BigIntegerField() bool = models.BooleanField() char = models.CharField(max_length=20) comma_int = models.CommaSeparatedIntegerField() date = models.DateField() date_time = models.DateTimeField() decimal = models.DecimalField(max_digits=10, decimal_places=5) email = models.EmailField() float = models.FloatField() integer = models.IntegerField() null_bool = models.NullBooleanField() pos_int = models.PositiveIntegerField() pos_small_int = models.PositiveSmallIntegerField() slug = models.SlugField() small_int = models.SmallIntegerField() text = models.TextField() time = models.TimeField() url = models.URLField() ip = models.GenericIPAddressField() uuid = models.UUIDField() # TODO: add these # basic_file = models.FileField() # image = models.ImageField() objects = models.DjongoManager()
class ComponentAlternate(models.Model): part = models.CharField(max_length=1) dmg = models.PositiveSmallIntegerField() full_name = models.CharField(max_length=200) svg_path = models.CharField(max_length=400) parent_component = models.ForeignKey(LibraryComponent, on_delete=models.CASCADE, null=False, related_name='alternate_component') # For Django Admin Panel def image_tag(self): if self.svg_path: return mark_safe( '<img src="/%s" style="width: 45px; height:45px;" />' % self.svg_path) # noqa else: return 'No Image Found' image_tag.short_description = 'Image' def __str__(self): return self.full_name def delete(self, *args, **kwargs): try: os.remove(self.svg_path) except Exception: pass super(ComponentAlternate, self).delete(*args, **kwargs)
class Patient(models.Model): alphanumeric = RegexValidator(r'^[0-9a-zA-Z]*$', 'Only alphanumeric characters are allowed.') name = models.CharField(max_length=100, blank=False, help_text="Name and last name of the patient.", verbose_name="Name and Last name") age = models.PositiveSmallIntegerField( blank=False, help_text="specify the patient\'s age.", verbose_name='Age', validators=[MaxValueValidator(150)]) # it should be unique. The index is create in the BD directly and not with the model custom_id = models.CharField( max_length=20, blank=False, help_text="Later he/she will use it to access his/her historical data " "(e.g. ID Card number or Passport number)", verbose_name='ID', validators=[alphanumeric]) status = models.CharField(max_length=10, default='active') def __str__(self): return self.name
class Entrada(models.Model): SETOR_TYPE_CHOICES = ( (1, 'setor A Funcionarios'), (2, 'setor B Geral'), (3, 'setor C Geral'), (4, 'setor D Geral'), ) setor_type = models.PositiveSmallIntegerField(choices=SETOR_TYPE_CHOICES) placa = models.CharField(max_length=7, null=False, unique=True) date_joined = models.DateTimeField('Data de entrada', auto_now_add=True)
class Evento(models.Model): SETOR_TYPE_CHOICES = ( (1, 'Setor A Funcionarios'), (2, 'Setor B Geral'), (3, 'Setor C Geral'), (4, 'Setor D Geral'), ) evento = models.CharField(max_length=50, null=False, unique=True) data = models.DateTimeField() setor_type = models.PositiveSmallIntegerField('Setor', choices=SETOR_TYPE_CHOICES) descrição = models.TextField()
class Ocorrencia(models.Model): SETOR_TYPE_CHOICES = ( (1, 'Setor A Funcionarios'), (2, 'Setor B Geral'), (3, 'Setor C Geral'), (4, 'Setor D Geral'), ) OCCURRENCE_TYPE_CHOICES = ( (1, 'Assalto / Furto'), (2, 'Batida / Sinistro'), (3, 'Estacionamento Indevido'), (4, 'Inundação'), (5, 'Dano ao Veiculo'), ) placa = models.CharField(max_length=7, null=False, unique=True) setor_type = models.PositiveSmallIntegerField('Setor', choices=SETOR_TYPE_CHOICES, null=True) occurrence_type = models.PositiveSmallIntegerField( 'Motivo da Ocorrencia', choices=OCCURRENCE_TYPE_CHOICES) obs = models.TextField('Obersavões') date_joined = models.DateTimeField('Data de entrada', auto_now_add=True)
class Vagas(models.Model): SETOR_TYPE_CHOICES = ( (1, 'Setor A Funcionarios'), (2, 'Setor B Geral'), (3, 'Setor C Geral'), (4, 'Setor D Geral'), ) vagas_normais = models.IntegerField(null=False) vagas_especiais = models.IntegerField(null=False) vagas_especiais_ocupadas = models.IntegerField(null=False) vagas_normais_ocupadas = models.IntegerField(null=False) setor_type = models.PositiveSmallIntegerField('Setor', choices=SETOR_TYPE_CHOICES)
class Record(models.Model): id_responsible = models.CharField(default='', max_length=50, blank=False) id_patient = models.CharField(default='', max_length=50, blank=False) bp_systolic = models.PositiveSmallIntegerField( blank=False, help_text="Systolic blood pressure. (upper #) - Normal: < 120", validators=[MaxValueValidator(300)]) bp_diastolic = models.PositiveSmallIntegerField( blank=False, help_text="Diastolic blood pressure. (lower #) - Normal: < 80", validators=[MaxValueValidator(300)]) heart_rate = models.PositiveSmallIntegerField( blank=False, help_text="Beats per minutes. (bpm) - Normal: 60 to 100 bmp at rest", validators=[MaxValueValidator(300)]) ts = models.DateTimeField(auto_now_add=True, blank=False) def __str__(self): return self.ts, self.id_patient
class Courses(models.Model): course_id = models.UUIDField(primary_key=True, blank=False, default=uuid.uuid4, editable=False) course_code = models.PositiveSmallIntegerField(unique=True) name = models.CharField(blank=False, max_length=200, verbose_name="course name") start_date = models.DateTimeField(auto_now=False, verbose_name="start date") end_date = models.DateTimeField(auto_now=False, verbose_name="end date") def __str__(self): return self.name
class Product(models.Model): image = models.ImageField( null='true', blank='true', ) designer = models.CharField(max_length=100, null='true', blank='true') name = models.CharField(max_length=100, null='true', blank='true') price = models.PositiveSmallIntegerField(default=0) # colors BLUE = 'u' RED = 'r' YELLOW = 'y' PURPLE = 'p' ORANGE = 'o' GREEN = 'g' BROWN = 'n' WHITE = 'w' BLACK = 'b' SILVER = 's' COLOR_CHOICES = [ (BLUE, 'Blue'), (RED, 'Red'), (YELLOW, 'Yellow'), (PURPLE, 'Purple'), (ORANGE, 'Orange'), (GREEN, 'Green'), (BROWN, 'Brown'), (WHITE, 'White'), (BLACK, 'Black'), (SILVER, 'Silver'), ] color = models.CharField( max_length=20, choices=COLOR_CHOICES, default=BLACK, ) score = models.FloatField( null='true', blank='true', ) # time/date # need some way of ordering # probably a post-330 todo def __str__(self): return self.name
class Game(models.Model): _id = models.ObjectIdField() genre = models.ForeignKey('api.Genre', on_delete=models.CASCADE) round_time = models.SmallIntegerField(default=10, validators=min_max_validator(10, 60), help_text='seconds') rounds = models.SmallIntegerField(default=1, validators=min_max_validator(-1, 5)) num_players = models.PositiveSmallIntegerField( validators=min_max_validator(3, 8)) status = models.CharField(max_length=3, choices=game_status, default='GAP') created_at = models.DateTimeField(default=timezone.now, editable=False) updated_at = AutoDateTimeField(auto_now=True) objects = models.DjongoManager() def __str__(self): return 'Game {0}'.format(self._id)
class MsMs(models.Model): collection_date = models.DateField('Collection date') collision_energy_level = models.TextField('Collision energy level', max_length=20) collision_energy_voltage = models.PositiveSmallIntegerField('Collision energy voltage') created_at = models.DateTimeField('Created at') database_id = models.TextField('Database id', max_length=20) # Energy field is null everywhere energy_field = models.TextField('Energy field', max_length=20, blank=True) id = models.PositiveIntegerField('Spectrum id') instrument_type = models.TextField('Instrument type', max_length=50) ionization_mode = models.TextField('Ionization mode', max_length=10) # Mono mass is null everywhere mono_mass = models.FloatField('Mono mass') ms_ms_peaks = models.EmbeddedField( model_container=MsMsPeakArray, blank=True ) notes = models.TextField('Notes', max_length=1000) peak_counter = models.PositiveIntegerField('Peak count') predicted = models.BooleanField('Is predicted?', default=False) references = models.EmbeddedField( model_container=ReferenceArray, blank=True ) sample_assessment = models.TextField('Sample assessment', max_length=20) sample_concentration = models.FloatField('Sample concentration') sample_concentration_units = models.TextField('Sample concentration units', max_length=10) sample_mass = models.FloatField('Sample mass') sample_mass_units = models.TextField('Sample mass units', max_length=10) # Sample source is null everywhere sample_source = models.TextField('Sample source', max_length=50) # Solvent is null everywhere solvent = models.TextField('Solvent', max_length=50) spectra_assessment = models.TextField('Spectra assessment', max_length=50) splash_key = models.TextField('Splash key', max_length=100) structure_id = models.PositiveIntegerField('Structure id') updated_at = models.DateTimeField('Updated at') class Meta: abstract = True
class Competitor(models.Model): team = models.ForeignKey( to=Team, on_delete=models.CASCADE, ) color = models.CharField(max_length=5, choices=( ('Black', 'black'), ('White', 'white'), )) goals = models.PositiveSmallIntegerField(default=0) class Meta: abstract = True def __str__(self): return self.team.name + ' ' + self.color
class Review(models.Model): reviewer = models.CharField(max_length=200, null='true', blank='true') product = models.CharField(max_length=200, null='true', blank='true') REVIEW_CHOICES = [ ('1', 1), ('2', 2), ('3', 3), ('4', 4), ('5', 5), ] number = models.PositiveSmallIntegerField( choices=REVIEW_CHOICES, null='true', blank='true', ) text = models.TextField( null='true', blank='true', )
class User(AbstractBaseUser, PermissionsMixin): USER_TYPE_CHOICES = ( (1, 'Funcionario Estacionamento'), (2, 'Rh'), (3, 'Gerente'), ) username = models.CharField( 'Nome do Usuario', max_length=30, unique=True, validators=[ validators.RegexValidator( re.compile('^[\w.@+-]+$'), 'O username só pode conter letras, números ou as caracteres @/./+/-/_', 'invalid') ]) email = models.EmailField('E-mail', unique=True) name = models.CharField('Nome', max_length=50) user_type = models.PositiveSmallIntegerField('Função', choices=USER_TYPE_CHOICES) is_active = models.BooleanField('Está ativo?', default=True, blank=True) date_joined = models.DateTimeField('Data de entrada', auto_now_add=True) is_staff = models.BooleanField('É superUsuário', blank=True, default=False) objects = UserManager() USERNAME_FIELD = 'username' REQUIRED_FIELDS = ['email'] def __str__(self): return self.name or self.username def get_short_name(self): return self.username def get_full_name(self): return str(self) class Meta: verbose_name = 'Usuário' verbose_name_plural = 'Usuários'
class Player(models.Model): _id = models.ObjectIdField() game = models.ForeignKey('api.Game', on_delete=models.CASCADE) user = models.ForeignKey(AUTH_USER_MODEL, on_delete=models.CASCADE) score = models.PositiveSmallIntegerField(default=0) czar = models.BooleanField(default=False) created_at = models.DateTimeField(default=timezone.now, editable=False) updated_at = AutoDateTimeField(auto_now=True) objects = models.DjongoManager() class Meta: unique_together = ('game', 'user') def __str__(self): return 'Player {0}'.format(self.user) class Meta: indexes = ( models.Index(fields=('czar', )), models.Index(fields=('score', )), )
class EventMeta(models.Model): event = models.OneToOneField(Event, models.CASCADE) type = models.CharField(verbose_name='Event Type', max_length=6, choices=types, default='Hockey') grade = models.CharField(verbose_name='Competition Level', max_length=8, choices=grades, default='Friendly') age_group = models.PositiveSmallIntegerField(verbose_name='Age Group', choices=age_groups, default=0) gender = models.CharField(verbose_name='Gender Competing', max_length=8, choices=genders, default='Co-ed') teams = models.ArrayReferenceField(to=Team, on_delete=models.CASCADE, related_query_name='teams') objects = EventMetaManager() def __str__(self): return self.event.name # TODO: Fix Problem # parent class failing to add a team to the back of the list, instead it replaces old data with new # weird thing it does it only on the server, tests all passes; # problem might not be here, but with the drop-down choice list given to the user on the template def add_team_to_event(self, team): from django.db.models.query import QuerySet if isinstance(team, list) or isinstance(team, QuerySet): for t in team: if not isinstance(t, Team): raise ValueError('{} is not {}'.format(t.__class__, Team)) self.teams.add(*team) else: if not isinstance(team, Team): raise ValueError('{} is not {}'.format(team.__class__, Team)) self.teams.add(*[team])
class CommonUser(PermissionsMixin, AbstractBaseUser): # 사용자 정보의 필드는 암호화 타입(hex)으로 변경해야함: CharField -> TextField username = models.CharField(max_length=12, unique=True) email = models.EmailField( verbose_name='email address', max_length=255, unique=True, ) birth = models.DateField(null=True) role = models.PositiveSmallIntegerField(choices=Role.choices, default=Role.NORMAL) is_active = models.BooleanField(default=True) is_admin = models.BooleanField(default=False) last_login = models.DateTimeField(auto_now=True) date_joined = models.DateTimeField(auto_now_add=True, editable=False) objects = CommonUserManager() USERNAME_FIELD = 'username' REQUIRED_FIELDS = ['birth', 'email'] def __str__(self): return self.username def has_perm(self, perm, obj=None): return True def has_module_perms(self, app_label): return True @property def is_staff(self): return self.is_admin @property def is_activate(self): return self.is_active
class Sponsor(models.Model): sponsor = models.ForeignKey(User, on_delete=models.CASCADE, related_name='sponsor') Amount = models.PositiveSmallIntegerField(default=0) Event = models.ForeignKey(Event, on_delete=models.CASCADE, related_name='sponsor_event')