Beispiel #1
0
class TestSignupView(TestCase):
    def setUp(self) -> None:
        self.user = User.objects.create_user(username='******',
                                             email='*****@*****.**',
                                             password='******')
        self.user_profile = UserProfile()
        self.user_profile.user = self.user
        self.user_profile.save()

        self.team = Team(name='Kitchen', description='Cook stuff.', max_size=2)
        self.team.save()

        self.membership = TeamMembership(team=self.team, member=self.user)
        self.membership.save()

    def test_signup_form_validation(self):
        data = {
            'first_name': 'Foo',
            'last_name': 'Bar',
            'years_on_playa': 2,
            'invited_by': 'Baz Qux',
            'email': '*****@*****.**',
            'password': '******',
            'duplicate_password': '******',
            'phone': '555-555-5555',
            'zipcode': '12345',
            'g-recaptcha-response': 'PASSED',
            'interested_teams': [self.team.id],
        }
        os.environ['RECAPTCHA_TESTING'] = 'True'
        form = SignUpForm(data)
        self.assertTrue(form.is_valid())
Beispiel #2
0
    def toggle_membership(self, user: User) -> bool:
        """Toggles the membership of a `User` for this `Team`.

        :param user: The `User` to toggle.
        :return: `True` if the `User`'s membership was successfully toggled,
            `False` otherwise (e.g. if the `Team` is full)
        """
        try:
            my_team = user.teams.get(pk=self.id)
        except Team.DoesNotExist:
            my_team = None

        if my_team is not None:
            user.memberships.filter(team__id=self.id).delete()
            return True

        if self.is_full:
            return False

        from main.models import TeamMembership
        membership = TeamMembership()
        membership.member = user
        membership.team = self
        membership.save()
        return True
Beispiel #3
0
class TestSignupView(TestCase):
    def setUp(self) -> None:
        self.user = User.objects.create_user(username='******',
                                             email='*****@*****.**',
                                             password='******')
        self.user_profile = UserProfile()
        self.user_profile.user = self.user
        self.user_profile.save()

        self.team = Team(name='Kitchen', description='Cook stuff.', max_size=2)
        self.team.save()

        self.membership = TeamMembership(team=self.team,
                                         member=self.user)
        self.membership.save()

    def test_signup_form_validation(self):
        data = {
            'first_name': 'Foo',
            'last_name': 'Bar',
            'years_on_playa': 2,
            'invited_by': 'Baz Qux',
            'email': '*****@*****.**',
            'password': '******',
            'duplicate_password': '******',
            'phone': '555-555-5555',
            'zipcode': '12345',
            'g-recaptcha-response': 'PASSED',
            'interested_team': self.team.id,
        }
        os.environ['RECAPTCHA_TESTING'] = 'True'
        form = SignUpForm(data)
        self.assertTrue(form.is_valid())
Beispiel #4
0
    def setUp(self) -> None:
        self.user = User.objects.create_user(username='******',
                                             email='*****@*****.**',
                                             password='******')
        self.user_profile = UserProfile()
        self.user_profile.user = self.user
        self.user_profile.save()

        self.team = Team(name='Kitchen', description='Cook stuff.', max_size=2)
        self.team.save()

        self.membership = TeamMembership(team=self.team, member=self.user)
        self.membership.save()
Beispiel #5
0
def post(request: HttpRequest) -> HttpResponse:
    if request.method != 'POST':
        return redirect('signup')

    if settings.REGISTRATION_CLOSED:
        return redirect('registration-closed')

    form = SignUpForm(data=request.POST)
    if not form.is_valid():
        return render(request,
                      'registration/signup.html',
                      context={
                          'form': form,
                      })

    with transaction.atomic():
        try:
            User.objects.create_user(
                username=form.cleaned_data['email'],
                email=form.cleaned_data['email'],
                password=form.cleaned_data['password'],
                first_name=form.cleaned_data['first_name'],
                last_name=form.cleaned_data['last_name'])
        except IntegrityError as e:
            if str(e) == 'UNIQUE constraint failed: auth_user.username':
                return HttpResponseBadRequest('User already exists.')
            raise

        user = authenticate(username=form.cleaned_data['email'],
                            password=form.cleaned_data['password'])
        assert user is not None

        user_profile = UserProfile()
        user_profile.years_on_playa = form.cleaned_data['years_on_playa']
        user_profile.invited_by = form.cleaned_data['invited_by']
        user_profile.phone_number = form.cleaned_data['phone']
        user_profile.zipcode = form.cleaned_data['zipcode']
        user_profile.user = user
        user_profile.save()

        membership = TeamMembership(member=user,
                                    team=form.cleaned_data['interested_team'])
        membership.save()

        login(request, user)
        return redirect(user_profile)
Beispiel #6
0
    def test_get_duplicate_membership(self) -> None:
        membership1 = TeamMembership(team=self.team, member=self.user)
        membership1.save()

        membership2 = TeamMembership(team=self.team, member=self.user)
        membership2.save()

        self.client.login(username='******', password='******')

        response = self.client.get(reverse('team-detail', args=[self.team.id]),
                                   secure=True)
        self.assertEqual(response.status_code, 200)
Beispiel #7
0
def post(request: HttpRequest) -> HttpResponse:
    if request.method != 'POST':
        return redirect('signup')

    if settings.REGISTRATION_CLOSED:
        return redirect('registration-closed')

    form = SignUpForm(data=request.POST)
    if not form.is_valid():
        return render(request, 'registration/signup.html', context={
            'form': form,
        })

    with transaction.atomic():
        try:
            User.objects.create_user(username=form.cleaned_data['email'],
                                     email=form.cleaned_data['email'],
                                     password=form.cleaned_data['password'],
                                     first_name=form.cleaned_data['first_name'],
                                     last_name=form.cleaned_data['last_name'])
        except IntegrityError as e:
            if str(e) == 'UNIQUE constraint failed: auth_user.username':
                return HttpResponseBadRequest('User already exists.')
            raise

        user = authenticate(username=form.cleaned_data['email'],
                            password=form.cleaned_data['password'])
        assert user is not None

        user_profile = UserProfile()
        user_profile.years_on_playa = form.cleaned_data['years_on_playa']
        user_profile.invited_by = form.cleaned_data['invited_by']
        user_profile.phone_number = form.cleaned_data['phone']
        user_profile.zipcode = form.cleaned_data['zipcode']
        user_profile.user = user
        user_profile.save()

        membership = TeamMembership(member=user, team=form.cleaned_data['interested_team'])
        membership.save()

        login(request, user)
        return redirect(user_profile)
Beispiel #8
0
    def toggle_membership(self, user: User) -> bool:
        """Toggles the membership of a `User` for this `Team`.

        :param user: The `User` to toggle.
        :return: `True` if the `User`'s membership was successfully toggled,
            `False` otherwise (e.g. if the `Team` is full)
        """
        try:
            my_team = user.teams.get(pk=self.id)
        except Team.DoesNotExist:
            my_team = None

        if my_team is not None:
            user.memberships.filter(team__id=self.id).delete()
            return True

        if self.is_full:
            return False

        from main.models import TeamMembership
        membership = TeamMembership()
        membership.member = user
        membership.team = self
        membership.save()
        return True
Beispiel #9
0
    def setUp(self) -> None:
        self.user = User.objects.create_user(username='******',
                                             email='*****@*****.**',
                                             password='******')
        self.user_profile = UserProfile()
        self.user_profile.user = self.user
        self.user_profile.save()

        self.team = Team(name='Kitchen', description='Cook stuff.', max_size=2)
        self.team.save()

        self.membership = TeamMembership(team=self.team,
                                         member=self.user)
        self.membership.save()
Beispiel #10
0
    def test_get_duplicate_membership(self) -> None:
        membership1 = TeamMembership(team=self.team, member=self.user)
        membership1.save()

        membership2 = TeamMembership(team=self.team, member=self.user)
        membership2.save()

        self.client.login(username='******', password='******')

        response = self.client.get(reverse('team-detail', args=[self.team.id]), secure=True)
        self.assertEqual(response.status_code, 200)
Beispiel #11
0
    def test_details(self):
        team = Team(name='Test Team', description='This is a test.')
        team.save()

        alice = User.objects.create_user('alice', '*****@*****.**', 'passwd')
        alice.save()

        bob = User.objects.create_user('bob', '*****@*****.**', 'passwd')
        bob.save()

        alice_membership = TeamMembership(team=team,
                                          member=alice,
                                          is_lead=True)
        alice_membership.save()

        bob_membership = TeamMembership(team=team, member=bob)
        bob_membership.save()

        self.assertEqual(set(team.members.all()), {alice, bob})
        self.assertEqual(list(team.leads), [alice])
Beispiel #12
0
def toggle_membership(request: HttpRequest, team_id: int) -> HttpResponse:
    team = Team.objects.get(pk=team_id)
    try:
        my_team = request.user.teams.get(pk=team_id)
    except Team.DoesNotExist:
        my_team = None

    if my_team is None:
        membership = TeamMembership()
        membership.member = request.user
        membership.team = team
        membership.save()
    else:
        request.user.memberships.filter(team__id=team_id).delete()

    return redirect(get, team_id)
Beispiel #13
0
    def test_details(self):
        team = Team(name='Test Team',
                    description='This is a test.')
        team.save()

        alice = User.objects.create_user('alice', '*****@*****.**', 'passwd')
        alice.save()

        bob = User.objects.create_user('bob', '*****@*****.**', 'passwd')
        bob.save()

        alice_membership = TeamMembership(team=team, member=alice, is_lead=True)
        alice_membership.save()

        bob_membership = TeamMembership(team=team, member=bob)
        bob_membership.save()

        self.assertEqual(set(team.members.all()), {alice, bob})
        self.assertEqual(list(team.leads), [alice])