
Eugene
25.04.2017
10:05:13
а если октрыть исходный код и попробовать октрыть файл, что будет?

Maksim
25.04.2017
10:06:06

Eugene
25.04.2017
10:06:30
а STATIC_DIRS

Google

Сергей
25.04.2017
10:06:50
Ребят, подскажите по celery-beat
Celery настроил с Джангой, все норм.
Поставил django-celery-beat, добавляю через админку таску print('Hello, World!') каждые 5 сек,
запускаю
celery -A myproject worker -l info
потом в отдельной консоли
celery -A myproject beat -l info -S django
и тишина.
только записи
[2017-04-25 13:02:51,345: INFO/MainProcess] Writing entries...
Что я делаю не так?

Maksim
25.04.2017
10:12:40
а STATIC_DIRS
на продакшине static dirs не нужны как в доках описывают

Dan
25.04.2017
10:17:22
какую?
а может и нет
планируется что статика будет отдаваться nginx ?
те после collectstatic
если зайти на example.com/static_admin/some/file.css
должо отдаться
если не отдается то не правильно настроен nginx

Ruslan
25.04.2017
10:34:07
смотри как я в апаче делаю:
<Directory "<ПУТЬ ДО ОКРУЖЕНИЯ>/src/django/contrib/admin/media">
Order allow,deny
Allow from all
</Directory>
Alias /admin/media/ "<ПУТЬ ДО ОКРУЖЕНИЯ>/src/django/contrib/admin/media/"
и всё

parikLS
25.04.2017
10:48:50

Сергей
25.04.2017
12:35:23
всем привет. не получается подружить django autocomplete light с django-jet.
с граппели автокомплит работал. подключил jet, убрал граппели, выдает:
$(...).select2 is not a function
django 1.6, django-autocomplete-light==3.2.2, django-jet==1.0.5

amureki
25.04.2017
12:40:30
он тебе ругается, что не может select2 найти при загрузке странички
посмотри, доступна ли либа и правильный ли на странице путь, где она вызвается

Сергей
25.04.2017
12:41:36
404х не вижу. а как посмотреть?
jet видимо переопределил какие-то спкрипты

amureki
25.04.2017
12:43:00
дак открой хтмл-код итоговой страницы, да найди где оно вызвается, открой руками :)

Google

Сергей
25.04.2017
12:43:08

amureki
25.04.2017
12:43:14
если доступна - могжет проблема в том что конфликтует как-то оно или вызвается два раза
ну и жиквери там пару раз в нагрузку вызывается, мусорно

Сергей
25.04.2017
12:44:47
$(this).select2({ - в файле select2.js

amureki
25.04.2017
12:47:10
нужно решить проблему с множественными загрузками,
а в самом селект2 я почти на 100% уверен все нормально

.
25.04.2017
13:41:59
Гайс, нужно написать тест, где я передаю данные в 3 поля и получаю результат поиск. Возникла проблема с одним полем.
forms.FilePathField(path=settings.var, match='.*\.yml$',
widget=forms.Select(attrs={'class': 'need-select2'}))Путь мы берем из сеттинга, при написании теста, мне это значение не очень подходит, поэтому в тесте я импортирую settings и меняю эту переменную. Но при отправке запроса, поле не проходит валидацию, в чем проблема может быть?

Сергей
25.04.2017
13:44:10
какая ошибка валидации?

.
25.04.2017
13:44:11
P.S. в тесте создаю нужный мне файл по нужному мне пути, а потом передаю этот путь в это поле
playbook = form.cleaned_data.get('playbook') пустой после валидации

amureki
25.04.2017
13:52:47
тесты без применения pytest, я так полагаю?
не уверен что это правильный путь, просто импортить сеттингс (кстати, как он у тебя импортируется?), но не знаю как в обычных тестах это резолвится
в pytest это очень просто, settings - как еще одна фикстурка, меняй как хочешь: http://pytest-django.readthedocs.io/en/latest/helpers.html#id3

.
25.04.2017
13:57:04
Pytest не юзаю. Импортирую django.conf import settings
пойду почитаю про pytest

amureki
25.04.2017
13:58:24
https://docs.djangoproject.com/en/1.11/topics/testing/tools/#overriding-settings

parikLS
25.04.2017
13:58:33
почитай про unittest.mock

amureki
25.04.2017
13:58:46
лол, надо просто погуглить и не выдумывать проблем

parikLS
25.04.2017
13:58:48
для начала

amureki
25.04.2017
13:58:50
сразу дока вылезла

Google

.
25.04.2017
14:00:52
Погуглить действительно стоило, спасибо)
Изменение настроек не помогло

amureki
25.04.2017
14:31:06
в функции перед использованием переменной из настроек делаем
import pdb; pdb.set_trace()
далее запускаем тест, когда остановится на бряке, деалем
settings.MY_VAR
смотрим, что кажет

.
25.04.2017
14:34:23
*** NameError: name 'settings' is not defined
импортнуть сеттинг?

Centrino
25.04.2017
14:34:53
да

amureki
25.04.2017
14:35:13
а как он не импортнут прямо перед самым его использованием? не совсем понятно
from django.conf import settings
def my_cool_function():
foo = 1
import pdb; pdb.set_trace()
# here we are breaking, type settings.BAR and check output
bar = settings.BAR

.
25.04.2017
14:39:35
Скорее всего я чего-то не понимаю, попробую объяснить еще раз. У меня есть форма из 3 полей, я в тесте пытаюсь передать значения этим 3 полям и получить ответ вьюхи. При передачи одного из значений полю, у меня форма не проходит валидацию. Вот это поле
playbook = forms.FilePathField(path=settings.var, match='.*\.yml$', required=False,
widget=forms.Select(attrs={'class': 'need-select2'}))Переменную из сетинга в тесте я не использую, но мне вроде нужно её изменить, чтобы у меня path у формы изменился на нужный мне и поле с моим значение проходило валидацию.
Щас импортнул pdb, выдает нужное мне значение, но валидация все равно не проходится \

amureki
25.04.2017
14:40:29
ну вот валидация - это что? функция, можно ее заоверрайдить и добавить туда брейкпоит и посмотреть данные

.
25.04.2017
14:41:40
Валидация это во вьюхе я вызываю form.is_valid()
Я попробовал подебажить немного, в response в cleaned_data моего playbook нет

amureki
25.04.2017
14:43:09
воот, смотри, ты можешь залезть в is_valid(), в то место где оно конкретно падает, поставить там брейкпоинт, посмотреть чего не хватает
ну и так лезем вверх, пока не докапываемся до правды
ну и ты не показал сам тест, неясно, как ты туда эти значения прокидываешь, может и не в settings совсем дело

.
25.04.2017
14:52:17
@override_settings(ANSIBLE_PLAYBOOKS_PATH='/tmp/playbooks/', ANSIBLE_WORK_DIR='/tmp/')
def test_get_queryset(self):
create_data_for_search()
os.mkdir('/tmp/playbooks')
f = open('/tmp/playbooks/main.yml', 'w')
f.write('test')
self.client.force_login(user=self.user)
response = self.client.get(reverse('task_search'),
{'template': '2','playbook': '/tmp/playbooks/main.yml',
'status': 'fail'})
self.assertEqual(len(response.context['object_list']), 1)
shutil.rmtree('/tmp/playbooks')Вот сам тест, пока не понял, как задежабить форм из валид во вьюхе, на выполнении теста
create_data_for_search это я просто создаю данные

parikLS
25.04.2017
14:57:37
а f.close() не нужно делать?
у тебя файл пустой будет
если его не закроешь

Google

Dan
25.04.2017
14:59:21
лучше использовать with

.
25.04.2017
14:59:27
Надо, но это не решает проблему. Проверял, не пустой

Dan
25.04.2017
14:59:27
он сам закроет

parikLS
25.04.2017
15:00:06
как проверял?

.
25.04.2017
15:00:43
у меня на этом тесте все падает, соотвественно shutil не удаляет ничего, можно открыть файлик и посмотреть

parikLS
25.04.2017
15:01:15
соответсвенно процесс пайтона завершается и файл закрывается
а в контексте выполнения процесса - файл пустой

Eugene
25.04.2017
15:01:37
я формы чаще всего проверяю как-то так:
def test_blank_name_form(self):
form = NameForm({})
self.assertFalse(form.is_valid())
self.assertEqual(form.errors, {'eror': 'eroro'})

Admin
ERROR: S client not available

Eugene
25.04.2017
15:02:18

.
25.04.2017
15:02:30
смотрел
Не совсем понял к чему тут тест на форму, это тест на поиск объектов)

Артемий
25.04.2017
15:07:54
Пишу для админки экшен, возник вопрос, что передаётся в метод, если я выбираю 1 объект? Список с длинной 1 или сам объект?
def send_messages(self, request, queryset):
а все, разобрался

.
25.04.2017
15:17:19
Скорее всего я чего-то не понимаю, попробую объяснить еще раз. У меня есть форма из 3 полей, я в тесте пытаюсь передать значения этим 3 полям и получить ответ вьюхи. При передачи одного из значений полю, у меня форма не проходит валидацию. Вот это поле
playbook = forms.FilePathField(path=settings.var, match='.*\.yml$', required=False,
widget=forms.Select(attrs={'class': 'need-select2'}))Переменную из сетинга в тесте я не использую, но мне вроде нужно её изменить, чтобы у меня path у формы изменился на нужный мне и поле с моим значение проходило валидацию.
Щас импортнул pdb, выдает нужное мне значение, но валидация все равно не проходится \
причем, если не менять сеттингс, и положить файлик по пути, который там указан, то все будет хорошо работать

parikLS
25.04.2017
15:21:33
ты клоуз вызвал на файле?
или виз

.
25.04.2017
15:23:20
вызывал

Dmytro
25.04.2017
16:10:18

Google

Сергей
25.04.2017
16:12:20
мини-костыль - добавил ```app.conf.beat_schedule = {'dummy-task':{ 'task': 'celery.dummy', 'schedule': 60*60*24*365} }
и после этого beat увидел все таски, добавленные через админку. Что-то с инициализацией не так. вроде все по доке (

Eugene
25.04.2017
16:16:01
Кстати, вспомнил делал тест с файлом, мутил через with open

Dmytro
25.04.2017
16:16:20
Создал файл celery, в init добавил строчку?

Сергей
25.04.2017
16:18:13
# __init__.py
from __future__ import absolute_import
# This will make sure the app is always imported when
# Django starts so that shared_task will use this app.
from .celery import app as celery_app

Romka
25.04.2017
17:42:45
Всем привет
Для обработки 404 и 500 ошибок будет достаточно в urls.py главного приложения добавить это?
handler404 = curry(page_not_found, exception=Exception('Page not Found'), template_name='page-statuses/404.html')
handler500 = curry(server_error, template_name='page-statuses/500.html')
или его нужно добавлять в каждое приложение?

Anb
25.04.2017
17:57:00
фигзнает
верни ошибку в приложении

Matz
25.04.2017
18:01:19
Всем привет
Привет.
Ты описал Customizing error views.
Тут можно более подробно прочитать:
https://docs.djangoproject.com/en/1.11/topics/http/views/#the-http404-exception

Константин
26.04.2017
04:39:58
Всем салют.
Пытаюсь развернуть тестовый сервер отдельный, переношу БД с помощью manage.py loaddata и выбрасывает ошибку "value too long for type character varying(80)"
Как этот лимит безболезненно поднять? Базу можно ковырять как угодно, она не будет с продом синхронизоваться

Anb
26.04.2017
05:53:56
Зачем?)
Сделай дамп на тестовом/прод и залей себе
mysqldump pgdump

parikLS
26.04.2017
05:58:21

Pavel
26.04.2017
06:25:48
https://www.twoscoopspress.com/products/two-scoops-of-django-1-11
1.11 вышла пару недель назад, а Two Scoops уже книгу про неё выдали.

Ruslan
26.04.2017
06:26:51
Писать начинали видимо ешё задолго до релиза :)

Pavel
26.04.2017
06:27:39
Хотелось бы на дифы посмотреть 1.6 -> 1.8 -> 1.11

Артем
26.04.2017
06:44:57
{{date| date:"d.m.Y"}} — Народ кто сталкивался, в django 1.11 перестали работать фильтры. В дока вроде ничего такого не нарыл (( Или проглядел. Если кто знает подскажите плиз или направте краба)))

Andrey
26.04.2017
07:10:46
{{date| date:"d.m.Y"}} пробел