datasource: don't fail if digests are not defined (#55771)
gitea-wip/wcs/pipeline/head Build started... Details

This commit is contained in:
Lauréline Guérin 2021-09-13 14:11:05 +02:00
parent d2c6f15f06
commit ddef30a778
No known key found for this signature in database
GPG Key ID: 1FAB9B9B4F93D473
2 changed files with 37 additions and 1 deletions

View File

@ -421,6 +421,9 @@ def test_get_data_source_custom_view(pub):
def test_data_source_custom_view_digest(pub):
if pub.is_using_postgresql():
pub.loggederror_class.wipe()
CardDef.wipe()
carddef = CardDef()
carddef.name = 'foo'
@ -517,6 +520,28 @@ def test_data_source_custom_view_digest(pub):
assert len(cards) == 1
assert cards[0]['text'] == 'Hello Foo Bar'
# digests are not defined
carddef.digest_templates = {}
carddef.store()
carddata.id_display = None
carddata.digests = None
carddata.store()
carddata2.id_display = None
carddata2.digests = None
carddata2.store()
carddef.digest_templates = {'custom-view:view': '{{ form_var_foo }} Foo Bar'}
carddef.store()
assert [i['text'] for i in CardDef.get_data_source_items('carddef:foo')] == ['', '']
assert [i['text'] for i in CardDef.get_data_source_items('carddef:foo:view')] == ['', '']
if pub.is_using_postgresql():
assert pub.loggederror_class.count() == 2
logged_error = pub.loggederror_class.select()[0]
assert logged_error.summary == 'Digest (default) not defined'
assert logged_error.formdata_id == str(carddata2.id)
logged_error = pub.loggederror_class.select()[1]
assert logged_error.summary == 'Digest (custom view "view") not defined'
assert logged_error.formdata_id == str(carddata2.id)
def test_data_source_query_escape(pub):
CardDef.wipe()

View File

@ -14,8 +14,12 @@
# You should have received a copy of the GNU General Public License
# along with this program; if not, see <http://www.gnu.org/licenses/>.
from quixote import get_publisher
from wcs.formdata import FormData
from .qommon import _
class CardData(FormData):
def get_formdef(self):
@ -33,9 +37,16 @@ class CardData(FormData):
formdef = property(get_formdef)
def get_data_source_structured_item(self, digest_key='default'):
if self.digests is None:
if digest_key == 'default':
summary = _('Digest (default) not defined')
else:
summary = _('Digest (custom view "%s") not defined') % digest_key.replace('custom-view:', '')
get_publisher().record_error(summary, formdata=self)
item = {
'id': self.id,
'text': self.digests.get(digest_key),
'text': (self.digests or {}).get(digest_key) or '',
}
for field in self.formdef.get_all_fields():
if not field.varname: