1114 |
1114 |
assert resp.forms['listing-settings']['filter-1-value'].value == 'false'
|
1115 |
1115 |
assert resp.forms['listing-settings']['filter-1-operator'].value == 'ne'
|
1116 |
1116 |
assert resp.text.count('data-link=') == 5
|
|
1117 |
|
|
1118 |
|
|
1119 |
def test_item_options_in_dynamic_view(pub):
|
|
1120 |
pub.user_class.wipe()
|
|
1121 |
create_superuser(pub)
|
|
1122 |
pub.role_class.wipe()
|
|
1123 |
pub.custom_view_class.wipe()
|
|
1124 |
role = pub.role_class(name='test')
|
|
1125 |
role.store()
|
|
1126 |
|
|
1127 |
CardDef.wipe()
|
|
1128 |
carddef = CardDef()
|
|
1129 |
carddef.name = 'card-title'
|
|
1130 |
carddef.digest_templates = {'default': '{{ form_var_foo }}'}
|
|
1131 |
carddef.fields = [
|
|
1132 |
fields.StringField(
|
|
1133 |
id='1',
|
|
1134 |
label='1st field',
|
|
1135 |
type='string',
|
|
1136 |
),
|
|
1137 |
fields.ItemField(
|
|
1138 |
id='4',
|
|
1139 |
label='4th field',
|
|
1140 |
type='item',
|
|
1141 |
items=['â', 'b', 'c', 'd'],
|
|
1142 |
display_locations=['validation', 'summary', 'listings'],
|
|
1143 |
),
|
|
1144 |
]
|
|
1145 |
carddef.workflow_roles = {'_editor': role.id}
|
|
1146 |
carddef.store()
|
|
1147 |
|
|
1148 |
data_class = carddef.data_class()
|
|
1149 |
data_class.wipe()
|
|
1150 |
|
|
1151 |
for i in range(0, 12):
|
|
1152 |
carddata = data_class()
|
|
1153 |
carddata.data = {
|
|
1154 |
'1': 'plop%s' % (i % 2),
|
|
1155 |
'4': 'a%s' % (i % 4),
|
|
1156 |
'4_display': 'a%s' % (i % 4),
|
|
1157 |
}
|
|
1158 |
carddata.just_created()
|
|
1159 |
carddata.store()
|
|
1160 |
|
|
1161 |
custom_view = pub.custom_view_class()
|
|
1162 |
custom_view.title = 'custom test view'
|
|
1163 |
custom_view.formdef = carddef
|
|
1164 |
custom_view.visibility = 'datasource'
|
|
1165 |
custom_view.columns = {'list': [{'id': '1'}]}
|
|
1166 |
custom_view.filters = {}
|
|
1167 |
custom_view.store()
|
|
1168 |
|
|
1169 |
app = login(get_app(pub))
|
|
1170 |
resp = app.get('/backoffice/data/card-title/custom-test-view/')
|
|
1171 |
|
|
1172 |
# enable both filters
|
|
1173 |
resp.forms['listing-settings']['filter-1'].checked = True
|
|
1174 |
resp.forms['listing-settings']['filter-4'].checked = True
|
|
1175 |
resp = resp.forms['listing-settings'].submit()
|
|
1176 |
# all used options are listed ({} is "custom value")
|
|
1177 |
assert [x[0] for x in resp.forms['listing-settings']['filter-4-value'].options] == [
|
|
1178 |
'',
|
|
1179 |
'a0',
|
|
1180 |
'a1',
|
|
1181 |
'a2',
|
|
1182 |
'a3',
|
|
1183 |
'{}',
|
|
1184 |
]
|
|
1185 |
|
|
1186 |
# plain filter, only used options are listed
|
|
1187 |
resp.forms['listing-settings']['filter-1-value'].value = 'plop0'
|
|
1188 |
resp.forms['listing-settings']['filter-4-value'].value = 'a0'
|
|
1189 |
resp = resp.forms['listing-settings'].submit()
|
|
1190 |
assert [x[0] for x in resp.forms['listing-settings']['filter-4-value'].options] == ['', 'a0', 'a2', '{}']
|
|
1191 |
|
|
1192 |
# template filter, all options are listed
|
|
1193 |
resp.forms['listing-settings']['filter-1-value'].value = '{{ test }}'
|
|
1194 |
resp = resp.forms['listing-settings'].submit()
|
|
1195 |
assert [x[0] for x in resp.forms['listing-settings']['filter-4-value'].options] == [
|
|
1196 |
'',
|
|
1197 |
'a0',
|
|
1198 |
'a1',
|
|
1199 |
'a2',
|
|
1200 |
'a3',
|
|
1201 |
'{}',
|
|
1202 |
]
|