@pydjango
Django

Полезная информация и правила: https://github.com/amureki/django_faq Вакансии и резюме: @django_jobs Пофлудить идём сюда: @django_flood Статистика чата: combot.org/chat/-1001063854692

1741 members

Архив канала @pydjango 17 августа 2016 г.

05:13:05 ДП
User 88111010
User 1534653
тут как повезет. Бывают хорошие машины, бывают не очень. Мне попадались откровенно бракованные машины, с битыми винтами (поменяли), помирающим процом (поменяли пол-мащины, починить не удалось)
советую digitalocean.com - вообще никаких траблов и техподдержка на высоте + пачка манов по установке и настройке разного рода
digitalocean.com
Providing developers and businesses a reliable, easy-to-use cloud computing platform of virtual servers (Droplets), object storage ( Spaces), and more.
09:37:33 ДП
User 200200555
User 88111010
советую digitalocean.com - вообще никаких траблов и техподдержка на высоте + пачка манов по установке и настройке разного рода
digitalocean.com
Providing developers and businesses a reliable, easy-to-use cloud computing platform of virtual servers (Droplets), object storage ( Spaces), and more.
Это облако
Облако берут для проектов которые быстро взлетят, и нужно будет доп мощность.
Тут 512 ОЗУ за 5 баксов, что очень дорого. На ihor 1 гиг 200 рублей (250 с ССД). Вдс нельзя проапгрейдить, облако можно
09:37:45 ДП
User 200200555
Много крупных проэктов на океане и амазоне сидят
09:38:06 ДП
User 200200555
Но для рядового пользователя которому 1 гига хватит - слишком невыгодно
09:38:27 ДП
User 88111010
User 200200555
Это облако
Облако берут для проектов которые быстро взлетят, и нужно будет доп мощность.
Тут 512 ОЗУ за 5 баксов, что очень дорого. На ihor 1 гиг 200 рублей (250 с ССД). Вдс нельзя проапгрейдить, облако можно
все что стоит в рашке япризираю
09:38:35 ДП
User 88111010
опыт имеется
09:38:45 ДП
User 88111010
спасибо но наелся
09:38:56 ДП
User 200200555
Они качественные
Айхор нормас
09:39:18 ДП
User 1534653
User 200200555
Это облако
Облако берут для проектов которые быстро взлетят, и нужно будет доп мощность.
Тут 512 ОЗУ за 5 баксов, что очень дорого. На ihor 1 гиг 200 рублей (250 с ССД). Вдс нельзя проапгрейдить, облако можно
Ihor - адовый хостинг на самом деле. Не порекомендую никому, даже OVH/Ghandi лучше
09:43:45 ДП
User 200200555
User 1534653
Ihor - адовый хостинг на самом деле. Не порекомендую никому, даже OVH/Ghandi лучше
Почему?
09:46:20 ДП
User 1534653
User 200200555
Почему?
по личному опыту. Дикий оверселл, легко могут удалить машин и сказать, что так и было
09:46:44 ДП
User 200200555
User 1534653
по личному опыту. Дикий оверселл, легко могут удалить машин и сказать, что так и было
Билли, нам нужны пруфы!
09:47:13 ДП
User 1534653
я не буду сейчас поднимать переписку с ихором. Это мой личный опыт.
09:47:55 ДП
User 200200555
Значит вопрос незакрыт
09:51:58 ДП
User 567937
про vscale.io писали?
vscale.io
Vscale: облачные серверы для профессионалов. Дешевле и быстрее зарубежных сервисов. https://vscale.io
09:58:15 ДП
User 48374918
тогда и я внесу свою лепту - https://www.webfaction.com/
10:00:27 ДП
User 200200555
Shared

1GB
$10/mo
10:01:01 ДП
User 266289431
И я :3
https://cloud.google.com
cloud.google.com/?hl=en
Build, innovate, and scale with Google Cloud Platform. Collaborate and be more productive with G Suite. See what’s possible with Google Cloud.
11:54:29 ДП
User 158455295
Всем привет! Чувствую что вопрос глупый и решается в два счета но никак сам не могу догадаться как именно. Проблема такова - есть ListView в котором вычисляется queryset. Нужно сделать так, чтобы при пустом массиве queryset выполнялся редирект на другую страницу. Тупой редирект в метода get_queryset() возврщает элемент типа редирект вместо самого редиректа. Может быть кто-то пнет в нужную сторону?
11:55:11 ДП
User 1534653
что значит "типа редирект"?
11:56:05 ДП
User 266289431
Redirect какой-то. (с)Экстрасенс
11:56:55 ДП
User 1534653
коллеги-джангисты, подскажите, какой рекомендуете middleware для установления HTTP header-ов? Возможно ли это в принципе? django работает через uwsgi
11:59:46 ДП
User 158455295
> @not_logan
что значит "типа редирект"?

Я имел ввиду что возвращает объект. Который потом можно даже обработать в темплейте
12:01:03 ПП
User 1534653
qset всегда возвращает объект.
12:01:37 ПП
User 1534653
насколько я знаю - никак это не побороть. Можно попробовать в get_context_data проверять размер объекта, и если там фига - делать редирект
12:01:38 ПП
User 158455295
User 1534653
qset всегда возвращает объект.
Я об этом и говорю. Редирект значит нужно где-то в другом месте использовать. Только где?
12:02:23 ПП
User 1534653
get_context_data?
12:02:43 ПП
User 158455295
User 1534653
насколько я знаю - никак это не побороть. Можно попробовать в get_context_data проверять размер объекта, и если там фига - делать редирект
Спасибо, попробую.
12:05:38 ПП
User 48374918
User 1534653
коллеги-джангисты, подскажите, какой рекомендуете middleware для установления HTTP header-ов? Возможно ли это в принципе? django работает через uwsgi
http://stackoverflow.com/questions/36099244/how-to-add-an-http-header-to-all-django-responses
stackoverflow.com/questions/36099244/how-to-add-an-http-header-to-all-django-responses
I'd like to add a few headers to all responses that my Django website returns. Is there a way to do this (besides adding a wrapper to the render function)?
12:07:38 ПП
User 1534653
о, спасибо. То есть нету, но самому написать несложно. А кто-нибудь пробовал это в WSGI делать? Оно нормально работает?
12:10:32 ПП
User 48374918
а какой заголовок надо послать ?
12:10:44 ПП
User 1534653
ну я спрашивал про CSP в первую очередь
12:10:49 ПП
User 48374918
может можно просто через httpresponse
12:10:52 ПП
User 1534653
у меня оно сейчас в nginx прописано :)
12:13:36 ПП
User 48374918
если в одном месте то по теории можно через HttpResponse
12:14:03 ПП
User 48374918
https://docs.djangoproject.com/en/1.10/ref/request-response/#django.http.HttpResponse.__setitem__ как вариант
12:14:05 ПП
User 1534653
нет, оно по всему сайту размыто, это всеобщий хэдер
12:14:29 ПП
User 48374918
ну тогда да через мидлвар
12:14:56 ПП
User 1534653
спасибо
12:27:06 ПП
User 158455295
User 1534653
насколько я знаю - никак это не побороть. Можно попробовать в get_context_data проверять размер объекта, и если там фига - делать редирект
Не помогло. В этом случае джанга ожидает контекст, а я ей редирект сую..
12:35:45 ПП
User 82569033
Гайз, можете подсказать проекты, которые можно было бы реализовать новичку
12:36:25 ПП
User 158455295
Если вдруг кому-нибуть нужно, то нашел такое вот решение:

    def get(self, request, *args, **kwargs):
        super_get = super().get(self, request, *args, **kwargs)
        if not self.object_list:
            return redirect('create')
        return super_get

Не самое элегантное, но чем богаты, как говорится
12:41:37 ПП
User 142429867
User 82569033
Гайз, можете подсказать проекты, которые можно было бы реализовать новичку
https://github.com/karan/Projects
github.com/karan/Projects
Projects - :page_with_curl: A list of practical projects that anyone can solve in any programming language.
12:45:25 ПП
User 82569033
Тут же вроде просто задачи для любого ЯП, я хочу углубляться в дажнго
12:46:16 ПП
User 142429867
User 82569033
Тут же вроде просто задачи для любого ЯП, я хочу углубляться в дажнго
Ну так возьми оттуда что-нибудь и реализуй на джанго :)
12:47:29 ПП
User 1534653
можно просто взять какой-нибудь сайт и его тупо скопировать
12:47:32 ПП
User 1534653
для себя
12:48:59 ПП
User 266289431
Или же написать "блог" для GitHub.io на Django. (с комментариями и пр.)
12:49:23 ПП
User 266289431
Ябыфоркнул
12:49:52 ПП
User 1534653
User 266289431
Или же написать "блог" для GitHub.io на Django. (с комментариями и пр.)
возьмите Сагалеевский
12:49:59 ПП
User 1534653
его все равно никто не поддерживает уже
12:51:32 ПП
User 266289431
User 1534653
возьмите Сагалеевский
Гугль не знает такого.
12:51:41 ПП
User 1534653
https://github.com/adw0rd/marcus
github.com/adw0rd/marcus
marcus - Bilingual blog on Django
12:52:24 ПП
User 200200555
User 266289431
Или же написать "блог" для GitHub.io на Django. (с комментариями и пр.)
GitHub.io на Django
12:52:39 ПП
User 200200555
Интересно как ты на гитхаб ио бэкенд впилишь?
12:52:51 ПП
User 1534653
User 200200555
GitHub.io на Django
серьезно? Я думал - тоже рельсы
12:53:19 ПП
User 200200555
User 1534653
серьезно? Я думал - тоже рельсы
(это была цитата с его сообщения, посмотри в контексте)
12:55:00 ПП
User 1534653
а, я немного не понял, значит
12:56:45 ПП
User 266289431
User 200200555
Интересно как ты на гитхаб ио бэкенд впилишь?
Как генератор не использовать его?
01:02:18 ПП
User 82569033
Я если что,  новичек. Посмотрел курс от shadrur'a по джанге. Не знаю что делать дальше.  Идея с копированием сайта мне понравилась, но боюсь выберу что-то сложное и там же загнусь. Мне понравилась идея с чатом, но на ajax, я так понял, что без js там не обойтись?
01:07:35 ПП
User 567937
не обойтись
01:07:53 ПП
User 567937
если не хочешь js, но хочешь посложнее
01:07:59 ПП
User 567937
попробуй слабать что нибудь с очередями
01:08:03 ПП
User 88111010
Господа, разыскивается прогер на Python/Django для работы на удаленке, что кто скажет? :)
https://vk.com/vasilyjim
01:08:23 ПП
User 1534653
User 82569033
Я если что,  новичек. Посмотрел курс от shadrur'a по джанге. Не знаю что делать дальше.  Идея с копированием сайта мне понравилась, но боюсь выберу что-то сложное и там же загнусь. Мне понравилась идея с чатом, но на ajax, я так понял, что без js там не обойтись?
учитывая, что AJAX - это Async Javascript And XML....
01:09:22 ПП
User 567937
User 88111010
Господа, разыскивается прогер на Python/Django для работы на удаленке, что кто скажет? :)
https://vk.com/vasilyjim
пишите сразу уровень и зп «от»
01:09:29 ПП
User 567937
сэкономит людям кучу времени
01:09:35 ПП
User 567937
и диалог пойдет живее
01:09:43 ПП
User 88111010
User 567937
пишите сразу уровень и зп «от»
https://vk.com/pirsipy?w=wall-69108280_5908
vk.com/wall-69108280_5908
Господа, разыскивается прогер на Python/Django для работы на удаленке, что кто скажет? :)
01:10:14 ПП
01:10:25 ПП
User 567937
это вроде «мопед не мой»
01:10:53 ПП
User 1534653
User 567937
это вроде «мопед не мой»
это идеальный способ выглядеть глупо на самом деле
01:11:06 ПП
User 82569033
Тогда такой вопрос, как лучше вкатываться в ajax. Есть что-то кроме документации?
01:12:05 ПП
User 1534653
User 82569033
Тогда такой вопрос, как лучше вкатываться в ajax. Есть что-то кроме документации?
курсы, книги. У codeschool был прекрасный курс по jQuery - для новичка отлично
01:12:23 ПП
User 567937
а почему тебе кажется, что документации не хватит?
01:13:08 ПП
User 567937
тебе ведь не обязательно все с нуля писать на ваниле. для обучения, можно взять богомерский jquery, где из коробки есть инстурменты для работы с ajax
01:13:26 ПП
User 82569033
User 567937
а почему тебе кажется, что документации не хватит?
документации хватит, просто если есть выбор между документацией и чем-то другим, я выберу что-то другое. У меня всегда плохо с документацией, особенно если с 0 вкатываюсь
01:13:49 ПП
User 82569033
User 1534653
курсы, книги. У codeschool был прекрасный курс по jQuery - для новичка отлично
спасибо
01:17:21 ПП
User 200200555
User 82569033
Тогда такой вопрос, как лучше вкатываться в ajax. Есть что-то кроме документации?
https://www.youtube.com/playlist?list=PLscDMV7EBHBQVXvpV6bQHbpXPYdXP8Fru
01:23:38 ПП
User 1534653
User 82569033
спасибо
уточню, курс на английском. Но тут увы.
01:32:05 ПП
User 82569033
Я понимаю
01:54:31 ПП
User 109322233
User 200200555
Значит вопрос незакрыт
никто никогда не запрещает наступать на чужие грабли самостоятельно
01:58:03 ПП
User 88647413
Привет, народ, что нового?
02:31:18 ПП
User 2895769
чтобы гарантированно без оверселлинга - нужно свой сервак или несколько (и облако)
02:31:33 ПП
User 2895769
но это уже другие затраты по деньгам, конечно
03:13:13 ПП
User 109322233
User 2895769
чтобы гарантированно без оверселлинга - нужно свой сервак или несколько (и облако)
есть норм облака с гарантированными ресурсами, особенно если оно на мощном железе (которое в дедик брать совсем уж дорого) то прям шоколад получается
03:14:11 ПП
User 48374918
User 82569033
Гайз, можете подсказать проекты, которые можно было бы реализовать новичку
Если для себя, для практики, попробуй реализовать rss читалку
03:27:46 ПП
User 88647413
Кто-нибудь реализовывал чат с django+ассинхронный фреймворк?
03:28:20 ПП
User 109322233
делали отдельный демон на асинкио
03:28:52 ПП
User 50636399
а django-signals не ок?
03:29:11 ПП
User 107485588
делал с асинкио, делал с торнадой
03:29:18 ПП
User 50636399
сорян
03:29:20 ПП
User 50636399
не сигналы
03:29:21 ПП
User 50636399
каналы
03:29:22 ПП
User 50636399
https://channels.readthedocs.io/en/latest/
03:29:35 ПП
User 107485588
а ты уже трогал каналы?
03:29:54 ПП
User 50636399
неа, сам ищу того кто трогал ))
03:30:25 ПП
User 107485588
мне пока что как-то привычнее заюзать ту же торнаду
03:35:22 ПП
User 1534653
User 2895769
чтобы гарантированно без оверселлинга - нужно свой сервак или несколько (и облако)
вы это рассказываете человеку, который в трех вебхостингах работал. Я знаю, как устроен оверсейл. У ихора он какой-то безумный, и сконфигурирован крайне плохо
04:27:38 ПП
User 122982618
User 88647413
Кто-нибудь реализовывал чат с django+ассинхронный фреймворк?
недавно, делал чатик на django+tornado
04:30:50 ПП
User 88647413
User 122982618
недавно, делал чатик на django+tornado
Круто, а можно код на github глянуть?
04:32:17 ПП
User 122982618
User 88647413
Круто, а можно код на github глянуть?
https://github.com/Venskiy/chat
Только я ещё особо не рефакторил и не комментил код😅
github.com/Venskiy/chat
chat - Chat
05:24:37 ПП
User 107485588
User 122982618
https://github.com/Venskiy/chat
Только я ещё особо не рефакторил и не комментил код😅
github.com/Venskiy/chat
chat - Chat
if not request.user.is_authenticated():
return HttpResponse('You are not loged in')
05:24:45 ПП
User 107485588
уже б декоратор написал))
05:25:37 ПП
User 122982618
ну, да,во время рефакторинга исправлю
05:25:40 ПП
User 122982618
спасибо за совет
05:26:24 ПП
User 107485588
и мне не нравится что нету обработчиков ошибок
05:26:29 ПП
User 100243492
return HttpResponse('You are not loged in')
есть функция - JsonResponse()
05:26:37 ПП
User 100243492
которая уже возращает джЫсонку с хедерами
05:26:45 ПП
User 107485588
на такие вещи например data = json.loads(request.body.decode('utf-8'))
05:29:15 ПП
User 122982618
делал быстро, и пока особо и поэтому было желание быстрее сделать основной функционал
05:29:30 ПП
User 107485588
User 100243492
return HttpResponse('You are not loged in')
есть функция - JsonResponse()
не знал даже) не нравится что нету параметра статус код
05:29:44 ПП
User 100243492
там все имеется
05:29:49 ПП
User 122982618
и пока особо
05:29:52 ПП
User 122982618
это лишнее
05:29:54 ПП
User 88647413
User 107485588
уже б декоратор написал))
Там же только декоратор, который юзает функцию, если есть сессия?
05:29:55 ПП
User 122982618
было в сообщении
05:30:03 ПП
User 100243492
как вариант, так же можно юзануть REST
05:30:30 ПП
User 122982618
rest api framework?
05:30:36 ПП
05:30:42 ПП
User 100243492
удобная весчь!
05:30:50 ПП
User 122982618
ни разу ещё не юзал
05:30:57 ПП
User 107485588
User 100243492
там все имеется
аа вижу, это сабкласс обычного хттп респонса
05:30:59 ПП
User 122982618
логичнее было бы
05:31:08 ПП
User 100243492
у меня уже 4 проекта работает на ресте
05:31:08 ПП
User 122982618
так как на джанге только апи
05:31:15 ПП
User 88647413
User 88647413
Там же только декоратор, который юзает функцию, если есть сессия?
???
05:31:34 ПП
User 107485588
User 88647413
Там же только декоратор, который юзает функцию, если есть сессия?
не понял
05:33:04 ПП
User 88647413
Типа @logged
05:33:46 ПП
User 88647413
Или вы свой декоратор хотели?)
05:35:04 ПП
User 122982618
User 100243492
у меня уже 4 проекта работает на ресте
если не секрет, а какой у тебя опыт работы
05:35:08 ПП
User 122982618
просто вроде ты вообще тащер
05:40:21 ПП
User 88647413
Для чего тесты в джанго?
05:43:02 ПП
User 100243492
User 122982618
если не секрет, а какой у тебя опыт работы
3 года шпилю на питоне
05:49:21 ПП
User 122982618
User 88647413
Для чего тесты в джанго?
что бы тестить
05:49:24 ПП
05:49:55 ПП
User 100243492
User 122982618
что бы тестить
Что бы делать очередной проект, и надеяться, что в этом проекте точно начну писать тесты ^_^
05:50:14 ПП
05:50:16 ПП
User 122982618
есть такое
05:50:31 ПП
User 122982618
может по TDD
05:50:33 ПП
User 122982618
всё делать
05:50:45 ПП
User 122982618
тогда точно нужно будет тесты писать
05:53:18 ПП
User 378433
так возьмите и просто начните
05:53:40 ПП
User 142429867
нельзя так просто взять и начать (с) :)
05:57:42 ПП
User 378433
мотивации  у вас нет
05:57:49 ПП
05:58:08 ПП
User 122982618
ну на самом деле
05:58:11 ПП
User 122982618
если адекватно посмотреть
05:58:21 ПП
User 122982618
то тесты могут экономить
05:58:22 ПП
User 122982618
время
05:58:33 ПП
User 100243492
class ListChatsCompanion(ListAPIView):
    model = Lobby
    permission_classes = [IsAuthenticated]
    pagination_class = None

    def get_queryset(self):
        return self.model.objects.order_by('-date_created'). \
            select_related('user', 'companion').\
            prefetch_related(
                Prefetch('message_lobby', Message.objects.order_by('-pk').all(),
                         to_attr='last_message'),
                Prefetch('invoice_chat', Invoice.objects.
                         select_related('chat', 'sending', 'delivery').all(),
                         to_attr='last_invoice')
            ).filter(Q(user=self.request.user) | Q(companion=self.request.user))

    @staticmethod
    def get_status_online(user):
        ONLINE, OFFLINE = 1, 0
        if user.last_login < timezone.now() - timedelta(minutes=15):
            return ONLINE
        else:
            return OFFLINE

    @staticmethod
    def get_town_travel(lang, pk, direct, trip):
        """
        :param lang: int value by language for translate response
        :param pk: primary key by instance model
        :param direct: type of direction in (from || to)
        :param trip: type of trip in (del || send)
        :return: response string with title of town
        """
        data_queryset_filter = {}
        if direct is 'from':
            if trip is 'del':
                data_queryset_filter[trip + '_address_from_coords'] = pk
            data_queryset_filter[trip + '_address_from_coords'] = pk
        if direct is 'to':
            if trip is 'del':
                data_queryset_filter[trip + '_address_to_coords'] = pk
            data_queryset_filter[trip + '_address_to_coords'] = pk

        geo = GeoCoding.objects.prefetch_related('lang_address_geocode'). \
            filter(**data_queryset_filter). \
            filter(lang_address_geocode__lang=lang). \
            values('lang_address_geocode__political_town').first()

        if geo is not None:
            return geo['lang_address_geocode__political_town']
        return ''
05:58:33 ПП
User 100243492

    def get(self, request, *args, **kwargs):
        """
        :param request:
        :param args:
        :param kwargs:
        :return:
        """
        user = self.request.user
        limit = self.request.query_params.get('count', 10)
        offset = self.request.query_params.get('from', 0)
        lang = lang_to_int(self.request.META.get('HTTP_LANGUAGE', 'en'))
        to_offset = int(limit) + int(offset)
        if not self.get_queryset().exists():
            return ErrorResponse(
                code=HTTP_404_NOT_FOUND,
                msg=_(u'Chats not found')
            )
        retrieve_chat_message = self.get_queryset()
        retrieve_chat = self.get_queryset()[offset:to_offset]
        chat_list = {'chats': map(lambda x: {
            'id': x.pk, 'date_created': dt_to_int_unix(x.date_created),
            'invoice_id': [f.pk for f in x.invoice_chat.all()].pop(),
            'chat_status': [f.status for f in x.invoice_chat.all()].pop(),
            'from': self.get_town_travel(
                lang=lang, direct='from', trip='del',
                pk=[f.delivery.pk for f in x.invoice_chat.all()].pop()
            ),
            'to': self.get_town_travel(
                lang=lang, direct='to', trip='del',
                pk=[f.delivery.pk for f in x.invoice_chat.all()].pop()
            ),
            'chat_user': {
                'id': x.user.pk, 'first_name': x.user.first_name,
                'last_name': x.user.last_name,
                'status': self.get_status_online(x.user),
                'avatar': validate_avatar(x.user.avatar.url),
            } if x.user != user else {
                'id': x.companion.pk, 'first_name': x.companion.first_name,
                'last_name': x.companion.last_name,
                'status': self.get_status_online(x.companion),
                'avatar': validate_avatar(x.companion.avatar.url),
            },
            'last_message': {
                'id': x.last_message[0].pk, 'text': x.last_message[0].text,
                'own_my': True if x.last_message[0].user == user else False,
                'date_created': dt_to_int_unix(x.last_message[0].date_created)
            } if x.last_message else {
                'id': None, 'text': '', 'own_my': None, 'date_created': 0
            },
            'unread_messages':
                retrieve_chat_message.filter(message_lobby__companion=user,
                                             message_lobby__is_read=False,
                                             message_lobby__lobby=x).count()
        }, retrieve_chat)}
        chat_list.update({'count': retrieve_chat.count()})
        return Response(chat_list)
05:58:37 ПП
User 100243492
ВОт тебе мотивация!
05:58:49 ПП
User 378433
что это за простыня ебать
05:59:03 ПП
User 100243492
User 100243492
ВОт тебе мотивация!
повторюсь!
06:00:36 ПП
User 378433
а, вот с подсветкой понятно стало
06:05:43 ПП
User 100243492
вот как раз рест с кучей пиздеца