Beispiel #1
0
    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
Beispiel #2
0
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},
        )
Beispiel #3
0
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},
    )
Beispiel #4
0
    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