• Как разганичить доступ к записям, crud только своих записей пользователя?

    @pyHammer
    Самый лучший вариант для вас django-rules. И как сказали выше, queryset с фильтром по user, если вы используете CBV, то вам нужно написать миксин с перезагрузкой метода get_queryset. Если Вы пишите представления функции, то предлагаю вам отказаться от них в пользу CBV.
    Ответ написан
    Комментировать
  • Как отправить письмо по SMTP в Django?

    @pyHammer
    У Вас наверняка есть хостинг) хотя бы минимальный. Создаете там почтовый ящик и в документации заполняете нужные параметры. Вот это работает не beget.ru
    EMAIL_HOST = "smtp.beget.com"
    EMAIL_HOST_USER = "info@site.ru"
    EMAIL_HOST_PASSWORD = "&*R5mVWt"
    EMAIL_PORT = 465
    EMAIL_USE_SSL = True
    SERVER_EMAIL = "info@site.ru"
    DEFAULT_FROM_EMAIL = "info@site.ru"
    Ответ написан
    Комментировать
  • Как создать пространственную БД для работы с GeoDjango?

    @pyHammer
    Во-первых, Вам нужно осваивать Linux. Это просто минимальная база, если Вы планируете в всерьез заниматься веб-разработкой.
    Во-вторых, PostgreSQL лучше справляется с пространственными данными (я сам даже альтернативы не стал рассмативать). Вот Вам исчерпывающий мануал по использованию PostgreSQL и PostGIS, тут и PostgeSQL как установить и как подключить PostGIS.
    Еще вам понадобится это. Этого достаточно для работы Django c PostgreSQL.
    Ответ написан
    3 комментария
  • Как лучше использовать permission в django?

    @pyHammer
    Я бы не стал делать две модели User и Partner, ограничился бы одной User. В Django достаточно хорошо продуман механизм назначения прав. Так вот создаёте группу Partners и назначает там права, партнёров добавляете в эту группу. Если вы используете CBV то есть специальный миксин, который добавляет атрибут и там можно указывать те права которым должен обладать пользователь.
    Также вам будет полезен пакет django-rules.
    Если есть вопросы или нужны ссылки на подробности, то пишите в комментариях.
    Ответ написан
    Комментировать
  • Как при асинхронной обработке с помощью нейросетей не подтягивать каждый раз веса?

    @pyHammer Автор вопроса
    После более глубокого изучения python rq, сделали следующим образом, вместо запуска rq worker, мы запускаем скрипт python run_rq.py. Почти не измененный пример из документации.
    # run_rq.py
    import sys
    from rq import Connection
    
    from worker import CustomWorker
    
    # Preload libraries
    from pydarknet import Detector
    
    detector = Detector(bytes('cfg/yolov3.cfg', encoding='utf-8'),
                        bytes('weights/yolov3.weights', encoding='utf-8'),
                        0,
                        bytes('cfg/coco.data',encoding='utf-8'))
    
    # Provide queue names to listen to as arguments to this script,
    # similar to rq worker
    with Connection():
        qs = sys.argv[1:] or ['default']
    
        w = CustomWorker(qs)
        w.detector = detector
        w.work()
    
    
    # worker.py
    from rq.worker import (DEFAULT_JOB_MONITORING_INTERVAL, DEFAULT_RESULT_TTL,
                           DEFAULT_WORKER_TTL, Worker)
    
    import settings
    
    
    class CustomWorker(Worker):
        def __init__(self, queues, name=None, default_result_ttl=DEFAULT_RESULT_TTL,
                     connection=None, exc_handler=None, exception_handlers=None,
                     default_worker_ttl=DEFAULT_WORKER_TTL, job_class=None,
                     queue_class=None,
                     job_monitoring_interval=DEFAULT_JOB_MONITORING_INTERVAL):
    
            super(CustomWorker, self).__init__(queues, name, default_result_ttl,
                connection, exc_handler, exception_handlers, default_worker_ttl,
                job_class, queue_class,job_monitoring_interval)
    
            self.detector = None
    
        def execute_job(self, job, queue):
            if not self.detector is None:
                job.detector = self.detector
    
            super(CustomWorker, self).execute_job(job, queue)
    
    # tasks.py
    from rq import get_current_job
    
    import settings
    
    
    def send():
        job = get_current_job()
        if not job.detector is None:
            # do more work

    Далее внутри кастомного воркера в методе execute_job мы и передаем инстанс detector в внутрь Job.
    Таким образом каждый инстанс Job получает уже посчитанный заранее Detector.
    Ответ написан
    Комментировать
  • Где выгодно хранить блог на Django с трафиком не более 5000 в день?

    @pyHammer
    Размещаю проекты на beget, goo.gl/wbxmHK пока что заказчики не жаловались на тормоза. По графикам нагрузки на сервер, Django потребляет меньше ресурсов, чем PHP интернет магазины даже без модов.
    Ответ написан
    Комментировать
  • Django-Filters: в select вместо нужно поля пользователя передается email. Как исправить?

    @pyHammer
    Вы в параметр queryset должны передавать City.objects.all()
    Ответ написан
    Комментировать
  • Нужно ли использовать Celery?

    @pyHammer
    Как уже сказал Антон Рейтаровский Celery громоздкий, но в случаях когда мне требуется что-то более лёгкое, я использую python-rq
    Ответ написан
    1 комментарий
  • Как в django model отключить username у пользователя?

    @pyHammer
    Сейчас в любой новый проект ложу собственное приложение account в котором изменил USERNAME_FIELD на email и в settings прописываю AUTH_USER_MODEL = 'account.User'. Это избавляет от проблем с масштабированием, так как на уже действующий проект сложно прикрутить или изменить авторизацию. Всегда избавляюсь от этого поля по возможности в пользу email, но если нужно оставить его то все равно для авторизации использую email. Если интересно могу выложить на github это приложение
    Ответ написан
    Комментировать
  • Почему websoket не хочет работать через сотовую связь?

    @pyHammer Автор вопроса
    Все проблема была в upstream! Его я убрал совсем и прописал proxy_pass http://127.0.0.1:9101; и все стало работать. Также tornado запустил не 4 workers а одного.

    Tornado также служил оповещателем. Когда происходило событие я делал POST к самому себе "requests.post("https://____.ru/notify", params=dict(message=string))" tornado его обрабатывал
    from notification.connection import ClientConnection
    
    class BroadcastHandler(tornado.web.RequestHandler):
        def post(self):
            message = self.get_argument('message', default="")
            
            for client in ClientConnection.clients:
                data = json.loads(message)
    
                if data['dev'] in client.devices:
                    client.send(message)
    
            self.write(str(ClientConnection.clients))


    Когда я работал через Wi-Fi tornago что то возвращал вот тут "self.write(str(ClientConnection.clients))", но когда я подключался через мобильные данные эта строка не содержала ни одного подключения...

    Интересно, что если делал со своего компьютера POST запрос к https://____.ru/notify, то независимо в какой сети я работаю, все работало...

    Проблема ушла, но в чем ее суть я так и не понял.
    Ответ написан
    Комментировать
  • Как запустить сайт Django nginx uwsgi?

    @pyHammer
    Вот на русском https://habrahabr.ru/post/226419/
    Ответ написан
    Комментировать
  • Как разрешить браузеру получать ответы 400 и т.п. через CORS?

    @pyHammer Автор вопроса
    Решил проблему пересборкрй Nginx с установкой модуля headers-more-nginx-module.
    Nginx.conf
    location / {
    		#
    		if ($request_method = 'PUT') {
    			more_set_headers    "Access-Control-Allow-Origin: http://localhost";
    			more_set_headers    "Access-Control-Allow-Credentials: true";
    			more_set_headers    "Access-Control-Allow-Methods: GET, POST, PUT, OPTIONS";
    			more_set_headers    "Access-Control-Allow-Headers: DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Pragma,Authorization";
    		}
    		#
    	}
    Ответ написан
  • Как сравнить 2 ForeignKey?

    @pyHammer Автор вопроса
    Предположил, что можно заполнять так.
    doc = Document.objects.get(pk=request.data['document'])
    Ticket.objects.create(description=u"Бла Бла", client=doc.client, document=doc)

    Тогда передавать client_id в POST запросе нет необходимости. Но правильно ли это с позиции REST?
    Ответ написан
    Комментировать
  • Как нарисовать вот такую фигуру с помощью css?

    @pyHammer
    Честно не совсем понял суть вопроса... Что именно нужно нарисовать? Логотип или его контур?
    Если логотип, то я бы выбрал SVG. А если контур, то могу предположить, поместить логотип или в квадрат или в круг)
    Ответ написан
    Комментировать
  • Почему apache выдает 403?

    @pyHammer Автор вопроса
    Вопрос решил. Переустановкой apache и создал проект в /opt все от root пользователя.
    Все заработало. Неопытность берет вверх(
    Ответ написан
    Комментировать
  • Есть ли более изящное решение?

    @pyHammer Автор вопроса
    'stores': Store.objects.all()
    {% if stores %}
                    <div class="footer-col-2">
                        <div class="col-name">Наши магазины</div>
                        <ul class='stores'>
                        {% for store in stores_queryset %}
                            <li>
                                <span>{{ store.name }} - {{ store.address }}</span>
                                <ul>
                                    {% for phone in store.phones_set %}
                                    <li>{{ phone.name }}: {{ phone.phone }}</li>
                                    {% endfor %}
                                </ul>
                            </li>
                        {% endfor %}
                        </ul>
                    </div>
                    {% endif %}

    Сделал так, но это ничего не выводит {% for store in stores_queryset %}
    Ответ написан