123456789101112131415161718192021222324252627282930313233343536373839 |
- """
- Service for tracking namechanges
- """
- from datetime import timedelta
- from django.utils import timezone
- from .models import UsernameChange
- class UsernameChanges(object):
- def __init__(self, user):
- self.left = 0
- self.next_on = None
- if user.acl_cache['name_changes_allowed']:
- self.count_namechanges(user)
- def count_namechanges(self, user):
- name_changes_allowed = user.acl_cache['name_changes_allowed']
- name_changes_expire = user.acl_cache['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 = valid_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 not self.left and name_changes_expire:
- try:
- self.next_on = valid_changes_qs.latest().changed_on
- self.next_on += timedelta(days=name_changes_expire)
- except UsernameChange.DoesNotExist:
- pass
|