Программное изменение запроса к базе данных во Views

Возникают ситуации, когда необходимо сделать во Views фильтр с помощью программного вмешательства. Например, совсем недавно я реализовывал такую задачу:

Есть тип материала "акция". Акция содержит поле со списком городов (чекбоксы), к которым она приурочена. В шапке сайта есть выпадающий список с этим же списком городов. На главной странице сделана вьюха, которая выводит акции по городам, т.е. в зависимости от выбранного города из выпадающего списка в шапке сайта. Так как это должно работать и для анонимов, то выбранный город решено хранить в сессии пользователя. А Views не даёт возможности подставить значение в фильтр из сессий. Следовательно, пришлось создать небольшой модуль, который изменяет запрос вьюса к базе данных, подставив в качестве фильтра города значение из сессии пользователя.