угу.
вот только не могу понять как лучше сделать чтоб в шаблонах(jinja2) выводилось меню в зависимости от прав пользователя или вообще не выводилось если пользователь не авторизован?
может вообще делать отдельные шаблоны?
дело в том что в приложении есть не только вьювы
а ПРОБЛЕМА в том что если есть какой-то функционал которому НЕОБХОДИМ реквсест, он просто не может быть использован до того как реквест известен, тоесть цепочка вызовов фактически всегда «идет» через вьюв, но не всегда по этой цепочке передаются параметры. в общем случае всегда лучше провести рефакторинг чем городить огороды по асфальту.
угу. вот только не могу понять как лучше сделать чтоб в шаблонах(jinja2) выводилось меню в зависимости от прав пользователя или вообще не выводилось если пользователь не авторизован? может вообще делать отдельные шаблоны?
честно говоря, я никогда не работал с jinja2. Ты можешь всегда передать в параметрах request или еще лучше обернуть view декоратором для проверки прав.
Т.е. те страницы, которые не видны простым смертным, обернуть декоратором, который будет делать редирект и писать, что страница недоступна. Не могу сказать как это сделать в Pyramid, т.к. давно им не пользовался, но это есть из коробки. Для меню ты можешь просто проверять в текущей сессии права и передавать параметр дополнительный вместе с тем, что выводится. Например, is_admin: object.is_admin и с той стороны в шаблоне проверять этот is_admin.
Если я не ошибаюсь Pyramid использует webob для разбора request переменных.
А в webob получить request переменные просто , надо всего лишь передать переменную окружения
Если у вас приложение построено на архитектуре wsgi( а пирамида именно так и построена), то согласно спецификации переменная окружения передается сервером , который вызывает wsgi приложение
Я не работала с пирамидой, мне трудно сказать как там реализуется коннектор к wsgi приложению это нужно посмотреть по документации
в принципе так и приходится делать. а что pyramid'ой перестали пользоватся?
ну я пользовался Pylons, потом проект стал неактуален. А новый проект уже был до меня, поэтому сейчас вот доделаю на Django. Начну переписывать админку с i18n под два языка на Pyramid, т.к. будем делать английскую версию, а позже, когда будем делать субдомены, то все переведу на Pyramid.
Django - админка, во всем остальном она хуже. В Pylons ты можешь взять SQLAlchemy и mako и этого будет заглаза. mako я как-то и в cgi скриптах давно использовал, где не нужен mvc(там он просто избыточен). Сейчас вот с роутами в Django проблемы, они через какие-то костыли работают с субдоменами. А content object это ад и израиль :)
А теперь отсортируй это по count из Stats все из последней модели, Rubric тоже модель и у нее есть id, вот по нему и сделай выборку, пусть он будет равен 8. А потом подумай как это сделать для 4х таких моделек как последняя и объединить их в один list :)
Ну так а зачем в данном случае content object?
Его вообще для сбора статистики крайне не эффективно использовать.
Учитывая, что тебе надо использование content object здесь не дает вообще ничего.
А потом подумай как это сделать для 4х таких моделек как последняя и объединить их в один list :)
Зачем тут вообще в list объединять эти 4-ре модельки, если тебя интересуют данные из Stats, которые уже сгрупированы?
Нужно сначала сделать выборку по Rubric.id, потом отдельным запросом уже с сортировкой count сделать фильтр по тем данным, что были сделаны в первом запросе. Вот поэтому я не люблю Django :)
объединить в один лист сложнее, но тут провтык архитектуры, а так и в джанговской орм можно кастомные запросы делать, чо?
объединить в одни list как два пальца об асфальт, а вот запрос сделать сложно. Разработчики Django сами говорят, что ORM только для легких запросов, для всего остального SQL.
да и вообще тут два варианта, либо ручками все выбирать-упорядочивать-строить и кешировать либо дизайн менять, может покажешь код как ты это на чем-то другом решаешь (на другом орм) с такой же структурой базы?