• Как в Django создать атрибут модели без добавления поля в БД?

    neatsoft
    @neatsoft
    Life is too short for bad software
    Для этого можно использовать либо property:
    import os
    
    from django.db import models
    
    
    class Article(models.Model):
        title = models.CharField(
            max_length=200,
        )
        image = models.ImageField(
            blank=True,
            upload_to='images',
        )
    
        @property
        def thumbnail(self):
            if self.image:
                path, filename = os.path.split(self.image.url)
                name, ext = os.path.splitext(filename)
                filename = 'prefix_' + name + '_suffix' + ext
                return os.path.join(path, filename)


    либо функцию:
    import os
    
    from django.contrib import admin
    from django.utils.html import format_html
    
    
    @admin.register(Article)
    class ArticleAdmin(admin.ModelAdmin):
        list_display = (
            'title',
            'get_thumbnail',
        )
        fields = (
            'title',
            'get_thumbnail',
        )
        readonly_fields = (
            'get_thumbnail',
        )
    
        def get_thumbnail(self, obj):
            if obj.image:
                path, filename = os.path.split(self.image.url)
                name, ext = os.path.splitext(filename)
                filename = 'prefix_' + name + '_suffix' + ext
                return format_html('<img src="{}">', os.path.join(path, filename))
        get_thumbnail.short_description = 'Thumbnail'
        get_logo.admin_order_field = 'image'


    либо и то, и другое:
    import os
    
    from django.contrib import admin
    from django.utils.html import format_html
    
    
    @admin.register(Article)
    class ArticleAdmin(admin.ModelAdmin):
        list_display = (
            'title',
            'get_thumbnail',
        )
        fields = (
            'title',
            'get_thumbnail',
        )
        readonly_fields = (
            'get_thumbnail',
        )
    
        def get_thumbnail(self, obj):
            url = obj.thumbnail
            return format_html('<img src="{}">', url) if url else ''
        get_thumbnail.short_description = 'Thumbnail'
        get_logo.admin_order_field = 'image'
    Ответ написан
    Комментировать
  • Как вы делаете транслитерацию текста в под url?

    neatsoft
    @neatsoft
    Life is too short for bad software
    pip install python-slugify

    >>> from slugify import slugify
    >>> slugify('Тестовый набор')
    'testovyi-nabor'
    Ответ написан
    Комментировать
  • Какой выбрать таскменеджер для одного человека?

    zamboga
    @zamboga
    Бизнес-аналитика, фин. моделирование, дашборды
    контролировать время, которое я трачу на те или иные задачи


    С описанием — те, которые опробованы мною.

    • https://Toggl.com — отдельный софт в трее, расширение под хром, приложение на андроид. Интеграция с кучей сервисов (трело, асана и т.д.). Хоткеи тоже есть. Бесплатного тарифа вполне достаточно. автотрекинг
    • https://RescueTime.com - только в автоматическом режиме логирует, в каких приложениях/сайтах проводите время, и выводит подробную статистику. Бесплатного аккаунта хвататет за глаза.
    • https://TimeDoctor.com — платный. Есть отдельный софт в трее, хоткеи. Интеграция с кучей сервисов.
    • https://pomelloapp.com — простой помидоро-трекер, интеграция с трелло. Хоткеи есть, в трее не сидит, простенький бар поверх всех окон
    • https://PomoDoneApp.com — простой помидоро-трекер, интеграция с трелло. Хоткеи есть, в трее показывает таймер с обратным отсчетом времени.
    • https://tmetric.com — простой трекер, интеграция с трелло, есть десктопное приложение, помидорок нет. Хоткеи есть, сидит в трее
    • https://www.timecamp.com — есть куча интеграций, расширение хром, приложение в трее, автотрекинг
    • https://ManicTime.com - мощный стэндалон тайм-трекер. Очень гибкий в настройках, сидит в трее, есть хоткеи, разные типы таймеров. Платный. Статья danila.org.ua/otrabotannyie-chasyi-moy-podhod
    • https://toptal.com/tracker/
    • ○ Grindstone https://www.epiforge.com/grindstone/
    • https://www.primaerp.com
    • https://tahometer.com
    • https://aTimeLogger
    • https://myhours.com
    • https://wakatime.com
    • savemytime.co

    Статьи
    Ответ написан
    1 комментарий
  • В чем смысл ВУЗа?

    @Anthony7
    Лохотрон это, просто попробуй связаться с работодателями с интересной для тебя вакансией, скажи что знаешь все что они хотят, но диплома у тебя нет. Если согласятся, забивай на ВУЗ. В наших вузах из полезного только столовая и телки. Я лично отучился и толку никакого, последние пару лет тролил преподов, что они тупее большинства студентов (мой ВУЗ сейчас в середине рейтинга лучших универов по стране). Они растягивают любую программу и добавляют туда воды, чтобы ты подольше платил)
    Ответ написан
    3 комментария
  • В чем смысл ВУЗа?

    nki
    @nki
    bezkart.ru готовая система лояльности
    Иди в армию, там получишь ответ на свой вопрос.
    Ответ написан
    1 комментарий
  • Почему нет профсоюза IT-работников?

    DmitriyEntelis
    @DmitriyEntelis
    Думаю за деньги
    Imho все адекватные люди аполитичны и предпочитают тратить время на зарабатывание денег.
    В текущих реалиях проще эмигрировать, чем тратить время на это вот все.

    А про забастовку, ну право смешно. Вы реально считаете что правительство рассматривать it отрасль как социально значимую? Это скорее что-то непонятное, мешающее свету из телевизора проникать глубь народных масс.

    Тем более что государственных то it компаний практически нет. Будете бастовать внутри своей коммерческой структуры - никому кроме этой структуры вы не навредите.

    Поднимите столько хайпа что государство обратит внимание на регулирование работников - вот тут то вы и взвоете по настоящему.
    Ответ написан
    10 комментариев
  • Насколько Django гибок?

    sim3x
    @sim3x
    Подходите к изучению новго стека с чистой головой и не натягивайте абстракции одного стека на другой

    Джанго гибок и строг
    Ответ написан
    Комментировать
  • Возможно ли через админку Django управлять url адресами?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Django
    Седой и строгий
    Смотря какими адресами. Если теми, что прописаны в urls.py и маршрутизируют запросы на представления, то не встречал подобной возможности и сомневаюсь в её целесообразности. А если url'ами динамически создаваемых из админки страниц, то смотреть в сторону flatpages или CMS.
    Ответ написан
    2 комментария
  • Как создать два вида пользователей на сайте Django?

    @deliro
    role=CharField(choices=...)
    Ответ написан
    Комментировать
  • Почему gunicorn-ы так активно потребляют swap?

    @deliro
    1. Скорее всего такая политика использования свопа в системе
    2. Что у вас за говнокод там, что два воркера съели 15гб ОЗУ и своп? )
    Ответ написан
    Комментировать
  • Кто сделает экспертизу кражи кода ПО, которую примет российский суд?

    webinar
    @webinar
    Учим yii: https://youtu.be/-WRMlGHLgRg
    Скорее всего они будут напирать на факт кражи идеи, а не кода, на документы которые подписывал тот человек типа "о не разглашении".
    Ответ написан
    5 комментариев
  • Где хранить бэкапы всех систем?

    Посчитайте для сравнения, во сколько обойдётся бэкап в облако Амазон:
    на S3 с политикой переноса в Glacier ($0.004 per GB / Month) – намного дешевле, чем просто S3, но немгновенное извлечение из бэкапа.
    Ответ написан
    Комментировать
  • Как работать с байтами изображения на JavaScript или как переписать с Python на JavaScript?

    demon416nds
    @demon416nds
    Разработчик на чем попало
    это не взлетит нигде кроме осла
    и то старого
    таки зачем заниматься извращениями?
    Ответ написан
    2 комментария
  • Как перенести юзера в другую группу через n-дней?

    neatsoft
    @neatsoft
    Life is too short for bad software
    Канонический способ сделать это в джанго - добавление django-admin команды, и периодический запуск этой команды с помощью cron:
    Writing custom django-admin commands
    CronHowto
    Ответ написан
    Комментировать
  • Что новичку почитать по криптографии?

    neatsoft
    @neatsoft
    Life is too short for bad software
    Cryptography I на Coursera: https://www.coursera.org/learn/crypto
    Отличный курс, великолепная подача материала.
    Ответ написан
    Комментировать
  • Как удалить разбиение live-флешки?

    neatsoft
    @neatsoft
    Life is too short for bad software
    информация о размере и типе разделов - это всего лишь последовательность байт, которая записывается по определенному смещению на дисковое устройство (при использовании MBR - в начале, GPT - в начале и в конце диска)

    при должном желании и упорстве таблицу разделов можно создать даже с помощью hex-редактора, но лучше воспользоваться специально предназначенными для этого утилитами:

    определить имя устройства:
    lsblk
    отмонтировать разделы (sdX нужно заменить на реальное имя устройства):
    sudo umount /dev/sdX?
    создать новую таблицу разделов (sdX - имя устройства):
    sudo parted /dev/sdX mklabel msdos
    создать новый раздел:
    sudo parted /dev/sdX mkpart primary 0% 100%
    отформатировать раздел (вместо ext4 можно использовать fat или ntfs, если доступ к флэшке необходим и из других операционных систем):
    sudo mkfs.ext4 /dev/sdX1
    примонтировать новый раздел:
    sudo mount /dev/sdX1 /mnt
    сменить владельца файловой системы на текущего пользователя (для ext4):
    sudo chown $USER:$USER -R /mnt

    все эти операции можно сделать и с помощью стандартной утилиты с графическим интерфейсом Disks, последовательность действий та же: выбрать диск, создать новую таблицу разделов, создать раздел, отформатировать

    некоторые флэшки умеют представляться системе как два отдельных устройства (например, как диск и cd-rom), в этом случае обновление таблицы разделов не поможет, и для изменения конфигурации придется использовать специальные утилиты от производителя флэшки или контроллера

    p.s. установочные флэшки лучше записывать с помощью dd, а не Startup Disk Creator (одна флэшка - один дистрибутив):
    sudo umount /dev/sdX?
    sudo parted /dev/sdX mklabel msdos
    sudo dd if=ubuntu-16.04-desktop-amd64.iso of=/dev/sdX bs=1M
    Ответ написан
    1 комментарий
  • Как правильно примонтировать образа img в linux?

    neatsoft
    @neatsoft
    Life is too short for bad software
    Ответ на вопрос из темы сообщения - "Как правильно примонтировать образ диска в Linux?"

    Установить kpartx:
    sudo apt-get update && sudo apt-get install kpartx

    Примонтировать:
    kpartx -av /path/to/the/image.img

    Отмонтировать:
    kpartx -dv /path/to/the/image.img
    Ответ написан
    Комментировать
  • Ошибка при выполнении команды zipsplit?

    neatsoft
    @neatsoft
    Life is too short for bad software
    man zipsplit

    BUGS
           Does not yet support large (> 2 GB) or split archives.
    Ответ написан
    1 комментарий
  • Чем отличается бесплатный ssl сертификат от платного?

    neatsoft
    @neatsoft
    Life is too short for bad software
    Тем что в случае оформления сертификата через cloudflare:
    • cloudflare будет обладателем приватного ключа - сможет просматривать и модифицировать трафик по своему усмотрению;
    • соединение будет зашифровано только на участке между клиентом и cloudflare (для шифрования соединения между cloudflare и сервером потребуется настоящий сертификат - самоподписанные никакой дополнительной защиты не обеспечивают, т.к. не проверяются);
    • сертификат будет действителен сразу для нескольких совершенно не связанных друг с другом доменов (для которых опция ssl на cloudflare была включена в одно и то же время).


    Если нужен нормальный сертификат:
    https://letsencrypt.org/ - бесплатно, сокращенный срок действия, автоматизированный перевыпуск
    https://www.ssls.com/ - $4.99/год (PositiveSSL, при оплате за 3 года)
    Никакой разницы между "domain validated" сертификатами за $5 и за $100 нет - они будут работать совершенно одинаково.

    Более дорогой сертификат может потребоваться если:
    • необходима поддержка нескольких доменов;
    • хочется получить "зеленую плашку" для большего доверия со стороны клиентов (такой сертификат выдается только после проверки документов).
    Ответ написан
    16 комментариев
  • Нужно ли дополнительно настраивать сервер под django?

    neatsoft
    @neatsoft
    Life is too short for bad software
    Выполнить шаги, описанные в Django deployment checklist

    Настроить ssh:
    • запретить доступ для пользователя root
    • настроить авторизацию с помощью ключа
    • запретить авторизацию с помощью пароля


    Настроить firewall:
    • разрешить входящие соединения на 22, 80, и 443 порты (ssh, http, https)
    • запретить все остальные входящие соединения


    Настроить ssl:
    • приобрести ssl сертификат
    • сделать переадресацию с http на https


    Если у пользователей есть возможность загрузки файлов на сайт, то:
    • приобрести отдельный домен для хостинга этих файлов
    • настроить nginx для раздачи media_root с этого домена
    • проверить недоступность media с основного домена
    Security in Django - User-uploaded content

    ps. В будущих проектах попробуйте вместо Gunicorn использовать uWSGI, а вместо CentOS 7 - Ubuntu 16.04 server.
    Ответ написан
    Комментировать