oasupport/clientapp/models.py
2025-12-03 11:16:47 +03:00

79 lines
3.4 KiB
Python

from django.db import models
from django.contrib.auth.models import AbstractUser
class Company(models.Model):
title = models.CharField('Название компании', max_length=40)
inn = models.CharField('ИНН', max_length=12, blank=True, null=True)
ogrn = models.CharField('ОГРН', max_length=13, blank=True, null=True)
def __str__(self):
return self.title
class Meta:
verbose_name = 'Компания'
verbose_name_plural = 'Компании'
class CustomUser(AbstractUser):
pass
company = models.ForeignKey('Company', default='', on_delete=models.SET_DEFAULT, blank=True, null=True)
class Call(models.Model):
author = models.ForeignKey('CustomUser', on_delete=models.SET_NULL, verbose_name='Автор обращения', max_length=120, default='', blank=True, null=True)
category = models.ForeignKey('Category', on_delete=models.SET_DEFAULT, verbose_name='Категория', blank=True, null=True, default='')
title = models.CharField('Тема', max_length=50)
message = models.TextField('Описание проблемы')
file = models.FileField(upload_to='media', verbose_name='Файл', blank=True, null=True)
created = models.DateField('Дата создания', auto_now_add=True)
status = models.ForeignKey('Status', on_delete=models.SET_DEFAULT, verbose_name='Статус', blank=True, null=True, default='')
deadline = models.DateField('Дата предполагаемого решения', blank=True, null=True)
verdict = models.TextField('Вердикт', default='', blank=True)
is_archived = models.BooleanField('Отправлен в архив', default=False)
def __str__(self):
return self.title
class Meta:
verbose_name = 'Обращение'
verbose_name_plural = 'Обращения'
class Category(models.Model):
title = models.CharField('Название категории', max_length=50)
def __str__(self):
return self.title
class Meta:
verbose_name = 'Категория обращения'
verbose_name_plural = 'Категории обращений'
class Status(models.Model):
title = models.CharField('Название', max_length=32)
id = models.IntegerField('Id', primary_key=True)
css_styles = models.CharField('CSS', max_length=512, blank=True, null=True, default='')
def __str__(self):
return self.title
class Meta:
verbose_name = 'Статус обращения'
verbose_name_plural = 'Статусы обращений'
class AddMessage(models.Model):
call = models.ForeignKey('Call', on_delete=models.SET_NULL, verbose_name='Обращение (тикет)', max_length=120, default='', blank=True, null=True)
author = models.ForeignKey('CustomUser', on_delete=models.SET_NULL, verbose_name='Автор сообщения', max_length=120, default='', blank=True, null=True)
message = models.TextField('Текст сообщения')
file = models.FileField(upload_to='media', verbose_name='Файл', blank=True, null=True)
created = models.DateTimeField('Дата создания', auto_now_add=True)
def __str__(self):
return f'#{self.id} {self.author.username} {self.created}'
class Meta:
verbose_name = 'Доп. сообщение'
verbose_name_plural = 'Доп. сообщения'