コード例 #1
0
ファイル: users.py プロジェクト: Sibyx/EvilFlowersCatalog
    def post(self, request):
        form = CreateUserForm.create_from_request(request)

        if not form.is_valid():
            raise ValidationException(request, form)

        if not request.user.has_perm('core.add_user'):
            raise ProblemDetailException(request,
                                         _("Insufficient permissions"),
                                         status=HTTPStatus.FORBIDDEN)

        if User.objects.filter(email=form.cleaned_data['email']).exists():
            raise ProblemDetailException(
                request,
                _("User with same email already exists"),
                status=HTTPStatus.CONFLICT)

        user = User()
        form.populate(user)
        user.set_password(form.cleaned_data['password'])
        user.save()

        return SingleResponse(request,
                              user,
                              serializer=UserSerializer.Base,
                              status=HTTPStatus.CREATED)
コード例 #2
0
ファイル: uitests.py プロジェクト: azavea/nyc-trees
class EventTestCase(NycTreesSeleniumTestCase):
    def setUp(self):
        super(EventTestCase, self).setUp()

        # Group admin
        self.user = User(username='******',
                         email='*****@*****.**',
                         first_name='Turanga',
                         last_name='Leela')
        self.user.set_password('password')
        self.user.clean_and_save()

        # Non-Group admin
        self.nonadmin_user = User(username='******',
                                  email='*****@*****.**',
                                  first_name='Zapp',
                                  last_name='Brannigan')
        self.nonadmin_user.set_password('password')
        self.nonadmin_user.clean_and_save()

        self.group = Group.objects.create(
            name='Planet Express',
            slug='planet-express',
            description='A simple delivery company',
            contact_name='Professor Farnseworth',
            contact_email='*****@*****.**',
            contact_url='https://planetexpress.nyc',
            admin=self.user
        )
コード例 #3
0
ファイル: uitests.py プロジェクト: pilgrimish/nyc-trees
    def _get_or_create_user(self):
        if User.objects.filter(username=self.username).exists():
            return User.objects.get(username=self.username)

        user = User(username=self.username, email=self.email)
        user.set_password(self.password)
        user.save()
        return user
コード例 #4
0
ファイル: tests.py プロジェクト: azavea/nyc-trees
    def test_email_uniqueness(self):
        guy = User(username='******', email='*****@*****.**')
        guy.set_password('password')
        guy.save()

        gal = User(username='******', email='*****@*****.**')
        gal.set_password('password')

        with self.assertRaises(ValidationError) as ec:
            gal.clean_and_save()

        self.assertIn('email', ec.exception.error_dict)
コード例 #5
0
ファイル: uitests.py プロジェクト: azavea/nyc-trees
class LoginUITest(NycTreesSeleniumTestCase):
    def setUp(self):
        super(LoginUITest, self).setUp()
        self.user = User(username='******', email='*****@*****.**')
        self.user.set_password('password')
        self.user.save()

    def test_login(self):
        self.get('/accounts/login/')

        self.wait_for_textbox_then_type('[name="username"]',
                                        self.user.username)
        self.wait_for_textbox_then_type('[name="password"]', 'password')

        self.click('form input[type="submit"]')
コード例 #6
0
    def post(self, request):
        form = UserForms.Create.create_from_request(request)

        if not form.is_valid():
            raise ValidationException(request, form)

        password = form.cleaned_data.get('password')
        role = form.cleaned_data.get('role')

        user = User()
        form.fill(user)

        user.set_password(password)
        user.username = user.email
        assign_role(user, role.name)
        user.is_active = False
        user.save()

        return SingleResponse(request,
                              user,
                              status=HTTPStatus.CREATED,
                              serializer=UserSerializer.Base)
コード例 #7
0
 def create(self, validated_data):
     user = User(**validated_data)
     user.set_password(validated_data['password'])
     user.save()
     return user
コード例 #8
0
ファイル: uitests.py プロジェクト: azavea/nyc-trees
class RsvpForEventUITest(EventTestCase):
    def setUp(self):
        super(RsvpForEventUITest, self).setUp()

        self.user2 = User(username='******',
                          email='*****@*****.**',
                          first_name='Bender',
                          last_name='Rodríguez')
        self.user2.set_password('password')
        self.user2.clean_and_save()

        self.event = Event.objects.create(group=self.group,
                                          title="The event",
                                          slug="the-event",
                                          contact_email="*****@*****.**",
                                          address="123 Main St",
                                          location=CENTRAL_PARK,
                                          max_attendees=100,
                                          begins_at=now(),
                                          ends_at=now())

    @property
    def event_detail_url(self):
        return self.event.get_absolute_url()

    def get_event_page(self):
        self.get(self.event_detail_url)

    def test_rsvp(self):
        self.assertEqual(EventRegistration.objects.all().count(), 0)
        self.login(self.user2.username)
        self.get_event_page()

        self.wait_for_text("RSVP")
        self.click('#rsvp')
        self.wait_for_text("RSVPed")
        self.assertEqual(EventRegistration.objects.all().count(), 1)
        self.assertEqual(EventRegistration.objects.all()[0].user,
                         self.user2)
        self.assertEqual(EventRegistration.objects.all()[0].event,
                         self.event)

    def test_cancel_rsvp(self):
        EventRegistration.objects.create(user=self.user2, event=self.event)

        self.login(self.user2.username)
        self.get_event_page()

        self.wait_for_text("1 / 100")
        self.click('#rsvp')
        self.wait_for_text("0 / 100")
        self.assertEqual(EventRegistration.objects.all().count(), 0)

    def test_group_admin_sees_admin_button(self):
        self.login(self.user.username)
        self.get_event_page()
        self.wait_for_text("Admin")

    def test_user_not_logged_in_can_rsvp(self):
        self.get_event_page()
        self.wait_for_text("0 / 100")
        self.click('#rsvp')
        expected_url = (self.live_server_url + reverse('login') + '?next=' +
                        self.event_detail_url)
        self.assertEqual(expected_url, self.sel.current_url)

        self.wait_for_textbox_then_type('[name="username"]',
                                        self.user2.username)
        self.wait_for_textbox_then_type('[name="password"]', 'password')
        self.click('form input[type="submit"]')

        expected_url = self.live_server_url + self.event_detail_url
        self.assertEqual(expected_url, self.sel.current_url)
        self.wait_for_text("0 / 100")
        self.click('#rsvp')
        self.wait_for_text("1 / 100")

    def test_at_capacity(self):
        self.event.max_attendees = 1
        self.event.save()
        EventRegistration.objects.create(user=self.user, event=self.event)
        self.login(self.user2.username)
        self.get_event_page()
        self.wait_for_text("At Capacity")
        self.click('#rsvp')  # clicking should do nothing
        self.wait_for_text("At Capacity")

    def test_user_not_logged_in_at_capacity(self):
        self.event.max_attendees = 1
        self.event.save()
        EventRegistration.objects.create(user=self.user, event=self.event)
        self.get_event_page()
        self.wait_for_text("At Capacity")
        self.click('#rsvp')  # clicking should do nothing
        self.wait_for_text("At Capacity")