79 lines
3.4 KiB
Python
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 = 'Доп. сообщения' |