PlaidWeb / Publ

Flexible publishing system for the web
http://publ.beesbuzz.biz/
MIT License
41 stars 4 forks source link

Clean up view-as-call-site #506

Closed fluffy-critter closed 1 year ago

fluffy-critter commented 1 year ago

Expected Behavior

Either calling view(template=template) should either result in an error (due to template not being a view restriction), or View's implicit __str__ behavior should not act the way that it does.

Current Behavior

Calling a View as a function currently leads to some unexpected behavior, when given an argument other than a filter restriction. For example, {{view.previous(template='foo')}} just results in the same result as view.previous.link(), because view.previous(template='foo') is functionally the same as view.previous (since template is not a filter parameter), and then the resulting View object gets __str__ called on it.

Possible Solution

Unexpected filter arguments should result in an error, probably.

A possible means of implementing this change would be to change queries.build_query to raise a RangeError for an unknown query parameter, which in turn could be done by changing the logic there to be a foreach that maps to a bunch of lambdas that refine the query (or modify local state for the final filter parameter)

Steps to Reproduce (for bugs)

1. 2. 3. 4.

Context