Контакты

Наибольший вклад в теги

Все теги (4)

Лучшие ответы пользователя

Все ответы (16)
  • Как правильно сформировать автоматические релизы на Github?

    @ilya_chch Автор вопроса
    в общем, решил вопрос:

    name: Release
    
    on:
      push:
        branches:
          - master
    
    jobs:
      release:
        if: github.event_name == 'push' && github.ref == 'refs/heads/master'
        name: Release
        runs-on: ubuntu-latest
        steps:
          - name: Getting code
            uses: actions/checkout@master
          - name: Getting Python
            uses: actions/setup-python@master
          - name: Cache pip
            uses: actions/cache@v2
            with:
              path: ~/.cache/pip
              key: ${{ runner.os }}-pip-${{ hashFiles('poetry.lock') }}
              restore-keys: |
                ${{ runner.os }}-pip-
          - name: Getting Poetry
            uses: dschep/install-poetry-action@v1.3
          - name: Getting PostgreSQL
            uses: harmon758/postgresql-action@v1
            with:
              postgresql db: 'test_db'
              postgresql user: 'postgres'
              postgresql password: 'postgres'
          - name: Installing dependencies
            run: poetry install
          - name: Running tests
            run: make coverage_run
          - name: Running coverage check
            run: make coverage_cmd_report
          - name: Running codestyle checks
            run: make check_black
          - name: Running types checks
            run: make check_mypy
    
          - name: Generate coverage report
            run: make coverage_xml_report
          - name: Upload coverage to Codecov
            uses: codecov/codecov-action@v1
            with:
              token: ${{ secrets.CODECOV_TOKEN }}
              file: ./coverage.xml
    
          - name: Getting package version
            id: get_version
            run: echo "::set-output name=version::$(poetry version)"
    
          - name: Getting package clear version
            id: get_clear_version
            run: echo "::set-output name=clear_version::$(poetry version | cut -d ' ' -f 2)"
    
          - name: Make release and publish
            run: make release USERNAME=${{ secrets.PYPI_USERNAME }} TOKEN=${{ secrets.PYPI_TOKEN }}
    
          - name: Get asset name
            id: get_asset_name
            run: echo "::set-output name=assert_name::$(ls dist | grep gz)"
    
          - name: Create Release
            id: create_release
            uses: actions/create-release@latest
            env:
              GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
            with:
              tag_name: ${{ steps.get_clear_version.outputs.clear_version }}
              release_name: ${{ steps.get_version.outputs.version }}
              draft: false
              prerelease: false
    
          - name: Upload Release assets
            id: upload_gz
            uses: actions/upload-release-asset@latest
            env:
              GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
            with:
              upload_url: ${{ steps.create_release.outputs.upload_url }}
              asset_path: dist/${{ steps.get_asset_name.outputs.assert_name }}
              asset_name: ${{ steps.get_asset_name.outputs.assert_name }}
              asset_content_type: application/tar+gzip
    Ответ написан
    Комментировать
  • Как организовать хранение файлов пользователей в Django?

    @ilya_chch
    в settings.py добавьте указание на расположение медиа
    MEDIA_URL = '/media/' #например
    MEDIA_ROOT = '/srv/files/media' #например


    media_url - часть урла, по которому будут находиться картинки, media_root - место на сервере, где nginx будет их искать.

    в модели:

    class ModelClass(models.Model):
        <поле> = models.ImageField(upload_to=rename_image, blank=True, verbose_name='...')
    
    def rename_image(instance, filename):
        image_name = md5(str(time.time()).encode()).hexdigest()
        image_type = filename.split('.')[-1]
        return 'imgs/{}.{}'.format(image_name, image_type)


    rename_image в моем случае переименовывает загружаемую картинку в хэш. и в return можно добавить путь. в моем случае будет загружаться в media_root/imgs/<что-то>.jpg #например (при условии, что media_root определен, все всегда будет падать туда)

    добавьте в путь подкаталог с именем user_{его id}. а вот насчет доступности только для этого пользователя - надо отдельно думать.
    Ответ написан
    Комментировать
  • Как управлять полем сериализатора Django Rest Framework?

    @ilya_chch Автор вопроса
    Как выяснилось, самый простой и надежный способ - Сделать второй сериализатор, который бы отдавал все объекты. а в представлении переопределить метод get_serializer, который бы подсовывал нужный сериализатор
    Ответ написан
    Комментировать
  • Как средствами Python пройти двухшаговую аутентификация на сайте?

    @ilya_chch
    Он не обновляет страницу. Я думаю, стоит использоваться сессию и посмотреть, какие данные он отправляет и когда. И, собственно повторить их. Посмотрите в Network консоли разработчика. Вероятно, там достаточно будет скопировать POST запрос и сохранить где-нибудь токен.
    Ответ написан
    Комментировать

Лучшие вопросы пользователя

Все вопросы (18)