Example #1
0
 def test_valid_email_and_name_valid(self):
     form = InviteHomebuyerForm({
         'email': '*****@*****.**',
         'first_name': 'first',
         'last_name': 'last',
     })
     self.assertTrue(form.is_valid())
Example #2
0
 def _realtor_get(self, request, realtor, *args, **kwargs):
     couples, pending_couples = realtor.get_couples_and_pending_couples()
     invite_form = InviteHomebuyerForm()
     context = {
         'form': AddRealtorHomeForm(),
         'couples': couples,
         'pending_couples': pending_couples,
         'invite_form': invite_form,
         'realtor': realtor,
     }
     return render(request, self.realtor_template_name, context)
Example #3
0
 def test_email_user_already_exists_invalid(self):
     form = InviteHomebuyerForm({
         'email': '*****@*****.**',
     })
     self.assertFalse(form.is_valid())
     self.assertIn('email', form.errors)
Example #4
0
 def test_incorrect_email_format_invalid(self):
     form = InviteHomebuyerForm({
         'email': 'FOO',
     })
     self.assertFalse(form.is_valid())
     self.assertIn('email', form.errors)
Example #5
0
 def test_empty_form_invalid(self):
     form = InviteHomebuyerForm({})
     self.assertFalse(form.is_valid())
     self.assertIn('email', form.errors)
     self.assertIn('first_name', form.errors)
     self.assertIn('last_name', form.errors)
Example #6
0
    def _realtor_post(self, request, realtor, *args, **kwargs):
        invite_form = InviteHomebuyerForm()

        if "id" in request.POST:
            couple = Couple.objects.get(id=int(request.POST["id"]))
            nickname = request.POST['nickname']
            if House.objects.filter(
                    couple=couple, nickname=nickname).exists():
                error = (u"House '{nickname}' already exists"
                         .format(nickname=nickname))
                messages.error(request, error)
            else:
                House.objects.create(couple=couple, nickname=nickname,
                                     address=request.POST["address"])
                messages.success(
                    request,
                    "House '{nickname}' added".format(nickname=nickname))
        else:
            invite_form = InviteHomebuyerForm(request.POST)
            if invite_form.is_valid():
                cleaned_data = invite_form.cleaned_data
                first_pending_hb = PendingHomebuyer(
                    first_name=cleaned_data['homebuyer1_first'],
                    last_name=cleaned_data['homebuyer1_last'],
                    email=cleaned_data['homebuyer1_email'])
                second_pending_hb = PendingHomebuyer(
                    first_name=cleaned_data['homebuyer2_first'],
                    last_name=cleaned_data['homebuyer2_last'],
                    email=cleaned_data['homebuyer2_email'])
                pending_couple = PendingCouple(realtor=request.user.realtor)

                email_success = all([
                    first_pending_hb.send_email_invite(request),
                    second_pending_hb.send_email_invite(request)
                ])
                if not email_success:
                    messages.error(request, "Failed to send email invitations")
                    return redirect(reverse(settings.LOGIN_REDIRECT_URL))

                with transaction.atomic():
                    pending_couple.save()
                    first_pending_hb.pending_couple = pending_couple
                    second_pending_hb.pending_couple = pending_couple
                    first_pending_hb.save()
                    second_pending_hb.save()

                success_msg = (
                    "Email invitations sent to '{first}' and '{second}'"
                    .format(first=escape(unicode(first_pending_hb)),
                            second=escape(unicode(second_pending_hb))))
                messages.success(request, success_msg)
                return redirect(reverse(settings.LOGIN_REDIRECT_URL))

        couples, pending_couples = realtor.get_couples_and_pending_couples()
        context = {
            'couples': couples,
            'pending_couples': pending_couples,
            'form': AddRealtorHomeForm(),
            'invite_form': invite_form,
            'realtor': realtor,
        }
        return render(request, self.realtor_template_name, context)