def save(self): """Save/return new elder profile & send invites, or return existing.""" email = self.cleaned_data.get("email") role = self.cleaned_data.get("role", u"") # first check for an existing user match try: profile = model.Profile.objects.get(user__email=email) except model.Profile.DoesNotExist: profile = model.Profile.create_with_user( school=self.inviter.school, email=email, role=role, is_active=False, school_staff=True, invited_by=self.inviter, ) created = True else: created = False # send invite emails if created: invites.send_invite_email( profile, template_name='emails/invite_elder', extra_context={ 'inviter': self.inviter, 'student': self.rel.student if self.rel else None, 'inviter_rel': self.rel, }, ) students_added_to = set() for student in self.cleaned_data['students']: rel, created = model.Relationship.objects.get_or_create( from_profile=profile, to_profile=student, defaults={ 'description': role, }) if created: students_added_to.add(student) elif not rel.direct: rel.direct = True rel.save() students_added_to.update( model.Profile.objects.filter( student_in_groups__in=self.cleaned_data['groups']).exclude( relationships_to__from_profile=profile)) tasks.record_notification.delay('village_additions', self.inviter, [profile], students_added_to) # inviting an elder never removes from groups, only adds profile.elder_in_groups.add(*self.cleaned_data['groups']) return profile
def register(request): if request.method == 'POST': form = forms.RegistrationForm(request.POST) if form.is_valid(): with xact.xact(): profile = form.save() user = profile.user user.backend = settings.AUTHENTICATION_BACKENDS[0] auth.login(request, user) token_generator = tokens.EmailConfirmTokenGenerator() invites.send_invite_email( profile, 'emails/welcome', token_generator=token_generator, ) messages.success( request, "Welcome to Portfoliyo! " "Grab your phone and add yourself as a parent " "to see how it works!" ) tracking.track( request, 'registered', email_notifications=( 'yes' if form.cleaned_data.get('email_notifications') else 'no' ), user_id=user.id, ) return redirect(redirect_home(user)) else: form = forms.RegistrationForm() return TemplateResponse( request, 'users/register.html', {'form': form}, )
def register(request): if request.method == 'POST': form = forms.RegistrationForm(request.POST) if form.is_valid(): with xact.xact(): profile = form.save() user = profile.user user.backend = settings.AUTHENTICATION_BACKENDS[0] auth.login(request, user) token_generator = tokens.EmailConfirmTokenGenerator() invites.send_invite_email( profile, 'emails/welcome', token_generator=token_generator, ) messages.success( request, "Welcome to Portfoliyo! " "Grab your phone and add yourself as a parent " "to see how it works!") tracking.track( request, 'registered', email_notifications=( 'yes' if form.cleaned_data.get('email_notifications') else 'no'), user_id=user.id, ) return redirect(redirect_home(user)) else: form = forms.RegistrationForm() return TemplateResponse( request, 'users/register.html', {'form': form}, )
def save(self): """Save/return new elder profile & send invites, or return existing.""" email = self.cleaned_data.get("email") role = self.cleaned_data.get("role", u"") # first check for an existing user match try: profile = model.Profile.objects.get(user__email=email) except model.Profile.DoesNotExist: profile = model.Profile.create_with_user( school=self.inviter.school, email=email, role=role, is_active=False, school_staff=True, invited_by=self.inviter, ) created = True else: created = False # send invite emails if created: invites.send_invite_email( profile, template_name='emails/invite_elder', extra_context={ 'inviter': self.inviter, 'student': self.rel.student if self.rel else None, 'inviter_rel': self.rel, }, ) students_added_to = set() for student in self.cleaned_data['students']: rel, created = model.Relationship.objects.get_or_create( from_profile=profile, to_profile=student, defaults={ 'description': role, } ) if created: students_added_to.add(student) elif not rel.direct: rel.direct = True rel.save() students_added_to.update( model.Profile.objects.filter( student_in_groups__in=self.cleaned_data['groups']).exclude( relationships_to__from_profile=profile) ) tasks.record_notification.delay( 'village_additions', self.inviter, [profile], students_added_to) # inviting an elder never removes from groups, only adds profile.elder_in_groups.add(*self.cleaned_data['groups']) return profile