Esempio n. 1
0
    def test_default_pages(self):
        """Testing default list of account pages."""
        page_classes = list(get_page_classes())
        self.assertEqual(len(page_classes), len(self.builtin_pages))

        page_class_ids = [page_cls.page_id for page_cls in page_classes]
        self.assertEqual(set(page_class_ids), self.builtin_pages)
Esempio n. 2
0
    def test_default_pages(self):
        """Testing default list of account pages"""
        page_classes = list(get_page_classes())
        self.assertEqual(len(page_classes), 4)

        page_class_ids = [page_cls.page_id for page_cls in page_classes]
        self.assertEqual(set(page_class_ids), set(["settings", "authentication", "profile", "groups"]))
Esempio n. 3
0
    def test_default_pages(self):
        """Testing default list of account pages"""
        page_classes = list(get_page_classes())
        self.assertEqual(len(page_classes), 4)

        page_class_ids = [page_cls.page_id for page_cls in page_classes]
        self.assertEqual(
            set(page_class_ids),
            set(['settings', 'authentication', 'profile', 'groups']))
Esempio n. 4
0
    def test_unregister_account_page_class(self):
        """Testing unregister_account_page_class."""
        class MyPage(AccountPage):
            page_id = 'test-page'
            page_title = 'Test Page'

        register_account_page_class(MyPage)
        unregister_account_page_class(MyPage)

        self.assertEqual(set(get_page_classes()), self.builtin_pages)
Esempio n. 5
0
    def test_register_account_page_class(self):
        """Testing register_account_page_class."""
        class MyPage(AccountPage):
            page_id = 'test-page'
            page_title = 'Test Page'

        register_account_page_class(MyPage)

        page_classes = list(get_page_classes())
        self.assertEqual(len(page_classes), len(self.builtin_pages) + 1)
        self.assertEqual(page_classes[-1], MyPage)
Esempio n. 6
0
    def test_unregister_account_page_class(self):
        """Testing unregister_account_page_class"""
        class MyPage(AccountPage):
            page_id = 'test-page'
            page_title = 'Test Page'

        register_account_page_class(MyPage)
        unregister_account_page_class(MyPage)

        page_classes = list(get_page_classes())
        self.assertEqual(len(page_classes), 4)
Esempio n. 7
0
    def test_unregister_account_page_class(self):
        """Testing unregister_account_page_class"""
        class MyPage(AccountPage):
            page_id = 'test-page'
            page_title = 'Test Page'

        register_account_page_class(MyPage)
        unregister_account_page_class(MyPage)

        page_classes = list(get_page_classes())
        self.assertEqual(len(page_classes), 4)
Esempio n. 8
0
    def test_register_account_page_class(self):
        """Testing register_account_page_class"""

        class MyPage(AccountPage):
            page_id = "test-page"
            page_title = "Test Page"

        register_account_page_class(MyPage)

        page_classes = list(get_page_classes())
        self.assertEqual(len(page_classes), 5)
        self.assertEqual(page_classes[-1], MyPage)
Esempio n. 9
0
def user_preferences(request, template_name='accounts/prefs.html'):
    """Displays the My Account page containing user preferences.

    The page will be built based on registered pages and forms. This makes
    it easy to plug in new bits of UI for the page, which is handy for
    extensions that want to offer customization for users.
    """
    profile, is_new = Profile.objects.get_or_create(user=request.user)

    pages = [
        page_cls(request, request.user)
        for page_cls in get_page_classes()
    ]

    forms = {}

    # Store a mapping of form IDs to form instances, and check for duplicates.
    for page in pages:
        for form in page.forms:
            # This should already be handled during form registration.
            assert form.form_id not in forms, \
                'Duplicate form ID %s (on page %s)' % (
                    form.form_id, page.page_id)

            forms[form.form_id] = form

    if request.POST:
        form_id = request.POST.get('form_target')

        if form_id is None:
            return HttpResponseBadRequest()

        if form_id not in forms:
            return Http404

        # Replace the form in the list with a new instantiation containing
        # the form data. If we fail to save, this will ensure the error is
        # shown on the page.
        old_form = forms[form_id]
        form_cls = old_form.__class__
        form = form_cls(old_form.page, request, request.user, request.POST)
        forms[form_id] = form

        if form.is_valid():
            form.save()

            return HttpResponseRedirect(request.path)

    return render(request, template_name, {
        'pages': pages,
        'forms': forms.values(),
    })
Esempio n. 10
0
def user_preferences(request, template_name='accounts/prefs.html'):
    """Displays the My Account page containing user preferences.

    The page will be built based on registered pages and forms. This makes
    it easy to plug in new bits of UI for the page, which is handy for
    extensions that want to offer customization for users.
    """
    profile, is_new = Profile.objects.get_or_create(user=request.user)

    pages = [
        page_cls(request, request.user)
        for page_cls in get_page_classes()
    ]

    forms = {}

    # Store a mapping of form IDs to form instances, and check for duplicates.
    for page in pages:
        for form in page.forms:
            # This should already be handled during form registration.
            assert form.form_id not in forms, \
                   'Duplicate form ID %s (on page %s)' % (form.form_id,
                                                          page.page_id)

            forms[form.form_id] = form

    if request.POST:
        form_id = request.POST.get('form_target')

        if form_id is None:
            return HttpResponseBadRequest()

        if form_id not in forms:
            return Http404

        # Replace the form in the list with a new instantiation containing
        # the form data. If we fail to save, this will ensure the error is
        # shown on the page.
        old_form = forms[form_id]
        form_cls = old_form.__class__
        form = form_cls(old_form.page, request, request.user, request.POST)
        forms[form_id] = form

        if form.is_valid():
            form.save()

            return HttpResponseRedirect(request.path)

    return render(request, template_name, {
        'pages': pages,
        'forms': forms.values(),
    })
Esempio n. 11
0
 def test_default_pages(self):
     """Testing default list of account pages."""
     self.assertEqual(set(get_page_classes()), self.builtin_pages)
Esempio n. 12
0
 def page_classes(self):
     return get_page_classes()
Esempio n. 13
0
 def page_classes(self):
     return get_page_classes()
Esempio n. 14
0
 def page_classes(self):
     """Get the list of page classes for this view."""
     return get_page_classes()
Esempio n. 15
0
 def page_classes(self):
     """Get the list of page classes for this view."""
     return get_page_classes()