• Как в Django определять админа, персонал, какую-то роль (которую определили в админке), как назначать свежезареганному пользователю роль?

    JawsIk
    @JawsIk Автор вопроса
    Python Django, Lua, ЧПУ-станки(ArtCam, Aspire)
    Итак, как было в теме, я задавал два вопроса. Отвечу на них по порядку, чтобы людям сразу наглядно было понятно что сделать, чтобы получить результат. Очень меня печалит документация по Django. Вроде бы всё есть, но в итоге нет примеров. А как сказал мой один хороший учитель (не по Django а вообще по программированию): "Документация без примеров кода, это просто справочник. И если ты не специалист, то грош цена такому справочнику". Поэтому я просто приведу два примера кода, после которого сразу всё станет ясно.

    Вопрос 1: Опознавание ролей (групп) программно.
    В примере будет показан программный код метода account_view из файла views.py, который будет опознавать разные группы пользователей. Для примера в админке была создана группа manager. Ей не были даны специальные разрешения (permissions) и она служит лишь для декоративного разделения, но в программном коде даже такое декоративное разделение позволяет прекрасно опознавать и распределять пользователей. Так же прошу не обращать на функционал корзинки, здесь он оставлен только для того, чтобы показать на какой стадии нужно вставлять условия. Так же нужно понимать, что в каждом условии кроме имени шаблона могут быть (при необходимости) добавлены свои параметры, которые потом можно передать в шаблон.
    def account_view(request):
    
        cart = Cart()
        cart_id = cart.get_cart_id(request)
        items_in_cart = CartItems.objects.filter(cart_id=cart_id)
    
        # если не опознан, то дуй на страницу регистрирации
        if not request.user.is_authenticated:
            return HttpResponseRedirect(reverse('registration'))
    
        # если это суперпользователь
        if request.user.is_superuser:
            template = 'account_admin.html'
        # или если это пользователь с галочкой персонал, а так же принадлежащий группе manager
        elif request.user.is_staff and request.user.groups.filter(name='manager').exists():
            template = 'account_personal_role.html'
        # или если это просто пользователь с галочкой персонал
        elif request.user.is_staff:
            template = 'account_personal.html'
        # или если это пользователь принадлежащий группе manager
        elif request.user.groups.filter(name='manager').exists():
            template = 'account_role.html'
        # иначе все остальные (обычные пользователи)
        else:
            template = 'account.html'
    
        # сортировка выдачи заказов в обратном порядке (от последнего к первому)    
        list_orders = Order.objects.filter(user=request.user).order_by('-id')
        orders = OrderItems.add_order_info(request, list_orders)
    
        context = {
            'title': 'Кабинет пользователя',
            'orders': orders,
            'cart': items_in_cart,
            'total_cost': cart_id.total_cost,
        }
        return render(request, template, context=context)

    Как видно из кода здесь имеет место быть некоторая последовательность. В частности, если второе условие (первый elif) опустить ниже, то возможна неверная работа, т.к. тогда пользователь принадлежащий группе manager и с галочкой персонала, может легко заскочить в чужой шаблон (по одному условию), поэтому при создании сложных условий, этот момент нужно учитывать.

    Вопрос 2: Программное добавление пользователей в группу (или в несколько сразу)
    Иногда бывает, что (например) при регистрации, нужно сразу добавить пользователя в определённую группу. Для примера была создана группа clients. Это чисто декоративное разделение. Группа не имеет никаких разрешений в админке, но выполняет свою задачу. Ниже представлен код метода registration_view из файла views.py , т.е. регистрации пользователя и этот новый пользователь после регистрации будет уже принадлежать группе clients. Кстати, чтобы код работал нужно выполнить необходимый импорт, это тоже в коде показано.
    ...
    from django.contrib.auth.models import Group
    ...
    
    def registration_view(request):
    
        # (предотвращаем заход по прямой ссылке)
        # если авторизован, то
        if request.user.is_authenticated:
            return HttpResponseRedirect(reverse('account'))
    
        form = RegistrationForm(request.POST or None)
        if form.is_valid():
            new_user = form.save(commit=False)
            new_user.username = form.cleaned_data['username']
            new_user.set_password(form.cleaned_data['password'])  # вот из-за этой бяки вся засада была у меня с паролями ЗАПОМНИ!!!!!!
            new_user.email = form.cleaned_data['email']
            new_user.first_name = form.cleaned_data['first_name']
            new_user.last_name = form.cleaned_data['last_name']
            new_user.save()
    
            # после собственно регистрации (сохранения нового) пользователя его можно добавить к группам
            new_user.groups.add(Group.objects.get(name='clients'))
    	# new_user.groups.add(Group.objects.get(name='manager'))  # и в ещё одну группу работает тоже
    
            login_user = authenticate(request, username=form.cleaned_data['username'], password=form.cleaned_data['password'])
            if login_user:
                login(request, login_user)
                return HttpResponseRedirect(reverse('account'))
    
        context = {
            'title': 'Регистрация',
            'form': form,
        }
        return render(request, 'registration.html', context)

    Как видно в коде после создания пользователя, он добавляется к (уже созданной предварительно) группе и теперь зайдя в админку, мы это можем легко проверить. Кроме того, в коде закомментирована строчка с добавлением в ещё одну группу manager. Если её раскомментировать, то пользователь будет добавлен сразу в две группы. Т.о. можно добавлять пользователей сразу в несколько групп (если в этом есть необходимость). Естественно нужно понимать, что подобное добавление в группу можно делать не только при регистрации, но видя этот код, сделать необходимое решение уже не должно составлять большого труда.

    Надеюсь код пригодиться людям.
    Ответ написан
    Комментировать
  • Все ли на самом деле плохо с Python на удаленке?

    Guest007
    @Guest007
    Django, Python, Linux и всё такое...
    Как раз в преддверии 40-летия понял, что ни сил, ни желания админить в моём маленьком городке уже нет. Но и трое детей не давали возможности просто махнуть рукой и не напрягаться по жизни.
    Было:
    • желание удалёнки/фриланса
    • неудачный прошлый опыт
    • неплохой уровень администрирования
    • кое какие аналитические способности
    • опыт с несколькими языками программирования

    Предпочтение - Python/Django.
    Написал резюме по правилам, разослал везде, мониторил разные группы/форумы.
    Взяли в один проект (на полгода). Понял, что выдавал желаемое за действительное и мой уровень был, как сейчас говорят "джун". Но Джун - не приговор. Просто тратил на решение задач больше времени. В том числе и за счёт личного.
    Потом снова искал. Попал в стартап прям в самом его начале. За полтора года поднял уровень. Потом потыркался по всяким upwork и вебстудиям, пока опять не нашёл интересный стратап.
    В общем - не бояться и не комплексовать. "Ищите и обрящете" :-)

    По моему опыту общения с начинающими сейчас, с теми, кто самоназывается "Джун" - проблема ребят в том, что ни мыслить, ни искать решения особо не умеют. Доходило до того, что взятый в проект JS-React "специалист" не мог ни проанализировать ТЗ, ни выдать алгоритм действий по его реализации. Даже без подробностей. Я, питонист, тыкал его в выдачу гугла по вопросам, которые у него возникали.
    Или, вот, парень в ВК спросил что-то в группе по какой-то задаче. Я подсказал. На свою голову :-) Еле потом отвязался. Вопросов у него было много, но на вопросы по Питону, не смотря на призывы подумать и поискать, в итоге приходилось тыкать его вы первые позиции выдачи Гугла. Т.е. человек, желающий стать (точнее - зарабатывать) программистом и штудировавший Лутца (по-моему) просто не мог загуглить. Вообще.

    Ну, это так, немного опыта, немного наболевшего :-)
    Ответ написан
    2 комментария
  • Возможно ли врачу стать программистом?

    @cypselusmurarius
    Per aspera ad astra. Contra omnes res.
    Как писали выше попробуйте найти на стыке профессий, в больницах и it отделы есть. Медицинские учреждения на электронные системы переходят, там софта писать - не переписать. И вообще 30 лет это только начало, если вы выдержали медфак и вам интересно программирование, то успех не заставит себя долго ждать, а по поводу дела жизни Л.Д.Ландау хорошо сказал: "Нет смысла терять времени на то, что вам не интересно, и не приносит удовольствия".(Сказал он это физику-теоретику, который хотел стать врачом(у него это с успехом вышло))Удачи)
    Ответ написан
    4 комментария
  • Возможно ли врачу стать программистом?

    Rou1997
    @Rou1997
    Конечно можно, моя сотрудница в 40+ начинала, доктор медицинских наук, программированию нашла применение главным образом в науке, например ИИ, на фрилансе тоже много дипломных и курсовых работ являющихся именно научными работами.
    Ответ написан
    Комментировать
  • Возможно ли врачу стать программистом?

    lxsmkv
    @lxsmkv
    Test automation engineer
    медицинское ПО огормная ниша, расчет графиков смен, диагностическое ПО, программы для архивирования, каталогизации, базы знаний, шифрования (данные пациента нуждаются в защите, да) , для анализа изображений, там столько всего. IBM Watson тоже может слышали. Или дискретно событийное моделирование тоже интересно. Ведь управление лечебным комплексом это бизнес и нужны модели для оптимизации работы. Или обучающие/тренировочные программы. Программы для статистических расчетов.
    Есть социальные сети для врачей. Их тоже кто-то пишет. Платформы для поиска специалистов, с функцией рецензии пациентами. Да все не перечислить. Медицина - частный случай, а задачи сами по себе все те же самые.
    Я как-то на практику устраивался, так одна из фирм, писала ПО на Дельфи для анализа и каталогизации рентгеновских снимков. Так что Дельфи оно может и не модно, но зато мало умельцев. Считается что это прошлый век, хотя это совсем не важно. Важно что есть спрос. (Специалистов на Коболе ищут днем с огнем и платят "деньжищи огромные тыщи", потому что уже никто на нем не пишет, а банковские системы поддерживать надо.) Питон тоже отличный, гибкий язык для любых в принципе задач. Я считаю нужно быть знакомым как минимум с одним компилируемым языком и с одним скриптовым. А возраст рояли не играет. И то что вы прошли курс Явы, я так понимаю очный, говорит о том что намерения у вас самые серьезные. Т.е это не поветрие никакое, а настоящий интерес, сопряженный со способностями (иначе бы уже давно забросили)
    Ответ написан
    2 комментария
  • Возможно ли врачу стать программистом?

    @kp069
    Не надо себя хоронить в 30+
    Просто идите на собеседование и все. Смотрите требования на интересующую вакансию, подтягиваете знания и вперед.
    Ответ написан
    Комментировать
  • Возможно ли врачу стать программистом?

    saboteur_kiev
    @saboteur_kiev Куратор тега Карьера в IT
    software engineer
    В чем проблема просто поискать вакансии и походить на интервью?
    Вам имеет смысл поискать компании, которые разрабатывают что-то медицинское - вдруг опыт работы пригодится.

    А так - просто попробуйте пройти несколько интервью (хотя бы 3-5) и вопросы отпадут сами собой.
    Ответ написан
    4 комментария
  • Возможно ли врачу стать программистом?

    @sitev_ru
    sitev.ru - мой блог ...
    А может быть есть какая-то специфическая ниша разработки ПО, где может пригодиться и мой опыт работы врачом

    напиши сайт, автоматизирующий твою деятельность...
    Ответ написан
    Комментировать
  • Возможно ли врачу стать программистом?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    На Delphi можно делать реальные Desktop-системы для бизнеса. Он для этого и создавался собственно.
    PS: Просто подумайте что будет, если все врачи станут программистами...
    Ответ написан
    2 комментария
  • Возможно ли врачу стать программистом?

    @sugadu
    Есть люди которые и в 40 начинали свою карьеру программиста. Тут главное желание и рвение. Сделайте 2-3 проекта демонстрирующих ваши возможности и вперед, устраиваться на работу. Если рвение большое, то через 1-2 года вполне рельно стать неплохим специалистом в этой области.
    Ответ написан
    2 комментария