@pydjango

Страница 16 из 1273
Тимур
17.08.2016
15:29:21
каналы

https://channels.readthedocs.io/en/latest/

parikLS
17.08.2016
15:29:35
а ты уже трогал каналы?

Тимур
17.08.2016
15:29:54
неа, сам ищу того кто трогал ))

Google
parikLS
17.08.2016
15:30:25
мне пока что как-то привычнее заюзать ту же торнаду

Paul
17.08.2016
15:35:22
чтобы гарантированно без оверселлинга - нужно свой сервак или несколько (и облако)
вы это рассказываете человеку, который в трех вебхостингах работал. Я знаю, как устроен оверсейл. У ихора он какой-то безумный, и сконфигурирован крайне плохо

Ilya
17.08.2016
16:27:38
[Anonymous]
17.08.2016
16:30:50
недавно, делал чатик на django+tornado
Круто, а можно код на github глянуть?

Ilya
17.08.2016
16:32:17
Круто, а можно код на github глянуть?
https://github.com/Venskiy/chat Только я ещё особо не рефакторил и не комментил код?

parikLS
17.08.2016
17:24:37
уже б декоратор написал))

Ilya
17.08.2016
17:25:37
ну, да,во время рефакторинга исправлю

спасибо за совет

parikLS
17.08.2016
17:26:24
и мне не нравится что нету обработчиков ошибок

Artem
17.08.2016
17:26:29
return HttpResponse('You are not loged in') есть функция - JsonResponse()

которая уже возращает джЫсонку с хедерами

parikLS
17.08.2016
17:26:45
на такие вещи например data = json.loads(request.body.decode('utf-8'))

Google
Ilya
17.08.2016
17:29:15
делал быстро, и пока особо и поэтому было желание быстрее сделать основной функционал

parikLS
17.08.2016
17:29:30
return HttpResponse('You are not loged in') есть функция - JsonResponse()
не знал даже) не нравится что нету параметра статус код

Artem
17.08.2016
17:29:44
там все имеется

Ilya
17.08.2016
17:29:49
и пока особо

это лишнее

[Anonymous]
17.08.2016
17:29:54
уже б декоратор написал))
Там же только декоратор, который юзает функцию, если есть сессия?

Ilya
17.08.2016
17:29:55
было в сообщении

Artem
17.08.2016
17:30:03
как вариант, так же можно юзануть REST

Ilya
17.08.2016
17:30:30
rest api framework?

Artem
17.08.2016
17:30:36
Ыгы

удобная весчь!

Ilya
17.08.2016
17:30:50
ни разу ещё не юзал

parikLS
17.08.2016
17:30:57
там все имеется
аа вижу, это сабкласс обычного хттп респонса

Ilya
17.08.2016
17:30:59
логичнее было бы

Artem
17.08.2016
17:31:08
у меня уже 4 проекта работает на ресте

Ilya
17.08.2016
17:31:08
так как на джанге только апи

[Anonymous]
17.08.2016
17:33:04
Типа @logged

Или вы свой декоратор хотели?)

Google
Ilya
17.08.2016
17:35:04
у меня уже 4 проекта работает на ресте
если не секрет, а какой у тебя опыт работы

просто вроде ты вообще тащер

[Anonymous]
17.08.2016
17:40:21
Для чего тесты в джанго?

Artem
17.08.2016
17:43:02
Ilya
17.08.2016
17:49:21
:)

Artem
17.08.2016
17:49:55
что бы тестить
Что бы делать очередной проект, и надеяться, что в этом проекте точно начну писать тесты ^_^

Ilya
17.08.2016
17:50:14
да да

есть такое

может по TDD

всё делать

тогда точно нужно будет тесты писать

arisu
17.08.2016
17:53:18
так возьмите и просто начните

Владимир
17.08.2016
17:53:40
нельзя так просто взять и начать (с) :)

arisu
17.08.2016
17:57:42
мотивации у вас нет

Artem
17.08.2016
17:57:49
Ага)

Ilya
17.08.2016
17:58:08
ну на самом деле

если адекватно посмотреть

то тесты могут экономить

время

Google
Artem
17.08.2016
17:58:33
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 ''

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)

ВОт тебе мотивация!

arisu
17.08.2016
17:58:49
что это за простыня ебать

Artem
17.08.2016
17:59:03
arisu
17.08.2016
18:00:36
а, вот с подсветкой понятно стало

Artem
17.08.2016
18:05:43
вот как раз рест с кучей пиздеца

[Anonymous]
18.08.2016
00:09:50
Тимур
18.08.2016
05:02:32
это ли еще простыня..

[Anonymous]
18.08.2016
05:42:14
А где вы джанго-сигналы используете?

Paul
18.08.2016
07:18:08
А где вы джанго-сигналы используете?
использовал для создания связанных моделей

Artem
18.08.2016
07:18:55
А чем встроенные сигналы не угодили?

Paul
18.08.2016
07:20:27
А чем встроенные сигналы не угодили?
значит, я неправильно вопрос понял, я как раз встроенные и использовал

arisu
18.08.2016
07:58:09
Сигналам не хватает описания изменившихся полей

Для postsave, postdelete

Alex
18.08.2016
11:43:47
Друзья, а скажите, какой самый простой способ расширить модель User? Мне надо добавить туда аватарку и manytomany между юзерами. Пробовал делать через Abstract user, но что-то у меня с таблицей напортачилось странное.

Можно ли создать отдельную модель с новыми полями и связать ее через OneToOne к юзеру или как-то похоже?

parikLS
18.08.2016
11:45:46
Можно, это называется прокси модель

[Anonymous]
18.08.2016
11:45:53
Есть два способа: наследование и твой

Google
parikLS
18.08.2016
11:49:36
Alex
18.08.2016
11:49:39
Я правильно понимаю, что в случае прокси модели, назовем ее NewUser (в котором помимо onetoone связи будет два новых поля), мне надо использовать ее как AUTH_USER_MODEL? Надо ли мне вьюху прописывать, чтобы форма сейвила именно NewUser? Нет ли возможности использовать именно User, но с добавочками?

Artem
18.08.2016
11:52:29
Тебе надо в настройках указать параметр Auth _user_model = 'path.to.user.model' И создать модельку от наследованой от AbstractBaseUser и PermissionMixin. Там хоть сколько полей втыкай. И соответственно self.request.user будет ломиться именно туда

Alex
18.08.2016
11:55:17
Тебе надо в настройках указать параметр Auth _user_model = 'path.to.user.model' И создать модельку от наследованой от AbstractBaseUser и PermissionMixin. Там хоть сколько полей втыкай. И соответственно self.request.user будет ломиться именно туда
Тогда вопрос. Если я создам такую модель юзера и пропишу ее в auth_user_model, стандартная таблица user останется в db? Это я спрашиваю на тот случай, если опять напортачу и бд полетит

Alex
18.08.2016
11:56:42
Вопросик: а если мне нужно обязательный email сделать? Как лучше?
Я, кстати, не знаю, приветствуется ли такое, но я это через django-allauth делал. Там есть ACCOUNT_AUTHENTICATION_METHOD = "email"

parikLS
18.08.2016
11:57:08
камон, в офф доке это все описано

[Anonymous]
18.08.2016
11:58:34
переопределяешь метод create_user
При чем здесь save? Здесь же само поле затрагивается?

Artem
18.08.2016
11:58:44
Обязательное поле - REQUIRED_FIELDS = []

Плюс надо будет расширить менеджер

parikLS
18.08.2016
12:00:33
При чем здесь save? Здесь же само поле затрагивается?
при том, что в стандартном менеджере не используется имейл для создания юзера

Artem
18.08.2016
12:01:40
Не забудь поля

[Anonymous]
18.08.2016
12:07:30
eugeny
18.08.2016
12:43:13
мужчины, а для SQLite3 какой есть лёгкий удобный клиент на Виндос?

[Anonymous]
18.08.2016
12:44:25
Для вас, Павел Иванович, хоть десять:)

eugeny
18.08.2016
12:53:23
мои компы не тянут пичарм((

Владимир
18.08.2016
13:00:43
кто-нибудь прикручивал https://pypi.python.org/pypi/django-datatable-view

в частности редактируемое поле

Страница 16 из 1273