Projet

Général

Profil

0003-CustomView-remove-other-calls-to-criteria-less-selec.patch

Pierre Ducroquet, 23 août 2022 00:13

Télécharger (3,25 ko)

Voir les différences:

Subject: [PATCH 3/3] CustomView: remove other calls to criteria-less select()
 (#68324)

 wcs/backoffice/management.py | 19 +++++++++++--------
 wcs/custom_views.py          | 15 ++++++++++++++-
 2 files changed, 25 insertions(+), 9 deletions(-)
wcs/backoffice/management.py
799 799
    def set_default_view(self):
800 800
        if not get_request():
801 801
            return
802
        custom_views = list(self.get_custom_views())
802
        custom_views = list(
803
            self.get_custom_views(
804
                [
805
                    Equal('is_default', True),
806
                    Contains('visibility', ['any', 'owner']),
807
                ]
808
            )
809
        )
803 810

  
804 811
        # search for first default user custom view
805 812
        for view in custom_views:
806 813
            if view.visibility != 'owner':
807 814
                continue
808
            if not view.is_default:
809
                continue
810 815
            self.default_view = view
811 816
            return
812 817

  
......
814 819
        for view in custom_views:
815 820
            if view.visibility != 'any':
816 821
                continue
817
            if not view.is_default:
818
                continue
819 822
            self.default_view = view
820 823
            return
821 824

  
......
2869 2872
            return self.ics()
2870 2873

  
2871 2874
        if not self.view:
2872
            for view in self.get_custom_views():
2873
                if view.get_url_slug() == component:
2874
                    return self.__class__(formdef=self.formdef, view=view)
2875
            view = get_publisher().custom_view_class.get_by_url_slug(component)
2876
            if view:
2877
                return self.__class__(formdef=self.formdef, view=view)
2875 2878
            if component.startswith('user-'):
2876 2879
                get_session().message = (
2877 2880
                    'warning',
wcs/custom_views.py
24 24
from wcs.carddef import CardDef
25 25
from wcs.formdef import FormDef
26 26
from wcs.qommon.misc import simplify
27
from wcs.qommon.storage import Contains, Equal, NotContains, Nothing, StorableObject
27
from wcs.qommon.storage import And, Contains, Equal, NotContains, Nothing, Or, StorableObject
28 28

  
29 29
from .qommon.misc import xml_node_text
30 30

  
......
131 131
            self.slug = '%s-%s' % (base_slug, i)
132 132
            i += 1
133 133

  
134
    @classmethod
135
    def get_by_url_slug(cls, slug):
136
        if slug.startswith("user-"):
137
            clauses = [
138
                Or([Equal('slug', slug), And([Equal('visibility', 'owner'), Equal('slug', slug[5:])])])
139
            ]
140
        else:
141
            clauses = [Equal('slug', slug)]
142

  
143
        for x in cls.select(clauses):
144
            return x
145
        return None
146

  
134 147
    def get_url_slug(self):
135 148
        if self.visibility == 'owner':
136 149
            return 'user-%s' % self.slug
137
-