90 lines
2.9 KiB
Python
90 lines
2.9 KiB
Python
from django.db import models
|
|
from api.cuser.models import CustomUser as User # Asegúrate de que este es el modelo de usuario correcto
|
|
from django.utils import timezone
|
|
|
|
class RequestLog(models.Model):
|
|
METHODS = (
|
|
('GET', 'GET'),
|
|
('POST', 'POST'),
|
|
('PUT', 'PUT'),
|
|
('PATCH', 'PATCH'),
|
|
('DELETE', 'DELETE'),
|
|
('OPTIONS', 'OPTIONS'),
|
|
('HEAD', 'HEAD'),
|
|
)
|
|
|
|
user = models.ForeignKey(User, on_delete=models.SET_NULL, null=True, blank=True)
|
|
ip_address = models.GenericIPAddressField()
|
|
user_agent = models.TextField(blank=True)
|
|
method = models.CharField(max_length=10, choices=METHODS)
|
|
path = models.URLField(max_length=500)
|
|
query_params = models.TextField(blank=True)
|
|
body = models.TextField(blank=True)
|
|
status_code = models.IntegerField()
|
|
response_time = models.FloatField() # en milisegundos
|
|
timestamp = models.DateTimeField(default=timezone.now)
|
|
referer = models.URLField(max_length=500, blank=True)
|
|
|
|
class Meta:
|
|
db_table = 'logger_request_log'
|
|
ordering = ['-timestamp']
|
|
|
|
def __str__(self):
|
|
return f"{self.method} {self.path} - {self.status_code} ({self.timestamp})"
|
|
|
|
class UserActivity(models.Model):
|
|
ACTIONS = (
|
|
('login', 'Login'),
|
|
('logout', 'Logout'),
|
|
('create', 'Create'),
|
|
('update', 'Update'),
|
|
('delete', 'Delete'),
|
|
('view', 'View'),
|
|
('search', 'Search'),
|
|
('export', 'Export'),
|
|
('import', 'Import'),
|
|
)
|
|
|
|
user = models.ForeignKey(User, on_delete=models.CASCADE)
|
|
action = models.CharField(max_length=20, choices=ACTIONS)
|
|
object_type = models.CharField(max_length=100, blank=True) # modelo afectado
|
|
object_id = models.CharField(max_length=100, blank=True) # ID del objeto
|
|
description = models.TextField(blank=True)
|
|
ip_address = models.GenericIPAddressField()
|
|
timestamp = models.DateTimeField(default=timezone.now)
|
|
|
|
class Meta:
|
|
db_table = 'logger_user_activity'
|
|
ordering = ['-timestamp']
|
|
|
|
def __str__(self):
|
|
return f"{self.user.username} - {self.action} ({self.timestamp})"
|
|
|
|
class ErrorLog(models.Model):
|
|
ERROR_LEVELS = (
|
|
('DEBUG', 'Debug'),
|
|
('INFO', 'Info'),
|
|
('WARNING', 'Warning'),
|
|
('ERROR', 'Error'),
|
|
('CRITICAL', 'Critical'),
|
|
)
|
|
|
|
level = models.CharField(max_length=10, choices=ERROR_LEVELS)
|
|
message = models.TextField()
|
|
traceback = models.TextField(blank=True)
|
|
user = models.ForeignKey(User, on_delete=models.SET_NULL, null=True, blank=True)
|
|
ip_address = models.GenericIPAddressField(null=True, blank=True)
|
|
request_path = models.URLField(max_length=500, blank=True)
|
|
timestamp = models.DateTimeField(default=timezone.now)
|
|
|
|
class Meta:
|
|
db_table = 'logger_error_log'
|
|
ordering = ['-timestamp']
|
|
|
|
def __str__(self):
|
|
return f"{self.level}: {self.message[:50]}... ({self.timestamp})"
|
|
|
|
|
|
|
|
|