custom views: remove frequent calls to criteria-less select() (#68324)
This commit is contained in:
parent
5f3deb17f7
commit
33f6acea6a
|
@ -799,14 +799,19 @@ class FormPage(Directory):
|
|||
def set_default_view(self):
|
||||
if not get_request():
|
||||
return
|
||||
custom_views = list(self.get_custom_views())
|
||||
custom_views = list(
|
||||
self.get_custom_views(
|
||||
[
|
||||
Equal('is_default', True),
|
||||
Contains('visibility', ['any', 'owner']),
|
||||
]
|
||||
)
|
||||
)
|
||||
|
||||
# search for first default user custom view
|
||||
for view in custom_views:
|
||||
if view.visibility != 'owner':
|
||||
continue
|
||||
if not view.is_default:
|
||||
continue
|
||||
self.default_view = view
|
||||
return
|
||||
|
||||
|
@ -814,8 +819,6 @@ class FormPage(Directory):
|
|||
for view in custom_views:
|
||||
if view.visibility != 'any':
|
||||
continue
|
||||
if not view.is_default:
|
||||
continue
|
||||
self.default_view = view
|
||||
return
|
||||
|
||||
|
@ -840,6 +843,10 @@ class FormPage(Directory):
|
|||
raise errors.AccessUnauthorizedError()
|
||||
|
||||
def get_custom_views(self, criterias=None):
|
||||
criterias = [
|
||||
Equal('formdef_type', self.formdef.xml_root_node),
|
||||
Equal('formdef_id', str(self.formdef.id)),
|
||||
] + (criterias or [])
|
||||
for view in get_publisher().custom_view_class.select(clause=criterias):
|
||||
if view.match(get_request().user, self.formdef):
|
||||
yield view
|
||||
|
@ -2869,9 +2876,11 @@ class FormPage(Directory):
|
|||
return self.ics()
|
||||
|
||||
if not self.view:
|
||||
for view in self.get_custom_views():
|
||||
if view.get_url_slug() == component:
|
||||
return self.__class__(formdef=self.formdef, view=view)
|
||||
view_slug = component
|
||||
if view_slug.startswith('user-'):
|
||||
view_slug = view_slug[5:]
|
||||
for view in self.get_custom_views([Contains('slug', [view_slug, component])]):
|
||||
return self.__class__(formdef=self.formdef, view=view)
|
||||
if component.startswith('user-'):
|
||||
get_session().message = (
|
||||
'warning',
|
||||
|
|
Loading…
Reference in New Issue