

Milton
06.04.2019
21:16:44
Ноуп!
Продолжаю развлекаться с Pyramid и Cornice, тема развлечений всё та же — разные хэндлеры для обработки исключений. У Cornice есть свои хендлеры для исключений, которые можно отдельно включить. Проблема в том, что при попытке зарегать хэндлер под 404 пирамида молча игнорирует его, если хэндлер под этот тип исключений без каких-то уточняющих предикатов уже есть. В принципе, логичное поведение, хотя ворнинг был бы кстати. Поскольку регистрация этих exception view происходит в коде Cornice, никаких предикатов я туда повесить не могу. Если делать свой хэндлер, ему нужно дать какой-нибудь предикат, но тут уже непонятно, какой именно нужно указать для того, чтобы ловить всё, что под /api. В Cornice я использую resource, которые создают сервисы сами, поэтому route factory в них особо не потыкаешь. route_name тоже не очень вариант, карниз генерит и сам.
Собственно, скорее всего проблема здесь в том, как именно я пытаюсь организовать приложение. У меня есть приложение, сделанное cookiecutter'ом. В нем я создал отдельный модуль api_views, конфиг которого импортируется из конфига основного приложения с параметром route_prefix='/api'. Перед импортом в основном конфиге есть вызов scan(), потому что иначе вьюшки api будут зарегистрированы без префикса. В импортированном конфиге импортируется 'cornice', scan тоже вызывается. Всё это — попытка получить что-то подобное тому, что во flask делают blueprints.
Вопрос: что я упускаю? Есть в пирамиде что-то по типу блюпринтов?


Zart
07.04.2019
11:25:57
накой хуй пирамиде эти недоделанные блюпринты

Thorn
07.04.2019
11:26:54
config.include('package')

Google

Zart
07.04.2019
11:27:05
"при попытке зарегать хэндлер под 404 пирамида молча игнорирует его, если хэндлер под этот тип исключений без каких-то уточняющих предикатов уже есть"
не совсем верно
если ты будешь регать дважды в одной транзакции - будет конфликт
если регаешь в разных - второй победит

Milton
07.04.2019
11:27:49

Zart
07.04.2019
11:28:26
не понимаю зачем тебе свой 404

Milton
07.04.2019
11:29:17

Zart
07.04.2019
11:29:30
ммм
чем тогда не нравятся предикаты xhr=True для аякс запросов
и accepts='application/json' (не помню точную форму, там были планы починить негоциацию и возможно поправили это)

Milton
07.04.2019
11:30:51
Но есть проблема

Zart
07.04.2019
11:30:57
https://docs.pylonsproject.org/projects/pyramid-cookbook/en/latest/configuration/whirlwind_tour.html
тут про стратегии композиции конфигов вообще

Milton
07.04.2019
11:31:09
Авторы приложения — долбоёбы
Поэтому они не шлют accept и xhr
У них мобайл

Google

Milton
07.04.2019
11:31:35
У них не принято :\

Zart
07.04.2019
11:31:39
снифай по юзерагенту?

Milton
07.04.2019
11:32:17

Zart
07.04.2019
11:32:17
написать предикат который по юа хедеру определяет
is_mobile=True

Thorn
07.04.2019
11:33:16
у меня вот как, но этому коду много лет. предикат на Accept: было бы лучше https://gist.github.com/pthorn/1ef1a1a6b5fcf8efed60de763fc7840e

Zart
07.04.2019
11:34:25
мм.. ты там проверяешь наличие 'application/json' в аццепте, но не смотришь на квантифаер

Thorn
07.04.2019
11:34:45

Zart
07.04.2019
11:35:00
а зря, если в заголовке 'application/json, q=0;' то это валидный способ сказать "я никогда не хочу жсон"
по хорошему нужно сортировать аццепты по ку, потом проходить по списку и отбирать самый подходящий

Thorn
07.04.2019
11:36:11
ну вот если напишут / уже написали человеческий предикат, я все это выкину

Zart
07.04.2019
11:36:25
я давно не следил, может и есть

Thorn
07.04.2019
11:36:47
аналогично

Zart
07.04.2019
11:38:49
я следил за https://github.com/Pylons/pyramid/issues/1264

Boris
07.04.2019
11:43:01
Оно весной уже приоткрыто и вперед в полет на встречу с асфальтом

Zart
07.04.2019
11:43:44
в общем судя по багтракеру они перепилили обработку аццепт-тайп в 1.10й пирамиде
в паре с вебоб 1.8.3+

Mename
07.04.2019
14:59:54
Гайз, такая проблема, ставлю через пип пакет с флагом —user, но консольный энтри не работает
Если без —user то работает
pkg_resources.DistributionNotFound: The 'name==1.2' distribution was not found and is required by the application

Google

Zart
07.04.2019
15:06:27
в венве?

Mename
07.04.2019
15:06:49

Zart
07.04.2019
15:07:28
пока нихуя не понятно что ты вывалил

Mename
07.04.2019
15:08:08
pip install name
консольный энтрипоинт работает
pip install —user name
Говорит пакета нет

Zart
07.04.2019
15:08:24
в венве?

Mename
07.04.2019
15:08:34
В терминале

Zart
07.04.2019
15:08:38
...
так, нахуй

Mename
07.04.2019
15:08:45
Как ещё сказать блять
Нет

Zart
07.04.2019
15:08:55
тупым детям дорога в бегиннерсы

Mename
07.04.2019
15:08:57
Не венв

Mename
07.04.2019
15:09:26
венвом не пользуюсь
Чёто сначала не вкурил что это

Zart
07.04.2019
15:09:49
мне интересно почему у тебя пип инсталл без юзера работает

Павел
07.04.2019
15:10:08
а чо ты ставишь?

Zart
07.04.2019
15:10:35
надеюсь там не фигурирует судо

Admin
ERROR: S client not available

Mename
07.04.2019
15:10:36

Google

Zart
07.04.2019
15:10:53
...

Mename
07.04.2019
15:10:55
Я без судо не могу поставить в пип ничего

Zart
07.04.2019
15:11:05
предлагаю бан

Mename
07.04.2019
15:11:16
?)
а, ты имеешь ввиду —user без судо писать
Попробуем
Permission denied

Zart
07.04.2019
15:12:25
вот писать сюда такую хуйню теперь тоже пермишен денайд
совсем охуели

Dk
07.04.2019
15:12:33

Zart
07.04.2019
15:12:52
РО на неделю, пусть почитает почему судо не нужен

Oleg
07.04.2019
15:36:10
полезен бывает, особенно с nopasswd

Zart
07.04.2019
15:37:54
ваще нахуй не нужен

Dmitry
07.04.2019
16:26:59

Zart
07.04.2019
16:29:10
матросам вход в рубку запрещен, лоло

Oleg
07.04.2019
16:29:22
я не имел ввиду связку sudo + pip. конечно в этой ситуации никогда не нужен
некоторые хостинги, часто в швейцарии, не дают к vps доступ root, но разрешают выполнять некоторые команды, например рестарт условного апача

Denis
07.04.2019
16:31:03
А пакеты как ставить?

Oleg
07.04.2019
16:31:15
su -

Google

Zart
07.04.2019
16:31:28
это когда хотят питон, а покупают шаред хостинг для пхп
кто кого при этом наебал..

Oleg
07.04.2019
16:31:51
очень похожее, как divio, например
странные они там, но что поделать