Задать вопрос
  • Какой тайм-трекер выбрать для фрилансера?

    syschel
    @syschel
    Dmitry Roo, Так тут же разговор не про сотрудника офиса на пятидневке, а про фрилансера. Который берёт задачи и их делает, оговаривая время.
    ИМХО, тут или сразу на берегу договариваться как происходит определение времени на задачу (заказчик/исполнитель определяет), или какой будет учёт. А не в процессе исполнителя напрягать.

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

    syschel
    @syschel
    Ivan-Sofronov, Видел компании, которые и в офисе ставят следилки за сотрудниками и их активностью (сайты, программы, активность мышки/клавы, скриншоты экрана/вебкамеры).

    З.Ы. Сам когда-то на апворке работал через их тайм-трекер, на почасовых задачах. Ничего плохого не заметил. Раз в 10 минут делается скриншот экрана, в рандомный промежуток времени. Так же палит количество нажатий клавиш и активность мышки. Можно добавить скрин с вебкамеры, но ни разу не включал. Сам включаешь трекер когда начинаешь работать. Сам выбираешь "контракт", по которому собрался работать. Как и задачу (можно самому описать, в милстоуне). Раз в час окно выскакивает, если по одной задаче работаешь и предлагает оставить комментарий или изменить задачу (нужно для разбиение на микро задачи, чтобы понятнее было в "отчёте", что делал). Но можно и не менять, подтвердить прошлое.

    Если вдруг что-то не то на скриншот попало в "десятиминутке", можно тут же в программе его удалить. В принципе когда скрин делался, был звуковой и визуальный сигнал. Уже не помню, но вроде и окно вылазило со скрином и кнопкой "удалить", на секунд 5. Удаляешь скрин, удаляется 10 минут из учётного времени.

    Если форма найма "фикспрайс", а не "почасовое". То тайм трекер можно не использовать. То есть задача оговорена, сумма оговорена и не важно будешь делать 5 минут или 5 дней.

    З.З.Ы. Так же трекер не всегда помогает отследить время "вне активности ПК". К примеру надо на бумажке набросать схемку программы, что-то почиракать/порисовать там. Либо идёт выполнение долгой программы (условно "написать парсер сайта ebay и спарсить список товаров с полным описанием, выбранных продавцов - клиенту нужен этот список". Сам парсер ты пишешь, условно 1ч, а потом парсер шуршит 2 дня, выкачивая 1кк товаров, в обход антипарсеров). Сам же трекер upwork`a, если нет активности на ПК, останавливает таймер через 20 минут. Тут как раз помогает или фикспрайс контракт, или можно ручками добавить "мануальное время" (вне активности у ПК).

    З.З.З.Ы. За термины могу путать, там до ковида работал, много лет прошло. Но ничего плохого в таймтрекере нет. Если он управляем тобой и "заказчик" не сумасшедший параноик.
  • Как проверить что пользователь это автор в Django?

    syschel
    @syschel
    Илья Лукьянов, Только второй вариант с ошибкой. Так как сначала выполняется первый кверисет, то есть базовый. И если в базе нет записей. То дальше фильтры не помогут.
    Но даже если там что-то было, то второй кверисет если вернёт пустой список, то и третий шаг пролетит. Так как он будет фильтровать уже пришедший кверисет, который пустой.

    Если он нужен, вернее так:
    def get_queryset(self):
            queryset = super().get_queryset().all( ).annotate(comment_count=Count("comments"))
            
           # Проверяем пользователь авторизованный или нет
            user_queryset = None
            if self.request.user.is_authenticated
                user_queryset =  queryset.filter(author=self.request.user) 
           #  Проверяем что пользовательский список вернул пустоту ИЛИ пользователь не авторизирован
            if not user_queryset or not self.request.user.is_authenticated:  # либо можно так - if not len(user_queryset): 
                queryset = queryset.filter(category__is_published=True, 
                                                  is_published=True,
                                                  pub_date__lte=timezone.now())
           # Если второй иф не сработал, значит нам важен список полученный в первом. 
           # Приравниваем его к основному
            else:
                queryset = user_queryset
            return queryset
  • Django.objects.all() не работает, как решить?

    syschel
    @syschel
    Вам же написало, что проблема во 2 строке. Питон не смог произвести импорт класса модели, дальше он не пошёл, упал.
  • Как решить проблему с авторизацией Django?

    syschel
    @syschel
    Ar123sj, Это стандартное поле для доступа в дажнго админку.
    Дальше уже идут права работы с админкой. Или полный доступ ко всему через атрибут "is_superuser". Или ограниченный, через пермишены (табличка связей в профиле пользователя, к каким моделям он имеет доступ и на какие действия (смотреть, создавать, удалять, ...)).
  • Почему не работает авторизация в Django?

    syschel
    @syschel
    Для начала стоит проверить на джанго админке. Если и туда не пускает, а там не самописная авторизация, то проблема с настройками пользователя. Может забыли модель указать в settings (если юзер кастомный). Или же что-то по полям намудрили
  • Один сервер VPS и несколько сайтов каждый в своём docker контейнере, как настроить глобальный nginx?

    syschel
    @syschel Автор вопроса
    Alexey Dmitriev, а эти ip адреса контейнеров, они статичные? То есть, если не переустанавливать контейнеры, а перезапускать их, адреса останутся? Про имена кажется понял, я про них думал, но не был уверен, пойду смотреть в их сторону.
    Извиняюсь если вопросы слишком уж "примитивные".
  • Один сервер VPS и несколько сайтов каждый в своём docker контейнере, как настроить глобальный nginx?

    syschel
    @syschel Автор вопроса
    Уточните пожалуйста.
    Если у меня 5 докер контейнеров, все отвечают по 80 порту.
    Как именно через прокси nginx мне их ловить?

    Как на одном сервере работать с одним сайтом спрятанным в контейнер, проблем с пониманием нет:
    server {
        listen      80;
        server_name www.project1.ru project1.ru;
        location / {
            proxy_pass http://localhost:80;
        }
    }


    Туплю именно на моменте, что на машине много разных сайтов в разных контейнерах крутятся и как именно глобальном nginx их ловить и отдавать под своими доменами.
    Может что-то у самого докера нужно сделать предварительно? Не знаю. Гугл же отдаёт статьи с примерами именно 1 проект на 1 машине.
  • Bitbucket фсе, блокирует российские IP?

    syschel
    @syschel
    Антон Кащеев, Спасибо за уточнение, добавил в ответ.
  • Bitbucket фсе, блокирует российские IP?

    syschel
    @syschel
    Антон Шелестов, Так же как и локально, так же и на сервере в консоли.
    Если же вопрос "как" при текущей проблеме, то подробнее ответил внизу.
    Да, можно впн куда угодно ставить. Тот же OpenVPN ставится в несколько шагов по инструкции с гугла.
  • Bitbucket фсе, блокирует российские IP?

    syschel
    @syschel
    Локально из РФ, с VPS в тайм вебе, так же:
    syschel@ubuntuPC:~$ ping bitbucket.org
    PING bitbucket.org (18.234.32.156) 56(84) bytes of data.
    ^C


    С сервера в европе
    Автоматом определяется как IPv6 и по нему пингуется, если сам IPv4 пинговать, то облом:
    root@syschel:~# ping 18.234.32.156
    PING 18.234.32.156 (18.234.32.156) 56(84) bytes of data.
    ^C
    --- 18.234.32.156 ping statistics ---
    11 packets transmitted, 0 received, 100% packet loss, time 10219ms
    
    root@syschel:~# ping bitbucket.org
    PING bitbucket.org(2406:da00:ff00::22c0:3470 (2406:da00:ff00::22c0:3470)) 56 data bytes
    64 bytes from 2406:da00:ff00::22c0:3470 (2406:da00:ff00::22c0:3470): icmp_seq=1 ttl=40 time=89.5 ms
    64 bytes from 2406:da00:ff00::22c0:3470 (2406:da00:ff00::22c0:3470): icmp_seq=2 ttl=40 time=85.5 ms
    64 bytes from 2406:da00:ff00::22c0:3470 (2406:da00:ff00::22c0:3470): icmp_seq=3 ttl=40 time=85.3 ms
    64 bytes from 2406:da00:ff00::22c0:3470 (2406:da00:ff00::22c0:3470): icmp_seq=4 ttl=40 time=85.4 ms
    ^C
    --- bitbucket.org ping statistics ---
    4 packets transmitted, 4 received, 0% packet loss, time 3117ms
    rtt min/avg/max/mdev = 85.339/86.414/89.450/1.753 ms
  • Bitbucket фсе, блокирует российские IP?

    syschel
    @syschel
    Если через европейский ВПН подключаться, то всё работает (и веб морда и работа с GIT`ом)
  • Bitbucket фсе, блокирует российские IP?

    syschel
    @syschel
    Не просто. Консольно git pull/push так же не работают. Веб морда через раз открывается.
    Если через европейский ВПН подключаться, то всё работает (и веб морда и работа с GIT`ом)
  • Bitbucket фсе, блокирует российские IP?

    syschel
    @syschel
    $ git pull
    fatal: «https://bitbucket.org/***/***.git/» недоступно: gnutls_handshake() failed: The TLS connection was non-properly terminated.
  • Не могу разобраться с django, как испортировать функцию?

    syschel
    @syschel
    CteplerMarinovich, Нужно содержимое файла women.views.py
    Ещё смущает вот это место:
    File "C:\Users\стёпа\Desktop\SERVER\coolsite\coolsite\urls.py", line 16, in
    from women.views import index

    Во первых в приведённом коде я не вижу 16 строк, во вторых, почему ошибка на index, когда у вас там написано обращение к index1?
  • Почему не запускается локальный сервер Django?

    syschel
    @syschel
    Lapita12,
    1. Установите необходимые зависимости.
    pip install django
    2. Создайте виртуальное окружение (virtual environment):
    python -m venv myvenv

    Зачем ставить виртуальное окружение, если вы ставите библиотеку(джанго) в глобальный питон?
    Шаг 1 и 2 перепутаны местами у вас. Вернее даже 1 и 3 перепутаны. Окружение нужно активировать, перед тем как в него ставить что-то =)
  • Вылезает ошибка 'WSGIRequest' object has no attribute 'request', как можно это пофиксить?

    syschel
    @syschel
    Ошибку стоит показывать так же как и код, целиком.
    Вызов этого класса, тоже стоит указывать.
    Так же, как понимаю это класс из вьюшки, но если вы используете джангу, то почему он не наследуется от базовых джанговских классов?
  • Стоит ли создавать отдельные модели под отдельные категории товаров в Django?

    syschel
    @syschel
    z00sharp, Я бы сделал модели:
    1) Товар
    2) Характеристика
    3) Значение характеристики, с полями: ид_товара(ссылка на п1), ид_характеристики(ссылка на п2), значение.
    В итоге можно потом и фильтры выводить по всем товарам в категории.
  • Кто нибудь, объясните как django передаёт, request именно в request, queryset именно queryset, если я добавлю ещё один аргумент что там будет?

    syschel
    @syschel
    Alex161, выделяем код, жмём в интерфейсе редактора текста кнопочку код, там в выпадайке ищем свой язык и тыкаем.
    В данный момент ваш кусок читать невозможно.