IT Блог

Документации и переводы

Статьи на технические темы

Перевод тегов в taggit

Для перевода используется пакет parler.

Используйте дополнительное поле title. Не добавляйте перевод полю name для django-taggit, так как на поле name завязано много функциональности

from parler.models import TranslatableModel, TranslatedFields
from taggit.managers import TaggableManager from taggit.models import GenericTaggedItemBase, TagBase, ItemBase

class MyTag(TagBase, TranslatableModel):
    translations = TranslatedFields(
        title=models.CharField(_('Title'), max_length=100),
    )

    @permalink
    def get_absolute_url(self):
        return 'tag_page', (self.slug, )

    class Meta:
        ordering = ('name', )
        verbose_name = _('Tag')
        verbose_name_plural = _('Tags')


class MyTaggedItemBase(ItemBase):
    tag = models.ForeignKey(MyTag, related_name='tag_items', on_delete=models.CASCADE)

    class Meta:
        abstract = True

    @classmethod
    def tags_for(cls, model, instance=None, **extra_filters):
        kwargs = extra_filters or...

node grunt автоматическая компиляция scss

Очень кратка инструкция без пояснений по тому, как в автоматическом режиме компилировать файлы scss.

Если ещё не установили nodejs, то устанавливаем:

# взято с https://github.com/nodesource/distributions/blob/master/README.md
curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash -
sudo apt-get install -y nodejs

или:

apt-get install node
apt-get install npm

После установки NodeJS нужно добавить ссылку на nodejs, так как в debian исполняемый файл называется nodejs (вместо node):

sudo ln -s /usr/bin/nodejs /usr/bin/node

Убедитесь, что установлены пакеты:

sudo apt-get install sass
sudo apt-get install ruby-compass

Создаём в корне проекта package.json...


Перерисовка диаграммы highcharts

Обычно графики highcharts автоматически перерисовываются при изменении размеров окна браузера, но бывают случаи, когда нужно принудительно перерисовать график.

Интуиция подсказывает, что нужно использовать метод .redraw(), но, увы, возможно, это не сработает (как это случилось у меня). Мне, к примеру, нужно было перерисовывать диаграмму после сворачивания левой панели меню. Когда сворачивается или разворачивается меню, то ширина div-а изменяется и нужно автоматически подстраивать графики под новую ширину.

Для перерисовки диаграмм highcharts используйте метод .reflow():

$('..close').on('click.chart', function () {  // вешаем событие click на кнопку сворачивания меню
    var $sb_chart = $('.sb_chart');
    $.each($sb_chart, function () {  // если у вас несколько графиков
        var chart = $(this).highcharts();
        chart...

Авторизация пользователей через Google

Авторизация пользователей на своём сайте через Google осуществляется так же просто, как и в или . Возьмём для примера этот сайт vivazzi.pro.

Для начала нужно перейти на страницу и создать свой проект, нажав на знак "+":

Вписываем название проекта:

Далее переходим в "Учётные данные" (вкладка находится на левой боковой панели) и щёлкаем на "Создать учётные данные".

Через кнопку "Создать учётные данные" нам нужно добавить доступ OAuth, т. е. идентификатор клиента OAuth. Щёлкаем и видим сообщение о том, что нам нужно заполнить "Окно запроса доступа Oauth". Переходим по ссылке, и можно заполнить только поле "Название продукта, который видят пользователи":

Вот теперь можем...


Авторизация через социальную сеть Facebook

Рассмотрим авторизацию пользователей на своём сайте через социальную сеть Facebook на примере сайта vivazzi.pro.

Сперва мы должны зарегистрировать своё приложение в соц. сети Facebook на странице

Щёлкните "Добавьте новое приложение" и в форме впишите название вашего проекта. В моём случае: Vivazzi.

Перед нами откроется панель приложения:

Обратите внимание, что рядом с названием расположен незакрашенный круг с зелёной обводкой. Это говорит о том, что пока приложение находится в тестовом режиме. Чуть позже мы сделаем его доступным для всех, а пока продолжим настройку.

Теперь нужно добавить продукт "Вход через Facebook":

Выбираем платформу "Веб", если собираемся регистрировать пользователей на своём сайте. Далее...


Django allauth авторизация через социальную сеть

Django-allauth замечательный пакет для авторизации пользователей на своём сайте, который берёт на себя рутинные операции по регистрации пользователей обычным способом через форму, а также через популярные социальные сети.

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

На данный момент приложение поддерживает более 60 соц. сетей...


Авторизация через социальную сеть Вконтакте

Для того чтобы добавить на свой сайт авторизацию через социальную сеть Вконтакте, нужно создать своё приложение в этой соц. сети. Я по шагам опишу, как это делается на примере своего сайта vivazzi.pro.

На странице добавьте своё приложение аналогично скриншоту:

Далее, нужно вам будет выслан код для подтверждения регистрации нового приложения по смс. Получите код и подтвердите регистрацию:

После подтверждения вы можете увидеть свой ID приложения, а также защищённый ключ (секретный ключ), который понадобится для авторизации:

Включённый open API позволяет производить разные действия, в том числе вход и регистрацию пользователей на своём сайте.

Для авторизации пользователей на сайте введите Адрес...


Группировка данных в зависимости от выбранного интервала времени в highstock

Как оказалась, в графиках highstock не особо гибкая настройка группировки точек в зависимости от просматриваемого интервала времени. Да, данные могут группироваться, если их очень много (более тысячи) в некотором выбранном отрезке времени. Но когда это произойдёт, точно не понятно.

Настройку группировки вы можете осуществить через параметр plotOptions.series.dataGrouping.units (), например:

Highcharts.stockChart('chart', {

    plotOptions: {
        series: {
            dataGrouping: {
                forced: true,
                units: units: [[ 'week', [1] ], ]
            },
        }
    },

    ...
});

Но здесь не указывается при каком временном определённом интервале следует выполнять соответствующую группировку (по неделям, месяцам и т. д.).

Для моего графика посещаемости этого сайта (который находится на странице ) для удобства анализа данных нужно было группировать точки...


Создать tar

Создание архива tar

tar -cvf file.tar /path/to/file_or_folder/   # создать .tar

С форматами .tar.gz и .tar.bz2 применяется ещё и сжатие:

tar -czvf file.tar.gz /path/to/file_or_folder/   # создать .tar.gz (популярный)
tar -cjvf file.tar.bz2 /path/to/file_or_folder/   # создать .tar.bz2

Распаковка архива .tar

tar -xvf file.tar.gz

Ключи команды tar

-c - создание архива
-v - подробный список обрабатываемых файлов
-f - работа с файлом
-z - сжатие архива с помощью gzip
-j - сжатие архива с помощью bzip2
-x - извлечение файлов из архива
-C - переход в каталог (см. подробности ниже)

Тонкости архивации

Замечали, что при распаковке архива...


Разработка социальной сети Levels

Уважаемые читатели!

Рад представить свой новый проект Levels -

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

Здесь же, в техническом разделе блога я буду описывать некоторые этапы...

На данный момент нет специального поиска, поэтому я предлагаю воспользоваться обычной поисковой системой, например, Google, добавив "vivazzi" после своего запроса.

Попробуйте

Выберите валюту для отображения денежных единиц