• Как вывести собственный виджет тэгом?

    Думаю, что вам нужно разделить задачу на две. В первой части пользователь вводит указанный вами код виджета среди прочего текста, и он как есть, без изменений, сохраняется в базу. Можно какую-нибудь валидацию прикрутить, чтоб указывать на ошибки.

    Вторая часть: когда кто-нибудь открывает страницу, нужно взять из базы текст и использовать regexp, чтобы перед выводом текста заменить ваш тег на реальный код виджета.
    Ответ написан
    Комментировать
  • Как добавить задачу в очередь к существующему паралельному потоку в Python 3?

    Необходимо:
    1) создавать поток только один раз, в начале работы программы
    2) использовать Queue для общения с ним: https://docs.python.org/2/library/queue.html

    Альтернатива, чтобы было гораздо проще - можно использовать Celery: celeryproject.org
    Ответ написан
    2 комментария
  • Python Какая принципиальная разница в записи условия?

    Позволю себе добавить к словам других комментаторов: обычно лучше не делать "громадные условия", их трудно читать. Почти всегда можно как-нибудь оптимизировать и сократить, например, разложив его на отдельные переменные, или составляя список и натравливая на него any() / all(), или вынося это всё в отдельную функцию с кучей assert, вместо условия ловя AssertionError.
    Ответ написан
    Комментировать
  • Использовать Python или искать более подходящий инструмент?

    Исходя из вопроса и из рассмотрения обилия библиотек как недостатка - вряд ли проблема в языке программирования. :) Python вполне хорош для всяческих скриптов и обработки данных. Я думаю, что о Scala надо думать, когда система, которую вы хотите сделать, становится настолько огромной и сложной, что без повсеместных internal DSL, систем типов и теории категорий вам с ней не выжить. Так что попробуйте всё же разобраться как следует.
    Ответ написан
    Комментировать
  • Ведете ли вы документацию для проектируемого сайта или приложения?

    Делаем с помощью notion.so - храним там базовую документацию, глоссарий понятий, очень краткие описания административных процедур, объяснения почему и как работают некоторые вещи, и конечно - документы на отдельные задачи (если задача крупная и писать полное описание в баг-трекере неудобно). Важно, что с этими документами работает сторона клиента, то есть они сами пишут задачи, вставляют туда скриншоты, etc. После чего написанное ими можно доработать, добавить разъяснения для разработчика - и в процесс.

    Но вопрос документации в коде, о котором тут писали, меня сильно беспокоит; нам надо озаботиться этим. Именно для того, чтобы разработчики, особенно новые, видели в более понятном виде общую картину. Конечно, есть какая-то навигация в IDE, но всё равно это не вполне то.

    Всю документацию держать в коде нельзя, по моему мнению, поскольку мы хотим привлечь клиента к работе над ней. Но и для разработчика отдельно писать код и отдельно доки - тоже проблема, лишние затраты времени и переключение контекста. Делать это никто не любит. Поэтому и думаю, что нужно иметь два комплекта документации - сугубо для разработки, автогенерированная из кода, и в базе знаний, ориентированная на клиента. Notion мне в этом смысле нравится неимоверно, ничего подобного в других местах я не видел. Хотя нет предела совершенству и хочется ещё большего :)

    P. S. Евгений: по поводу literary programming... я пробовал нечто подобное делать в студенческом хобби-проекте, баловался. Но не очень получилось, поскольку линейная последовательность документа вступает в конфликт со структурой программы, имеющей вид графа.

    Однако, мне доставляло изрядное удовольствие, что в результате получается не только код на Python, но и неимоверно красивый PDF, сделанный LaTeX, с картинками и формулами. А если исхитриться - можно ведь и прямо из кода всякие картинки генерировать, схемы БД например; красиво ведь будет. Надо как-нибудь вернуться к этой теме, очень уж она интересна.
    Ответ написан
    2 комментария
  • Не запускается проект. Не подскажете в чем может быть проблема?

    1) Кажется, вы запускаете проект, написанный для старой Django, под последней версией 1.11. Думаю, что надо использовать ту версию, на которой вы его писали.
    2) попробуйте 127.0.0.1:8000/admin/, /login/ - они в списке есть.
    Ответ написан
    1 комментарий
  • Игра "word of battles" возможно ее восстановить?

    В высшей степени странный вопрос. Найдите компанию-разработчика, обратитесь к ним и напишите следующее: "я очень хочу играть в вашу игру, поэтому пожалуйста запустите её снова в онлайн, платите за хостинг и за работу команды разработчиков, чтобы чинить баги и делать фичи, а я буду вам лайки вконтакте ставить". Когда они откажутся, напишите на Тостере новый вопрос о том, почему они такие бяки.
    Ответ написан
    Комментировать
  • Использовать ли Python, когда можно обойтись bash?

    Может быть, можно посмотреть на другие шеллы? Доходили смутные слухи, что разнообразные zsh и csh более логичны, чем bash.
    Ответ написан
  • Как реализовать таймер и интервал в Python3?

    Если поток один, то:

    import time
    
    while True:
        time.sleep(1) # in seconds
        action()
    Ответ написан
    2 комментария
  • Как переопределить возможные значения ManyToManyField в InlineModelAdmin с учётом значения другого поля инлайн-формы?

    Поле filter не является редактируемым. Я думаю, что вам нужно получать доступ не к полю, а к объекту модели VariantAttribute. Верно?

    Если так, то вам должен подойти вот этот вариант: https://stackoverflow.com/a/22003809/1245471 - здесь предлагают создать отдельный класс для формы и провести фильтрацию в нём, а потом задать этот класс для VariantAttributeInline (атрибут form, если мне не изменяет память).
    Ответ написан
  • Как отсортировать записи модели данных на основе данных других связанных моделей?

    Не уверен, как сделать это через ORM, надо экспериментировать. Если кто-то предложит, будет интересно посмотреть. Если никто не предложит, то я бы сделал так.

    class Characteristic(models.Model):
        project = models.ForeignKey(Project, on_delete=models.CASCADE, related_name='characteristics')
        ...
    
    class Task(models.Model):
        project = models.ForeignKey(Project, on_delete=models.CASCADE, related_name='tasks')
        ...
    
    ...
    
    import operator
    
    latest_comments_by_category = Project.objects.values_list('id').annotate(
        Max('characteristics__comments__created'),
        Max('tasks__comments__created'),
    )
    
    latest_comments = [
        (project_id, max(characteristic_time, task_time))
        for project_id, characteristic_time, task_time in latest_comments_by_category
    ]
    
    projects = [
        Projects.objects.get(id=project_id)
        for project_id, _ in sorted(latest_comments, key=operator.itemgetter(1), reverse=True)
    ]


    Конечно, это допустимо лишь, если проектов не слишком много.
    P. S. Скорее всего это какой-то блок статистики. Его можно кэшировать для ускорения страницы.
    Ответ написан
  • Хорошая программа для проектирования БД?

    https://www.genmymodel.com - чуть помощнее и покрасивее, но хочет денег после некоторого количества объектов на схеме.
    https://dbdesigner.net/ - денег не хочет, но попроще и менее красивый.
    Ответ написан
    2 комментария
  • Django response в формате json?

    В долгосрочной перспективе стоит использовать Django REST Framework: djangorestframework.org
    Ответ написан
    1 комментарий
  • Best practies? Две независимые модели для пользователя и админа, Django 1.11.x?

    Делить пользователей на две таблицы не стоит, хотя бы потому, что множество библиотек сразу же не сможет с такой системой работать, или придётся писать костыли.

    Я думаю, что проще всего использовать стандартную модель User + свою модель Profile, подключённую через OneToOneField. В ней можно собирать все необходимые свойства. Что мешает модератору сайта одновременно быть покупателем футболочек? Собственно ничего.

    А теперь что касается проверок на is_staff. Посмотрите django-braces. Вам достаточно использовать class based views и подключать нужные mixins, - и вы забудете об этих проверках: большая их часть будет выполняться в mixins, а не в бизнес-логике предметной области. Вы можете и свои классы для этого дела написать.
    Ответ написан
    4 комментария
  • Как в django-rest Serializator получить список определенных моделей?

    1) TypeSerializer нигде не вызывается. Откуда Django знает, что вы хотите его использовать?
    2) См. документацию. Вам надо, мне кажется, nested relationship. www.django-rest-framework.org/api-guide/relations/...
    3) serializator - ну зачем ужас такой? На русском "сериализатор". На английском "serializer". И никак иначе.
    4) Лучше уходить от views в виде функций сразу и навсегда. Используйте class based views.
    5) Учитывая, что вы используете DRF и она предоставляет множество классов для этого начиная от APIView. А ещё такие удобные штуки как viewsets и routers.
    Ответ написан
  • Свой middleware django?

    class ProjectMiddleware:
        def process_request(self, request):
            assert hasattr(request, 'user'), (
                "The Project middleware "
                "requires authentication middleware to be installed. Edit your "
                "MIDDLEWARE_CLASSES setting to insert "
                "'django.contrib.auth.middleware.AuthenticationMiddleware'. "
                "If that doesn't work, ensure your TEMPLATE_CONTEXT_PROCESSORS "
                "setting includes 'django.core.context_processors.auth'."
            )
    
            if request.user.is_authenticated():
                request.project = ...


    Не забудьте добавить путь к классу в settings.MIDDLEWARE_CLASSES.
    Ответ написан
    Комментировать
  • Разработка web-сервисов – LAMP (Python/Django) vs. MEAN (Node.js)? Или что-то другое?

    1) Мой основной язык Python, на JS больших программ почти не писал. Когда писал на нём больше, то ощущал дискомфорт из-за:
    - отсутствия нормального наследования (хотя сейчас, вероятно, это уже исправлено)
    - трудностей с типами данных и неявными преобразованиями (вот вчера буквально был холивар на Тостере о == и ===)
    - списков, реализованных как переодетые объекты
    - отсутствия из коробки структур данных вроде deque.

    Но это были студенческие поделки.

    2) Python предоставляет больше средств борьбы со сложностью. Наследование, система метаклассов, синтаксический сахар. Хотя бы даже такая штука как property. Он даёт больше возможности инкапсулировать сложность внутри. Ну и на нём действительно очень много разнообразных библиотек. Возьмите хотя бы Django: она умеет автоматически генерировать миграции базы данных. Насколько я знаю, это мало кто умеет делать.

    3) Не думаю, что JS - это язык будущего для бэк-енда. Я бы согласился, если бы вы сказали про Scala или Kotlin, которые куда больше подходят для больших и сложных приложений хотя бы потому, что имеют ещё больше средств борьбы со сложностью, чем Python. Поэтому я смотрю скорее в их сторону для своего будущего профессионального развития, не на JS. Он как-то не очень тянет в сравнении.

    4) Ничто не помешает вам изучить платформу А, затем Б, потом В и так далее; от этого только польза. Может быть, вы через десять лет будете на Quipper - диалекте Haskell для квантовых компьютеров - писать. Но начинать посоветую всё же с Python - чтоб меньше заниматься мазохизмом и больше писать кода.)
    Ответ написан
    2 комментария
  • Как исправить ошибку при запуске тестов?

    Мне кажется, что проблема возникает не при удалении базы, а при создании новой, при применении миграций для какого-то из полей DateTimeField.

    • Если проект учебный и миграции удалить не жалко - то удалите и сделайте новые, проверьте, будет ли проблема повторяться.
    • Если жалко - сделайте grep DateTimeField */migrations/* по всем миграциям и посмотрите, нет ли там где-нибудь неправильных значений datetime (например, в качестве аргумента default).
    • И также проверьте те же поля во всех models.py на предмет того же самого.
    Ответ написан
  • Как вычислить такие поперечные сечения?

    Построить такое можно в www.geogebra.org. Это не программное решение конечно, но вдруг пригодится как вспомогательный инструмент.
    Ответ написан
    Комментировать
  • Как правильно наладить работу с фрилансерами в вопросе добавления товаров?

    1) на freelansim, но я не искал data entry, только разработчиков; вам может не подойти.
    2-3) Бэкапы, разумеется, необходимы.
    4) А нельзя доверять ftp. Надо либо использовать систему контроля версий, давать доступ к репозиторию и слепок БД, и заливать на production только после code review; либо, если для упомянутых вами магазинов это затруднительно - сделать отдельный сервер и давать доступ только к нему. А на production опять же перетаскивать после проверки.
    Ответ написан
    Комментировать