1234567891011121314151617181920212223242526272829303132333435363738 |
- """
- Service for tracking namechanges
- """
- from datetime import timedelta
- from django.utils import timezone
- from misago.users.models import UsernameChange
- class UsernameChanges(object):
- def __init__(self, user):
- self.left = 0
- self.next_on = None
- if user.acl['name_changes_allowed']:
- self.count_namechanges(user)
- def count_namechanges(self, user):
- name_changes_allowed = user.acl['name_changes_allowed']
- name_changes_expire = user.acl['name_changes_expire']
- valid_changes_qs = user.namechanges.filter(changed_by=user)
- if name_changes_expire:
- cutoff = timezone.now() - timedelta(days=name_changes_expire)
- valid_changes_qs = used_changes_qs.filter(changed_on__gte=cutoff)
- used_changes = valid_changes_qs.count()
- if name_changes_allowed <= used_changes:
- self.left = 0
- else:
- self.left = name_changes_allowed - used_changes
- if name_changes_expire:
- try:
- self.next_on = valid_changes_qs.latest()
- self.next_on += timedelta(days=name_changes_expire)
- except UsernameChange.DoesNotExist:
- pass
|