Projet

Général

Profil

0001-misc-redirect-categories-to-home-by-default-71994.patch

Frédéric Péters, 04 décembre 2022 12:40

Télécharger (8,41 ko)

Voir les différences:

Subject: [PATCH] misc: redirect categories to home by default (#71994)

 tests/form_pages/test_all.py |   5 +-
 wcs/admin/categories.py      |   2 +-
 wcs/forms/root.py            | 107 ++++++++++++++---------------------
 3 files changed, 46 insertions(+), 68 deletions(-)
tests/form_pages/test_all.py
329 329
    formdef = create_formdef()
330 330
    formdef.category_id = '1'
331 331
    formdef.store()
332
    resp = get_app(pub).get('/foobar/')
333
    assert '<h2>foobar</h2>' in resp.text
334
    assert '<a class="" href="test/">test</a>' in resp.text
332
    resp = get_app(pub).get('/foobar/', status=302)
333
    assert resp.location == 'http://example.net/'
335 334

  
336 335

  
337 336
def test_category_page_redirect(pub):
wcs/admin/categories.py
77 77
                'redirect_url',
78 78
                size=32,
79 79
                title=_('URL Redirection'),
80
                hint=_('If set, redirect the site category page to the given URL.'),
80
                hint=_('If set, redirect the site category page to the given URL instead of the site home.'),
81 81
                value=self.category.redirect_url,
82 82
            )
83 83

  
wcs/forms/root.py
1871 1871
        if not self.category:
1872 1872
            redirect_url = get_cfg('misc', {}).get('homepage-redirect-url')
1873 1873
        else:
1874
            redirect_url = self.category.redirect_url
1874
            redirect_url = self.category.redirect_url or '/'
1875 1875

  
1876 1876
        if redirect_url:
1877 1877
            return redirect(
......
1887 1887
        request = get_request()
1888 1888
        user = request.user
1889 1889

  
1890
        if not self.category:
1891
            if user:
1892
                message = TextsDirectory.get_html_text('welcome-logged')
1893
            else:
1894
                message = TextsDirectory.get_html_text('welcome-unlogged')
1895

  
1896
            if message:
1897
                r += htmltext('<div id="welcome-message">')
1898
                r += message
1899
                r += htmltext('</div>')
1900

  
1901
        if self.category:
1902
            all_formdefs = FormDef.select(
1903
                lambda x: str(x.category_id) == str(self.category.id), order_by='name', ignore_errors=True
1904
            )
1890
        if user:
1891
            message = TextsDirectory.get_html_text('welcome-logged')
1905 1892
        else:
1906
            all_formdefs = FormDef.select(order_by='name', ignore_errors=True)
1893
            message = TextsDirectory.get_html_text('welcome-unlogged')
1907 1894

  
1895
        if message:
1896
            r += htmltext('<div id="welcome-message">')
1897
            r += message
1898
            r += htmltext('</div>')
1899

  
1900
        all_formdefs = FormDef.select(order_by='name', ignore_errors=True)
1908 1901
        formdefs = [x for x in all_formdefs if (not x.is_disabled() or x.disabled_redirection)]
1909 1902

  
1910
        if not self.category and any(x for x in formdefs if x.enable_tracking_codes):
1903
        if any(x for x in formdefs if x.enable_tracking_codes):
1911 1904
            r += htmltext('<div id="side">')
1912 1905
            r += htmltext('<div id="tracking-code">')
1913 1906
            r += htmltext('<h3>%s</h3>') % _('Tracking code')
......
1932 1925
            epoch = time.localtime(1970)
1933 1926
            user_forms.sort(key=lambda x: x.receipt_time or epoch)
1934 1927

  
1935
        if self.category:
1936
            r += self.form_list(
1937
                list_forms,
1938
                category=self.category,
1939
                session=session,
1940
                user_forms=user_forms,
1941
                advertised_forms=advertised_forms,
1942
            )
1943
        else:
1944
            cats = Category.select()
1945
            Category.sort_by_position(cats)
1946
            one = False
1947
            for c in cats:
1948
                l2 = [x for x in list_forms if str(x.category_id) == str(c.id)]
1949
                l2_advertise = [x for x in advertised_forms if str(x.category_id) == str(c.id)]
1950
                if l2 or l2_advertise:
1951
                    r += self.form_list(
1952
                        l2, category=c, session=session, user_forms=user_forms, advertised_forms=l2_advertise
1953
                    )
1954
                    one = True
1955

  
1956
            l2 = [x for x in list_forms if not x.category]
1957
            l2_advertise = [x for x in advertised_forms if not x.category]
1928
        cats = Category.select()
1929
        Category.sort_by_position(cats)
1930
        one = False
1931
        for c in cats:
1932
            l2 = [x for x in list_forms if str(x.category_id) == str(c.id)]
1933
            l2_advertise = [x for x in advertised_forms if str(x.category_id) == str(c.id)]
1958 1934
            if l2 or l2_advertise:
1959
                if one:
1960
                    title = _('Misc')
1961
                else:
1962
                    title = None
1963 1935
                r += self.form_list(
1964
                    l2, title=title, session=session, user_forms=user_forms, advertised_forms=l2_advertise
1936
                    l2, category=c, session=session, user_forms=user_forms, advertised_forms=l2_advertise
1965 1937
                )
1938
                one = True
1939

  
1940
        l2 = [x for x in list_forms if not x.category]
1941
        l2_advertise = [x for x in advertised_forms if not x.category]
1942
        if l2 or l2_advertise:
1943
            if one:
1944
                title = _('Misc')
1945
            else:
1946
                title = None
1947
            r += self.form_list(
1948
                l2, title=title, session=session, user_forms=user_forms, advertised_forms=l2_advertise
1949
            )
1966 1950

  
1967 1951
        root_url = get_publisher().get_root_url()
1968 1952
        if user:
1969 1953
            r += self.user_forms(user_forms)
1970 1954

  
1971
            if not self.category:
1972
                r += htmltext('<p id="logout">')
1973
                if user.can_go_in_backoffice():
1974
                    r += htmltext('<a href="%sbackoffice/">%s</a> - ') % (root_url, _('Back Office'))
1975
                if user.anonymous:
1976
                    if get_cfg('saml_identities', {}).get('creation', 'admin') != 'admin':
1977
                        r += htmltext('<a href="%sregister">%s</a> - ') % (root_url, _('Register'))
1955
            r += htmltext('<p id="logout">')
1956
            if user.can_go_in_backoffice():
1957
                r += htmltext('<a href="%sbackoffice/">%s</a> - ') % (root_url, _('Back Office'))
1958
            if user.anonymous:
1959
                if get_cfg('saml_identities', {}).get('creation', 'admin') != 'admin':
1960
                    r += htmltext('<a href="%sregister">%s</a> - ') % (root_url, _('Register'))
1978 1961

  
1979
                r += htmltext('<a href="%slogout">%s</a></p>') % (root_url, _('Logout'))
1962
            r += htmltext('<a href="%slogout">%s</a></p>') % (root_url, _('Logout'))
1980 1963

  
1981 1964
        elif get_cfg('sp') or get_cfg('identification', {}).get('methods'):
1982
            if not self.category:
1983
                r += htmltext('<p id="login"><a href="%slogin">%s</a>') % (root_url, _('Login'))
1984
                identities_cfg = get_cfg('identities', {})
1985
                if identities_cfg.get('creation') in ('self', 'moderated'):
1986
                    r += htmltext(' - <a href="%sregister">%s</a>') % (root_url, _('Register'))
1987
                r += htmltext('</p>')
1965
            r += htmltext('<p id="login"><a href="%slogin">%s</a>') % (root_url, _('Login'))
1966
            identities_cfg = get_cfg('identities', {})
1967
            if identities_cfg.get('creation') in ('self', 'moderated'):
1968
                r += htmltext(' - <a href="%sregister">%s</a>') % (root_url, _('Register'))
1969
            r += htmltext('</p>')
1988 1970
        return r.getvalue()
1989 1971

  
1990 1972
    def user_forms(self, user_forms):
......
2056 2038
            r += htmltext('<h2>%s</h2>') % get_publisher().translate(category.name)
2057 2039

  
2058 2040
        formdefs_data = None
2059
        if self.category:
2060
            url_prefix = ''
2061
            r += self.category.get_description_html_text()
2062
        elif category:
2041
        if category:
2063 2042
            url_prefix = '%s/' % category.url_name
2064 2043
        else:
2065 2044
            url_prefix = ''
2066
-