/
progart116
/
PlanerProject2026
Обзор
Документация
Войти
/
progart116
/
PlanerProject2026
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
Apps/UserLogApp/models.py
84 строки
4 KB
progart116
debug
25 апр 2026, 12:27
25 апр 2026, 12:27
4a037dd
Код
Авторство
О чём код?
from django.db import models import django.contrib.auth.models class User(models.Model): id = models.AutoField(primary_key=True) django_user = models.OneToOneField(to=django.contrib.auth.models.User, verbose_name='Пользователь Django', on_delete=models.PROTECT) surname = models.CharField('Фамилия', max_length=150) firstname = models.CharField('Имя', max_length=150) secondname = models.CharField('Отчество', max_length=150) email = models.CharField('Адрес эл. почты', max_length=150) phone = models.CharField('Телефон', max_length=15) active = models.BooleanField("Активный") reason_blocking = models.CharField("Причина блокировки", max_length=500, null=True, blank=True) notes = models.TextField("Примечание", null=True, blank=True) register_time = models.DateTimeField("Дата и время регистации", auto_now_add=True) class Meta: verbose_name = "Пользователь" verbose_name_plural = "Пользователи" ordering = ["id"] def __str__(self): return f"{self.id}) {self.surname} {self.firstname} {self.secondname} ({self.django_user.username})" class Log(models.Model): id = models.AutoField(primary_key=True) date_log = models.DateField('Дата события', auto_now_add=True) time_log = models.TimeField('Время события', auto_now_add=True) source_ip = models.CharField('IP адрес источника', max_length=100) application = models.CharField('Приложение', max_length=300) method = models.CharField('Метод', max_length=500) log_data = models.TextField('Событие') user = models.ForeignKey(to=User, verbose_name='Пользователь', on_delete=models.SET_NULL, blank=True, null=True) class Meta: verbose_name = 'Событие' verbose_name_plural = 'Журнал событий' ordering = ["-id"] def __str__(self): try: return f"{self.id}) {self.date_log.strftime("%d.%m.%Y")} {self.time_log.strftime("%H:%M:%S")}: {self.log_data} ({self.user.django_user.username})" except: return f"{self.id}) {self.date_log.strftime("%d.%m.%Y")} {self.time_log.strftime("%H:%M:%S")}: {self.log_data} ({self.user})" def get_full_time(self): hour = f"0{self.time_log.hour}" if len(str(self.time_log.hour)) == 1 else str(self.time_log.hour) minute = f"0{self.time_log.minute}" if len(str(self.time_log.minute)) == 1 else str(self.time_log.minute) second = f"0{self.time_log.second}" if len(str(self.time_log.second)) == 1 else str(self.time_log.second) return f"{hour}:{minute}:{second}.{str(self.time_log.microsecond)[0:3]}" class ProgramFunction(models.Model): id = models.AutoField(primary_key=True) function_eng = models.CharField('Код функции', max_length=150, unique=True) function_rus = models.CharField('Название функции', max_length=150) description = models.TextField('Описание функции', blank=True, null=True) class Meta: verbose_name = 'Функция программы' verbose_name_plural = 'Функции программы' ordering = ["id"] def __str__(self): return f"{self.id}) {self.function_eng}" class AccessMatrix(models.Model): id = models.AutoField(primary_key=True) user = models.ForeignKey(to=User, verbose_name='Пользователь', on_delete=models.PROTECT) function = models.ForeignKey(to=ProgramFunction, verbose_name='Функция программы', on_delete=models.PROTECT) allow = models.BooleanField('Разрешено') class Meta: verbose_name = 'Доступ пользователя к функции' verbose_name_plural = 'Матрица доступов' ordering = ["id"] def __str__(self): return f"{self.id}) {self.user.django_user.username} {self.function.function_eng} -> {self.allow}"