• Какие есть сервисы контроля удаленных сотрудников?

    syschel
    @syschel
    freelance/python/django/backend
    На том же UpWork`e есть ТаймТрекер, софтинка которая при почасовой оплате, в произвольный период из 10 минут, делает скриншот экрана и записывает активность мышки и клавиатуры. Можно включить и снимок с вебкамеры, но то на любителя. Если активности не было больше 15-20 минут, таймер останавливается. Оплата начисляется по часам в трекере. Скриншоты можно удалять, но удалится и те 10 минут где он был сделан. Для фриланса, для фриланса с почасовой оплатой - удобно. Для фикспрайсов смысла в ней нету. Неудобно когда задачи не строятся на активности у ПеКа (к примеру надо на бумажке порисовать, или сделать звонки, или посидеть и подумать или дождаться выполнения долгой задачи). Но конкретно у апворка, можно добавлять мануальное время (время вне трекера).

    З.Ы. Работаю несколько лет через трекер и нечего зазорного, постыдного, угнетающего или "рабского" в этом не вижу.
    Ответ написан
  • Как получить посты за текущую неделю django queryset?

    syschel
    @syschel
    freelance/python/django/backend
    Можно запросить данные по номеру недели week и iso_year
    import datetime
    date = datetime.datetime.today()
    week = date.strftime("%V")
    
    Entry.objects.filter(pub_date__week=week)


    from django.utils.timezone import now
    year, week, _ = now().isocalendar()
    
    Entry.objects.filter(pub_date__iso_year=year, pub_date__week=week)
    Ответ написан
  • Общий хостинг, клауд сервер или VPS - как выбрать свою "песочницу"?

    syschel
    @syschel
    freelance/python/django/backend
    Начать можно и с хостингов, со временем перейдя на виртуалки. Хватать сразу "всё и побольше", не стоит, да и не нужно в начале.
    Сложностей настройки с виртуалками нету. Как правило "продавец" вам предлагает выбор ОС, которые будут установлены с базовым набором софта. Не редко этого за глаза. Но если нет, то гайдов в интернете полно, а после хостинга уже будете примерно понимать что вам нужно установить и как.
    Ответ написан
  • Как привязать тэг к посту в django?

    syschel
    @syschel
    freelance/python/django/backend
    В админке, если выбрать созданный тэг через shell, то в шаблоне он отображается как main.Tag.None. (main - название приложения) Как это исправить?

    Всё верно выводит.
    Post - это список постов, вы выводите только один. К посту у вас привязан список тегов (не ForeignKey), сталобыть вам список и выводят, который вы должны обработать.
    В шаблоне добавьте .all и увидете список тегов привязанных к даному посту.

    {{ post.tag.all }}

    Ну а дальше и обрабатывайте как список
    {% for tg in post.tag.all %}{{ tg.title }}{% endfor %}


    З.Ы. В модели поле с ManyToManyField лучше задавать имя переменной в множественном числе, то есть tags, а не tag.
    Ответ написан
  • Как в Django прикрутить пользователя из кастомной системы регистрации?

    syschel
    @syschel
    freelance/python/django/backend
    Если нет возможности "переписать по человечески" и вы точно уверены что там "не по человечески", то три варианта:
    1. Писать свой context_processors и туда добавить всё что вы хотите получать от "классического" варианта. То есть дублировать классический функционал.
    2. Писать кастомную функцию, работающую с этой кастомной моделью пользователя. И везде где вам нужно, работать с этой функцией. То есть дублировать классический функционал.
    3. Геморно, но возможно. Переопределить AuthenticationMiddleware

    Кстати, по сути для п.1 нужна та же самая "функция". Просто способы вызова разные.
    Но лучше конечно же переписать по нормальному. Хотя и не всегда бизнесу это нужно (из-за 1-2 мелких правок, переписывать легаси код).
    Ответ написан
  • Где ошибка в этом коде?

    syschel
    @syschel
    freelance/python/django/backend
    Смотрите на свой код:
    1. def page(request, key):
    2.     if key == 1:
    3.         a = 0
    4.         b = 50
    5.     data = table.objects.order_by("place")[a:b]

    1 строка, объявили функцию
    2 строк начали условие.
    3 и 4 строка, выполняется только если условие верное, то есть если key равен 1. Если приходит любое значение key кроме 1, то в вашем коде НЕ создаются переменные a и b.
    5 строка, вы пробуете использовать переменные которых не существует. Так как создаются они только при верном условии в строке 2.
    То есть, чтобы код работал, вам надо инициализировать переменные или до условия или после, хоть с нулевым значением. К примеру так:
    def page(request, key):
        a = 0
        b = 10
        if key == 1:
            a = 0
            b = 50
        data = table.objects.order_by("place")[a:b]

    или так
    def page(request, key):
        if key == 1:
            a = 0
            b = 50
        else:
            a = 0
            b = 10
        data = table.objects.order_by("place")[a:b]

    Программе не важно, что вы возможно планируете всегда передавать только 1, то есть у вас по планам условие будет выполнятся всегда, то есть в планах инициализация переменных произойдёт. Но вот программа этого не знает и она ругается.
    Ответ написан
  • Как сделать зеркало сайта без копирования файлов скриптов и без редиректа в браузере?

    syschel
    @syschel
    freelance/python/django/backend
    Настройками на стороне вебсервера (того что отдаёт "сайт").
    Nginx
    server {
        listen 80;
        server_name AUTO.com SuperCar.com CarInUSA.net;
        root /var/www/html;
        ....
    }

    Apache
    <VirtualHost *:80>
        ServerName AUTO.com
        ServerAlias SuperCar.com
        ServerAlias CarInUSA.net
        DocumentRoot "/var/www/html"
        ....
    </VirtualHost>

    Главное в вёрстке сайта и его коде, в ссылках(адресах) не использовать абсолютные пути с доменом. Просто начинайте всегда от /, то есть от корня.
    Ответ написан
  • Как исправить глюк при просмотре картинок на сайте?

    syschel
    @syschel
    freelance/python/django/backend
    <div 
      class="mfp-wrap mfp-gallery mfp-close-btn-in mfp-auto-cursor mfp-ready"
      tabindex="-1" 
      style="top: 318px;position: absolute;height: 4166px;"
    >
        ...
    </div>

    height: 4166px; Стиль добавляется диву в момент клику по картинке. Ищите как именно этот стиль формируется.
    Ответ написан
  • Как связать две модели (формы) в DJANGO автоматически при создании?

    syschel
    @syschel
    freelance/python/django/backend
    Добавлю к Yura Khlyan,
    maniacus26, самое просто решение, создавать запрос с страницы обращения. Напр:
    obrashcenije/2 - страница с информацией об обращении
    obrashcenije/2/dodat_zapros - страница с созданием запроса к конкретному обращению.

    Тогда во вьюхе создания запроса, буде доступен парметр self.kwagrs['obr_id'], если урлу задать как-то так:

    что если нужно в саму форму передать объект(ид) обращения, можно в классе вьюхи через
    class ZaprosCreator(CreateView):
        form_class = ZaprosForm
    
        def get_initial(self):
            return {'obrashcenije': self.kwagrs['obr_id']}

    Или если используется простые виды через функции, то
    form = ZaprosForm(initial={'obrashcenije': self.kwagrs['obr_id']})

    В форме ловить
    class ZaprosForm(forms.ModelForm):
        ...
        def __init__(self, *args, **kwargs):
            super(ZaprosForm, self).__init__(*args, **kwargs)
            self.obrashcenije = kwargs.get('initial').get('obrashcenije', None)


    Ну и как вариант в форме не обрабатывать вообще обращение:
    class ZaprosForm(forms.ModelForm):
        class Meta:
            model = ZaprosModel
            exclude = ('obrashcenije',)

    А уже во вьюхе перед сохранением формы добавить

    class ZaprosView(CreateView):
        form_class = ZaprosForm
    
        def form_valid(self, form):
            obj = form.save(commit=False)
            obj.obrashcenije_id = self.kwagrs['obr_id']
            obj.save()
            return super(ZaprosView, self).form_valid(form)

    ПС. избегайте руских названий моделей/переменных/классов, даже транслитом
    Ответ написан
  • Есть ли какие-нибудь иностранные биржи кроме upWork?

    syschel
    @syschel
    freelance/python/django/backend
    Нигде нет идеала, вы на любой бирже можете встретить как адекватных, так и не адекватных заказчиков. Тем более понятие "адекватности" очень субъективно.
    Можете посмотреть в сторону fiverr.com
    Ответ написан
  • Есть ли смысл писать CRM для агентов недвижимости?

    syschel
    @syschel
    freelance/python/django/backend
    Даже если уже есть аналоги на рынке, всегда можно запустить свой. Гугл тому пример, да и тот же яндекс в РУнете.
    Главное, ИМХО, найдите хотя бы 1-2 потребителей ваших услуг, чтобы была реальная картинка и отзыв, а не голая теория и домыслы.
    Так же не забывайте, какой бы гениальный, уникальный и всем нужный продукт вы не создали, без хорошего маркетинга, о вас никто не узнает и не воспользуется вашим продуктом.
    Ответ написан
  • А где люди ищут разработчиков для создания более-менее крупных веб сервисов?

    syschel
    @syschel
    freelance/python/django/backend
    Я бы вам посоветовал начать с ТЗ, потом с разработки прототипа(MVP). Для этого всего можно использовать как компании в городе, так и удалённые. Фрилансеров тоже можно рассматривать, но с опытом большого.
    А вот после создания и обкатки прототипа, у вас уже появится более развёрнутая картинка понимания, того что и как вам надо, с тем откуда это всё брать. В итоге экономите деньги и время.
    Ответ написан
  • Как в Python удалять файлы через n-минут?

    syschel
    @syschel
    freelance/python/django/backend
    Все файлы всегда генерируются сначала в память, а потом уже сохраняются на диск или сразу же из памяти отдаются.
    Если у вас файл это текстовик, генерируемый на лету одним потоком, если задача не сверх ресурсоёмкая. То советую вместо сохранения его и отдачи с диска, лучше по запросу генерировать и отдавать из памяти пользователю, пропуская этап сохранения на диск.

    Но если всётаки обойтись без сохранения нельзя, то используйте любой планировщих задач, будь то CRON или Celery, а данные о файлах или храните в базе (путь и дата создания) или скриптом пробегайте по папке и удаляйте все файлы с временем жизни больше N. Но лучше в базе такое хранить и не мучить диск.
    Ответ написан
  • Кто готов взять к себе или посоветовать Open-source проекты для начинающего Python?

    syschel
    @syschel
    freelance/python/django/backend
    Дополню ответ Illia Nezhyhai
    Можете пойти на популярные фриланс площадки, как русскоговорящие, так и мировые. Зарегистрироваться на оных и отфильтровать по языку программирования. Ну а дальше смотреть задачи, где есть подробное ТЗ и делать оные задачи без найма. Вот вам и реальный опыт, да направления обучения, за который сможете в будущем получать оплату.

    В том же python море направлений и поднаправлений, с узкой специализацией вплоть до работы с какой-то 1-2 библиотеками, решающими один тип задач. К примеру "парсинг", есть парсинг сайтов и тысячи задач крутящихся вокруг этого. Есть вебдев, с концентрацией вокруг конкретного сервиса/фреймворка. Есть машинное обучение, мат расчёты, статистика и работа с данными.
    Ответ написан
  • JS Tablesorter не работает на сервере Django, но при этом работает при открытии шаблона как HTML файла. Куда копать?

    syschel
    @syschel
    freelance/python/django/backend
    {% extends 'base.html' %}
        {% load static %}
        {% block content %}
            <head>

    Вы говорите Джанге, что данный шаблон подгружается внутри файла 'base.html'. Где по канонам должен быть весь "сквозной" для всех страниц код, включая открывающийся и закрывающийся body.
    Но ниже, я вижу у вас тег '<head>'. Это как вообще? У вас в 'base.html' чтоли только открытие и закрытие тега HTML?
    Думаю вся проблема в этом. Когда вы открываете "в лоб", как файл, только текущий шаблон, то у вас с учётом "мусора от Джанги", срабатывает кое-как как html файл. Но когда вы грузите через джангу, там её шаблонизатор всё собирает из разрозненных файлов, которые вы прописывали подгружать и собирает готовый html. А так как у вас одно и тоже из служебных тегов, да ещё вступающее в конфликт очень сильно. То наверно из этого и вытекает, что ничего не работает.

    З.Ы. В блок {% block content %}, нужно выводить только содержимое тега body, никаких head там не должно быть. В саб шоблонах вообще, по сути, должны быть только "куски" вёрстки, которые уникальны для текущей страницы/модуля, а не всё сразу.
    spoiler
    Очень больно смотреть, как люди кушают макароны ботинками, только потому, что не прочитали инструкцию. :`-(
    Ответ написан
  • Как сравнить строку и datetime?

    syschel
    @syschel
    freelance/python/django/backend
    strptime преобразует строку в дату
    from datetime import datetime
    chday = datetime.strptime('datetime.date(2018, 12, 31)', 'datetime.date(%Y, %m, %d)')
    today = datetime.today()
    print(today < chday)
    print(today > chday)
    print(today == chday)
    type(chday)

    True
    False
    False
    <class 'datetime.datetime'>
    Ответ написан
  • Уходить ли после 9 в колледж на программиста?

    syschel
    @syschel
    freelance/python/django/backend
    1. Знания лишними не бывают, а ВУЗ может дать направление знаний.

    2. Не знаю как сейчас, но раньше 1й курс техникума (модное название "колледж"), равнялся 10 и 11 классу школы. И при наличии лицензии(или как правильно называется), на выдачу оных аттестатов у техникума, можно после первого курса иметь аттестат об окончании 11 класса. То есть попробовать пойти в ВУЗ быстрее.

    3. Само учебное заведение и годы в нём, это ничто, если вы не будете лично заинтересованны в обучаемой профессии. При том сдача всех зачётов "на пятёрки", тоже мало значит. Если вы не будете лично развиваться в эти годы, параллельный с учёбой осваивая актуальные технологии/знания. Если не найдёте работу по профилю (пол ставки, удалённо, фриланс). То выйдя даже с красным дипломом, можете сильно проигрывать практикам с 9 классами, которые все эти годы потратили на практику и самообразование, пока вы просиживали штаны в ВУЗе.

    4. Если вы захотите со временем мигрировать за рубеж (это очень популярная тема для обсуждения в программерской среде), то корочки ВУЗа будут большим плюсом при получении Визы/ВНЖ.

    5. В большинстве компаний в СНГ, особенно в мелочи или середняке, наплевать на корочки ВУЗа, главное знания и опыт. На мой взгляд, это наверно 95% по рынку труда. В крупных же гигантах на вроде Гугла, Яндекса, Варгейминга и т.д., просят ВУЗ или хотя бы средне техническое по специальности.

    6. Чтобы пилить сайты на ВордПрессе в компании "ип Иванов", хватит корочек об окончании 9 классов.
    Ответ написан
  • Как можно развить навык Web программирования?

    syschel
    @syschel
    freelance/python/django/backend
    Пройдите любой курс по "созданию сайтов", хотя бы на хтмл академии, или любых других (без)платных сайтах. Во всех этих курсах отрабатывают создание прототипа чего-то, то есть более менее живой пример.

    я довольно хорошо изучил языкИ

    Звучит как "я скачал на дискету весь интернет".
    Мне кажется, вы ещё ничего не изучили, либо под языками, подразумеваете язык разметки страницы, то есть HTML.
    Ответ написан
  • Как создать поле в models Django которое является результатом арифметической операции других полей?

    syschel
    @syschel
    freelance/python/django/backend
    class Myclass(model.Model):
        x = models.Floatfield()
        y = models.Floatfield()
        
        def result(self):
            return self.x + self.y
    
    a = Myclass.objects.first()
    print(a.result)
    Ответ написан
  • Если нет высшего, не нужно даже откликаться на вакансию?

    syschel
    @syschel
    freelance/python/django/backend
    1. Иногда (не редко такое замечаю) вакансию составляет далёкий от её понимания человек. Особенно заметно, когда вакансия клонирована из соседней с заменой 1-2 пунктов и оклада. Тут как повезёт пройти этого самого составителя вакансии.
    2. Иногда работодатели могут не найти приемлемый вариант сразу и начинают снижать планку. Тоже есть шанс проскочить.
    Ответ написан