I have a function from django-registration which re-sends an activation email to the given recipients. I am trying to convert the function from accepting multiple users for a given email to only one user per email. However, it is throwing an AttributeError when I try and change it.
def resend_activation(self, email, site): # for multiple emails -- this works
sent = False
users = User.objects.all().filter(email=email)
if users:
for user in users:
registration_profiles = self.all().filter(user=user)
for registration_profile in registration_profiles:
if not registration_profile.activation_key_expired():
registration_profile.send_activation_email(site)
sent = True
return sent
def resend_activation(self, email, site): # for single email -- this does not work
sent = False
user = User.objects.all().filter(email=email)
if user:
registration_profile = self.all().get(user=user)
if not registration_profile.activation_key_expired():
registration_profile.send_activation_email(site)
sent = True
return sent
This latter function throws an AttributeError, but I can’t figure out why the function won’t ‘work’ without a for loop. What seems to be my problem here? Thank you.
try:
In the original, User.object.filter(email=email) is returning a queryset which is a collection of objects from the database that were returned from the query filter(email=email). The for loop in the original is looping through each of these objects, and sending a corresponding email. You were trying to call the send_