utils.py 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. from axes.models import AccessAttempt
  2. def reset(ip=None, username=None):
  3. """Reset records that match ip or username, and
  4. return the count of removed attempts.
  5. """
  6. count = 0
  7. attempts = AccessAttempt.objects.all()
  8. if ip:
  9. attempts = attempts.filter(ip_address=ip)
  10. if username:
  11. attempts = attempts.filter(username=username)
  12. if attempts:
  13. count = attempts.count()
  14. attempts.delete()
  15. return count
  16. def iso8601(timestamp):
  17. """Returns datetime.timedelta translated to ISO 8601 formatted duration.
  18. """
  19. seconds = timestamp.total_seconds()
  20. minutes, seconds = divmod(seconds, 60)
  21. hours, minutes = divmod(minutes, 60)
  22. days, hours = divmod(hours, 24)
  23. date = '{:.0f}D'.format(days) if days else ''
  24. time_values = hours, minutes, seconds
  25. time_designators = 'H', 'M', 'S'
  26. time = ''.join([
  27. ('{:.0f}'.format(value) + designator)
  28. for value, designator in zip(time_values, time_designators)
  29. if value]
  30. )
  31. return u'P' + date + (u'T' + time if time else '')