Website for peoples with Parkinson's disease
dostoyewski / pn_expert Goto Github PK
View Code? Open in Web Editor NEWWebsite for peoples with Parkinson's disease
Website for peoples with Parkinson's disease
Флаг для подтверждения статуса врача из админки
Написать выходы API для создания видеотестов и фотографий как заданий для пользователя. Написать документацию по выходам
Сейчас в БД следующие типы заданий:
А должны быть:
Тип мероприятие нужно переименовать в документ (если этот тип соответствует документу и от типа мероприятие не зависит ничего другого)
Затем проверить тип 'прием лекарств' и если от него ничего не зависит переделать его в тип 'графический тест', а затем сообщить Коле, чтобы он отрисовывал задание графический тест' как задание с фотографией
Дополнительное поле в модели опросов для подгрузки картинки к вопросу
Накидал по-быстроляну слекга откорректированный сорцы из 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')
Посмотри плз тут: https://github.com/lunakoly/ReactSandbox/issues/44
См что просил Артур
Группировка пользователей и привязка к врачу
Перенести поиск с НТИ, но заменить поиск по никнейму на поиск по фио
Увиличить длину описания в фото-ивентах
Сделать для @TeslaWorks239 выходы апи под пуши на телефоне @Dostoyewski
Хотя в PillAssignedAdmin
есть time_out
, в админке его нет:
Добавить возможность удалять из бд картинку из опроса
http://89.22.164.82:6969/admin/survey/question/28/change/
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'),
)
Посотри плз: https://github.com/lunakoly/ReactSandbox/issues/13. Как мы говорили ранее, ты должен добавить в rest-auth/registration
поле для status
В модели 4 пункта:
Скованность содержит в себе тот же выбор и те же части тела что и тремор
Операции. Подразумевает выбор (была или нет), если да, то пользователь выбирает стимулятор из списка: https://docs.google.com/spreadsheets/d/1uEJW7VhgCP5r0yp8wYxgEG9RZnCXIQf8VG7oSLcI6Lo/edit#gid=191343854
Далее пользователь сам указывает заряд, в модели это просто строка
Жалобы подробно. Простое текстовое поле на много символов. Заполняется пользователем.
Все изменения, которые пользователь вносит в любой из пунктов должны сохраняться в базе данных. То есть нужно хранить историю изменения жалоб каждого пациента (вообще это надо уточнить у Артура, но я думаю она скажет да)
Добавь в вопросы для опросов поле extra_placeholder
. Этот текст будет серым текстом писаться в текстовом поле extra
(если тип вопроса подразумевает наличие extra
) в виде "Например, <extra_place>"
из тг:
@Dostoyewski, isPills сам выставляется? А то вроде бы я нигде запрос никакой не кидаю для него
Если сам, то мне нужно, чтобы ты эту возможность отключил
при первом входе должна быть возможность внести много лекарств
Шаги перестали работать @Dostoyewski
Время жалоб пишет на минус три часа. Проверить в чём баг
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.