Giter Site home page Giter Site logo

pn_expert's Introduction

PN_Expert

Website for peoples with Parkinson's disease

pn_expert's People

Contributors

dostoyewski avatar veronmrr avatar tomb-raider avatar

Watchers

James Cloos avatar  avatar

pn_expert's Issues

Видеотесты и фотографии

Написать выходы API для создания видеотестов и фотографий как заданий для пользователя. Написать документацию по выходам

Типы заданий

Сейчас в БД следующие типы заданий:
image

А должны быть:

  • видеотест
  • фототест
  • опрос
  • документ
  • графический тест

Тип мероприятие нужно переименовать в документ (если этот тип соответствует документу и от типа мероприятие не зависит ничего другого)

Затем проверить тип 'прием лекарств' и если от него ничего не зависит переделать его в тип 'графический тест', а затем сообщить Коле, чтобы он отрисовывал задание графический тест' как задание с фотографией

Выход для регистрации со статусом

Накидал по-быстроляну слекга откорректированный сорцы из rest-auth/registration, мб так быстрее удастся впилить. Посмотри своими глазами

class StatusChoices(models.IntegerChoices):
    PATIENT = 0
    DOCTOR = 1
    FAMILY = 2

class EnhancedRegisterSerializer(serializers.Serializer):
    username = serializers.CharField(
        max_length=get_username_max_length(),
        min_length=allauth_settings.USERNAME_MIN_LENGTH,
        required=allauth_settings.USERNAME_REQUIRED
    )
    email = serializers.EmailField(required=allauth_settings.EMAIL_REQUIRED)
    password1 = serializers.CharField(write_only=True)
    password2 = serializers.CharField(write_only=True)

    # NOTA BENE:
    status = serializers.IntegerField(choices=StatusChoices.choices)

    def validate_username(self, username):
        username = get_adapter().clean_username(username)
        return username

    def validate_email(self, email):
        email = get_adapter().clean_email(email)
        if allauth_settings.UNIQUE_EMAIL:
            if email and email_address_exists(email):
                raise serializers.ValidationError(
                    _("A user is already registered with this e-mail address."))
        return email

    def validate_password1(self, password):
        return get_adapter().clean_password(password)

    # NOTA BENE:
    def validate_status(self, status):
        if not isinstance(status, int):
            raise serializers.ValidationError("Status may only be 0, 1 or 2")
        return status

    def validate(self, data):
        if data['password1'] != data['password2']:
            raise serializers.ValidationError(_("The two password fields didn't match."))
        return data

    def custom_signup(self, request, user):
        pass

    def get_cleaned_data(self):
        return {
            'username': self.validated_data.get('username', ''),
            'password1': self.validated_data.get('password1', ''),
            'email': self.validated_data.get('email', '')
            'status': self.validated_data.get('status', '')
        }

    def save(self, request):
        adapter = get_adapter()
        user = adapter.new_user(request)
        self.cleaned_data = self.get_cleaned_data()
        adapter.save_user(request, user, self)
        
        # NOTA BENE:
        user_profile = UserProfile.objects.get(user=user)
        user_profile = self.cleaned_data.get('status', 0)
        user_profile.save()

        self.custom_signup(request, user)
        setup_user_email(request, user, [])
        return user



class EnhancedRegisterView(CreateAPIView):
    # NOTA BENE
    serializer_class = EnhancedRegisterSerializer
    permission_classes = register_permission_classes()
    token_model = TokenModel

    @sensitive_post_parameters_m
    def dispatch(self, *args, **kwargs):
        return super(EnhancedRegisterView, self).dispatch(*args, **kwargs)

    def get_response_data(self, user):
        if allauth_settings.EMAIL_VERIFICATION == \
                allauth_settings.EmailVerificationMethod.MANDATORY:
            return {"detail": _("Verification e-mail sent.")}

        if getattr(settings, 'REST_USE_JWT', False):
            data = {
                'user': user,
                'token': self.token
            }
            return JWTSerializer(data).data
        else:
            return TokenSerializer(user.auth_token).data

    def create(self, request, *args, **kwargs):
        serializer = self.get_serializer(data=request.data)
        serializer.is_valid(raise_exception=True)
        user = self.perform_create(serializer)
        headers = self.get_success_headers(serializer.data)

        return Response(self.get_response_data(user),
                        status=status.HTTP_201_CREATED,
                        headers=headers)

    def perform_create(self, serializer):
        user = serializer.save(self.request)
        if getattr(settings, 'REST_USE_JWT', False):
            self.token = jwt_encode(user)
        else:
            create_token(self.token_model, user, serializer)

        complete_signup(self.request._request, user,
                        allauth_settings.EMAIL_VERIFICATION,
                        None)
        return user

# ...
url(r'^enhanced_register$', EnhancedRegisterView.as_view(), name='enhanced_register')

Статистика

  1. Статистика тревоги и депрессии
    один выход - возвращает балл тревоги и балл депрессии, т.е два числа
    Эти числа результат прохождения теста
    image

  2. Выоход с настроением - отдавать Коле число, полученное из опроса, чтобы он отображал настроение

Подтверждение почты

Исправить страницу подтверждения
image
я тебе кидала исправленную страницу внеси её на сайт

Типы фаилов в пройденных активностях

Nick Lunyak, [02.07.21 21:54]
Просто обговорить какой-то единый формат для того, как я должен получать информацию об опросах и удостовериться, что после всех опросов нужные файлы создаются (если мы работаем через файлы)

Nick Lunyak, [02.07.21 21:58]
Вообще, конечно, в идеальном мире у нас была бы в бд таблица "файл", таблица "файл опроса" с опциональными записями как 1:1 и апи-выходы в духе get-files, get-files-with-meta-data, get-survey-files-count

Nick Lunyak, [02.07.21 21:54]
Просто обговорить какой-то единый формат для того, как я должен получать информацию об опросах и удостовериться, что после всех опросов нужные файлы создаются (если мы работаем через файлы)

Nick Lunyak, [02.07.21 21:58]
Вообще, конечно, в идеальном мире у нас была бы в бд таблица "файл", таблица "файл опроса" с опциональными записями как 1:1 и апи-выходы в духе get-files, get-files-with-meta-data, get-survey-files-count

Nick Lunyak, [04.07.21 13:41]
[In reply to Фёдор]
Ну, сделать в бд все совсем-совсем по фэншую (а не как с location :)), а в апи давать не только голый rest с сущностями бд, а разные варианты с препроцессингом

Три типа регистрации

Добавить генерацию уникального пин кода при регистрации пользователя на платформе, всем существующим пользователям вручную сгенерировать код

Частота получения уведомлений

Сделать выход api, по которому Гриша сможет определять с какой частотой пользователь хочет получать уведомления
У пользователя будет в настройках выпадающий список из 3х вариантов частоты push уведомлений в минутах (раз в 30 мин, раз в 120 минут и т.д.):
TYPES = (
(0, '30'),
(1, '60'),
(2, '120'),
(3, '180'),
)

Жалобы

Жалобы работают следующим образом

В модели 4 пункта:

  • тремор
  • скованность
  • операции
  • общие жалобы

Подробно о каждом

  1. Тремор подразумевает выбор (есть или нет), если тремор есть то пользователь отмечает части тела с тремором:
  • голова
  • шея
  • туловище
  • правая рука
  • левая рука
  • правая нога
  • левая нога
    image
  1. Скованность содержит в себе тот же выбор и те же части тела что и тремор

  2. Операции. Подразумевает выбор (была или нет), если да, то пользователь выбирает стимулятор из списка: https://docs.google.com/spreadsheets/d/1uEJW7VhgCP5r0yp8wYxgEG9RZnCXIQf8VG7oSLcI6Lo/edit#gid=191343854
    Далее пользователь сам указывает заряд, в модели это просто строка

  3. Жалобы подробно. Простое текстовое поле на много символов. Заполняется пользователем.

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

image

Extra Placeholder

Добавь в вопросы для опросов поле extra_placeholder. Этот текст будет серым текстом писаться в текстовом поле extra (если тип вопроса подразумевает наличие extra) в виде "Например, <extra_place>"

Внесение лекарств при первом входе

из тг:
@Dostoyewski, isPills сам выставляется? А то вроде бы я нигде запрос никакой не кидаю для него
Если сам, то мне нужно, чтобы ты эту возможность отключил

при первом входе должна быть возможность внести много лекарств

Время сервера

Время жалоб пишет на минус три часа. Проверить в чём баг

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.