from django.core.management.base import BaseCommand
-from patchwork.utils import send_notifications, do_expiry
+from patchwork.notifications import expire_notifications
+from patchwork.notifications import send_notifications
class Command(BaseCommand):
self.stderr.write("Failed sending to %s: %s" %
(recipient.email, error))
- do_expiry()
+ expire_notifications()
# along with Patchwork; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-from __future__ import absolute_import
-
import datetime
import itertools
from django.db.models import Count, Q, F
from patchwork.compat import render_to_string
-from patchwork.models import (PatchChangeNotification, EmailOptout,
- EmailConfirmation)
+from patchwork.models import EmailConfirmation
+from patchwork.models import EmailOptout
+from patchwork.models import PatchChangeNotification
def send_notifications():
return errors
-def do_expiry():
- # expire any pending confirmations
+def expire_notifications():
+ """Expire any pending confirmations.
+
+ Users whose registration confirmation has expired are removed.
+ """
+ # expire any invalid confirmations
q = (Q(date__lt=datetime.datetime.now() - EmailConfirmation.validity) |
Q(active=False))
EmailConfirmation.objects.filter(q).delete()
- # expire inactive users with no pending confirmation
+ # remove inactive users with no pending confirmation
pending_confs = EmailConfirmation.objects.values('user')
users = User.objects.filter(is_active=False,
last_login=F('date_joined')).exclude(
from patchwork.models import EmailConfirmation
from patchwork.models import Patch
from patchwork.models import Person
+from patchwork.notifications import expire_notifications
from patchwork.tests.utils import create_patch
from patchwork.tests.utils import create_user
-from patchwork.utils import do_expiry
class TestRegistrationExpiry(TestCase):
datetime.timedelta(hours=1))
user, conf = self.register(date)
- do_expiry()
+ expire_notifications()
self.assertFalse(User.objects.filter(pk=user.pk).exists())
self.assertFalse(
datetime.timedelta(hours=1))
user, conf = self.register(date)
- do_expiry()
+ expire_notifications()
self.assertTrue(User.objects.filter(pk=user.pk).exists())
self.assertTrue(
conf.user.save()
conf.deactivate()
- do_expiry()
+ expire_notifications()
self.assertTrue(User.objects.filter(pk=user.pk).exists())
self.assertFalse(
conf.save()
# ... which expires
- do_expiry()
+ expire_notifications()
# we should see no matching user
self.assertFalse(User.objects.filter(email=patch.submitter.email)
from patchwork.models import EmailOptout
from patchwork.models import PatchChangeNotification
+from patchwork.notifications import send_notifications
from patchwork.tests.utils import create_patch
from patchwork.tests.utils import create_patches
from patchwork.tests.utils import create_project
from patchwork.tests.utils import create_state
-from patchwork.utils import send_notifications
class PatchNotificationModelTest(TestCase):