| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- from django.db import models
- from django.utils.translation import gettext_lazy as _
- class AccessBase(models.Model):
- user_agent = models.CharField(_("User Agent"), max_length=255, db_index=True)
- ip_address = models.GenericIPAddressField(_("IP Address"), null=True, db_index=True)
- username = models.CharField(_("Username"), max_length=255, null=True, db_index=True)
- http_accept = models.CharField(_("HTTP Accept"), max_length=1025)
- path_info = models.CharField(_("Path"), max_length=255)
- attempt_time = models.DateTimeField(_("Attempt Time"), auto_now_add=True)
- class Meta:
- app_label = "axes"
- abstract = True
- ordering = ["-attempt_time"]
- class AccessAttempt(AccessBase):
- get_data = models.TextField(_("GET Data"))
- post_data = models.TextField(_("POST Data"))
- failures_since_start = models.PositiveIntegerField(_("Failed Logins"))
- def __str__(self):
- return f"Attempted Access: {self.attempt_time}"
- class Meta:
- verbose_name = _("access attempt")
- verbose_name_plural = _("access attempts")
- class AccessLog(AccessBase):
- logout_time = models.DateTimeField(_("Logout Time"), null=True, blank=True)
- def __str__(self):
- return f"Access Log for {self.username} @ {self.attempt_time}"
- class Meta:
- verbose_name = _("access log")
- verbose_name_plural = _("access logs")
|