feature/new-features #13
@ -14,7 +14,7 @@
|
|||||||
</component>
|
</component>
|
||||||
<component name="NewModuleRootManager">
|
<component name="NewModuleRootManager">
|
||||||
<content url="file://$MODULE_DIR$" />
|
<content url="file://$MODULE_DIR$" />
|
||||||
<orderEntry type="inheritedJdk" />
|
<orderEntry type="jdk" jdkName="Python 3.9 (testme)" jdkType="Python SDK" />
|
||||||
<orderEntry type="sourceFolder" forTests="false" />
|
<orderEntry type="sourceFolder" forTests="false" />
|
||||||
<orderEntry type="library" name="R User Library" level="project" />
|
<orderEntry type="library" name="R User Library" level="project" />
|
||||||
<orderEntry type="library" name="R Skeletons" level="application" />
|
<orderEntry type="library" name="R Skeletons" level="application" />
|
||||||
|
@ -3,5 +3,5 @@
|
|||||||
<component name="JavaScriptSettings">
|
<component name="JavaScriptSettings">
|
||||||
<option name="languageLevel" value="ES6" />
|
<option name="languageLevel" value="ES6" />
|
||||||
</component>
|
</component>
|
||||||
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.8 (2)" project-jdk-type="Python SDK" />
|
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.9 (testme)" project-jdk-type="Python SDK" />
|
||||||
</project>
|
</project>
|
@ -2,7 +2,7 @@ from rest_framework.routers import DefaultRouter
|
|||||||
|
|
||||||
from answers.views import AnswerModelViewSet
|
from answers.views import AnswerModelViewSet
|
||||||
|
|
||||||
router = DefaultRouter()
|
router = DefaultRouter(trailing_slash=False)
|
||||||
router.register("items", AnswerModelViewSet)
|
router.register("items", AnswerModelViewSet)
|
||||||
|
|
||||||
urlpatterns = router.urls
|
urlpatterns = router.urls
|
||||||
|
@ -46,6 +46,7 @@ INSTALLED_APPS = [
|
|||||||
"django.contrib.gis",
|
"django.contrib.gis",
|
||||||
"rest_framework",
|
"rest_framework",
|
||||||
"rest_framework_simplejwt",
|
"rest_framework_simplejwt",
|
||||||
|
"django_extensions",
|
||||||
|
|
||||||
"users",
|
"users",
|
||||||
"trials",
|
"trials",
|
||||||
@ -100,10 +101,10 @@ DATABASES = {
|
|||||||
|
|
||||||
REST_FRAMEWORK = {
|
REST_FRAMEWORK = {
|
||||||
"DEFAULT_PERMISSION_CLASSES": (
|
"DEFAULT_PERMISSION_CLASSES": (
|
||||||
# "rest_framework.permissions.IsAuthenticated",
|
"rest_framework.permissions.IsAuthenticated",
|
||||||
),
|
),
|
||||||
"DEFAULT_AUTHENTICATION_CLASSES": (
|
"DEFAULT_AUTHENTICATION_CLASSES": (
|
||||||
# "rest_framework_simplejwt.authentication.JWTAuthentication",
|
"rest_framework_simplejwt.authentication.JWTAuthentication",
|
||||||
),
|
),
|
||||||
"DEFAULT_PAGINATION_CLASS": "rest_framework.pagination.LimitOffsetPagination",
|
"DEFAULT_PAGINATION_CLASS": "rest_framework.pagination.LimitOffsetPagination",
|
||||||
"DEFAULT_FILTER_BACKENDS": (
|
"DEFAULT_FILTER_BACKENDS": (
|
||||||
|
@ -1,36 +1,110 @@
|
|||||||
|
alabaster==0.7.12
|
||||||
appdirs==1.4.4
|
appdirs==1.4.4
|
||||||
|
appnope==0.1.2
|
||||||
|
argon2-cffi==21.1.0
|
||||||
asgiref==3.4.1
|
asgiref==3.4.1
|
||||||
attrs==21.2.0
|
attrs==21.2.0
|
||||||
|
Babel==2.9.1
|
||||||
|
backcall==0.2.0
|
||||||
|
bleach==4.1.0
|
||||||
botocore==1.21.15
|
botocore==1.21.15
|
||||||
|
certifi==2021.10.8
|
||||||
|
cffi==1.15.0
|
||||||
|
charset-normalizer==2.0.9
|
||||||
|
debugpy==1.5.1
|
||||||
|
decorator==5.1.0
|
||||||
|
defusedxml==0.7.1
|
||||||
distlib==0.3.2
|
distlib==0.3.2
|
||||||
Django==3.2.9
|
Django==3.2.9
|
||||||
django-cors-headers==3.10.0
|
django-cors-headers==3.10.0
|
||||||
django-debug-toolbar==3.2.2
|
django-debug-toolbar==3.2.2
|
||||||
|
django-extensions==3.1.5
|
||||||
django-filter==21.1
|
django-filter==21.1
|
||||||
|
django-shell-plus==1.1.7
|
||||||
djangorestframework==3.12.4
|
djangorestframework==3.12.4
|
||||||
djangorestframework-simplejwt==5.0.0
|
djangorestframework-simplejwt==5.0.0
|
||||||
|
docutils==0.17.1
|
||||||
drf-spectacular==0.21.0
|
drf-spectacular==0.21.0
|
||||||
|
entrypoints==0.3
|
||||||
filelock==3.0.12
|
filelock==3.0.12
|
||||||
GDAL==3.3.3
|
GDAL==3.3.3
|
||||||
git-remote-codecommit==1.15.1
|
git-remote-codecommit==1.15.1
|
||||||
|
idna==3.3
|
||||||
|
imagesize==1.3.0
|
||||||
|
importlib-metadata==4.8.2
|
||||||
inflection==0.5.1
|
inflection==0.5.1
|
||||||
|
ipykernel==6.6.0
|
||||||
|
ipyparallel==8.0.0
|
||||||
|
ipython==7.30.1
|
||||||
|
ipython-genutils==0.2.0
|
||||||
|
ipywidgets==7.6.5
|
||||||
|
jedi==0.18.1
|
||||||
|
Jinja2==3.0.3
|
||||||
jmespath==0.10.0
|
jmespath==0.10.0
|
||||||
jsonschema==4.2.1
|
jsonschema==4.2.1
|
||||||
|
jupyter-client==7.1.0
|
||||||
|
jupyter-core==4.9.1
|
||||||
|
jupyterlab-pygments==0.1.2
|
||||||
|
jupyterlab-widgets==1.0.2
|
||||||
|
Markdown==3.3.6
|
||||||
|
MarkupSafe==2.0.1
|
||||||
|
matplotlib-inline==0.1.3
|
||||||
|
mistune==0.8.4
|
||||||
|
nbclient==0.5.9
|
||||||
|
nbconvert==6.3.0
|
||||||
|
nbformat==5.1.3
|
||||||
|
nest-asyncio==1.5.4
|
||||||
|
nose==1.3.7
|
||||||
|
notebook==6.4.6
|
||||||
numpy==1.21.4
|
numpy==1.21.4
|
||||||
|
packaging==21.3
|
||||||
|
pandocfilters==1.5.0
|
||||||
|
parso==0.8.3
|
||||||
pbr==5.6.0
|
pbr==5.6.0
|
||||||
|
pexpect==4.8.0
|
||||||
|
pickleshare==0.7.5
|
||||||
Pillow==8.4.0
|
Pillow==8.4.0
|
||||||
|
prometheus-client==0.12.0
|
||||||
|
prompt-toolkit==3.0.23
|
||||||
protobuf==3.17.3
|
protobuf==3.17.3
|
||||||
|
psutil==5.8.0
|
||||||
psycopg2-binary==2.9.2
|
psycopg2-binary==2.9.2
|
||||||
|
ptyprocess==0.7.0
|
||||||
|
pycparser==2.21
|
||||||
|
Pygments==2.10.0
|
||||||
PyJWT==2.3.0
|
PyJWT==2.3.0
|
||||||
|
pyparsing==3.0.6
|
||||||
pyrsistent==0.18.0
|
pyrsistent==0.18.0
|
||||||
python-dateutil==2.8.2
|
python-dateutil==2.8.2
|
||||||
pytz==2021.3
|
pytz==2021.3
|
||||||
PyYAML==6.0
|
PyYAML==6.0
|
||||||
|
pyzmq==22.3.0
|
||||||
|
qtconsole==5.2.1
|
||||||
|
QtPy==1.11.3
|
||||||
|
requests==2.26.0
|
||||||
|
Send2Trash==1.8.0
|
||||||
six==1.16.0
|
six==1.16.0
|
||||||
|
snowballstemmer==2.2.0
|
||||||
|
Sphinx==4.3.1
|
||||||
|
sphinxcontrib-applehelp==1.0.2
|
||||||
|
sphinxcontrib-devhelp==1.0.2
|
||||||
|
sphinxcontrib-htmlhelp==2.0.0
|
||||||
|
sphinxcontrib-jsmath==1.0.1
|
||||||
|
sphinxcontrib-qthelp==1.0.3
|
||||||
|
sphinxcontrib-serializinghtml==1.1.5
|
||||||
sqlparse==0.4.2
|
sqlparse==0.4.2
|
||||||
stevedore==3.3.0
|
stevedore==3.3.0
|
||||||
|
terminado==0.12.1
|
||||||
|
testpath==0.5.0
|
||||||
|
tornado==6.1
|
||||||
|
tqdm==4.62.3
|
||||||
|
traitlets==5.1.1
|
||||||
uritemplate==4.1.1
|
uritemplate==4.1.1
|
||||||
urllib3==1.26.6
|
urllib3==1.26.6
|
||||||
virtualenv==20.4.7
|
virtualenv==20.4.7
|
||||||
virtualenv-clone==0.5.4
|
virtualenv-clone==0.5.4
|
||||||
virtualenvwrapper==4.8.4
|
virtualenvwrapper==4.8.4
|
||||||
|
wcwidth==0.2.5
|
||||||
|
webencodings==0.5.1
|
||||||
|
widgetsnbextension==3.5.2
|
||||||
|
zipp==3.6.0
|
||||||
|
@ -3,7 +3,7 @@ from django.db import models
|
|||||||
|
|
||||||
class Test(models.Model):
|
class Test(models.Model):
|
||||||
name = models.CharField(max_length=100)
|
name = models.CharField(max_length=100)
|
||||||
passing_score = models.PositiveSmallIntegerField()
|
passing_score = models.PositiveSmallIntegerField(default=0)
|
||||||
|
|
||||||
def get_score(self, answers):
|
def get_score(self, answers):
|
||||||
"""
|
"""
|
||||||
|
9
users/managers.py
Normal file
9
users/managers.py
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
from django.contrib.auth.base_user import BaseUserManager
|
||||||
|
|
||||||
|
from .querysets import UserQuerySet
|
||||||
|
|
||||||
|
|
||||||
|
class UserManager(BaseUserManager):
|
||||||
|
|
||||||
|
def get_queryset(self):
|
||||||
|
return UserQuerySet(self.model, using=self._db)
|
@ -1,6 +1,8 @@
|
|||||||
from django.contrib.auth.base_user import AbstractBaseUser
|
from django.contrib.auth.base_user import AbstractBaseUser
|
||||||
from django.db import models
|
from django.db import models
|
||||||
|
|
||||||
|
from .managers import UserManager
|
||||||
|
|
||||||
|
|
||||||
class User(AbstractBaseUser):
|
class User(AbstractBaseUser):
|
||||||
first_name = models.CharField(max_length=100)
|
first_name = models.CharField(max_length=100)
|
||||||
@ -15,6 +17,8 @@ class User(AbstractBaseUser):
|
|||||||
|
|
||||||
USERNAME_FIELD = "email"
|
USERNAME_FIELD = "email"
|
||||||
|
|
||||||
|
objects = UserManager()
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
ordering = ("id", )
|
ordering = ("id", )
|
||||||
|
|
||||||
|
7
users/querysets.py
Normal file
7
users/querysets.py
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
from django.db.models import QuerySet
|
||||||
|
|
||||||
|
|
||||||
|
class UserQuerySet(QuerySet):
|
||||||
|
|
||||||
|
def activated(self, **kwargs):
|
||||||
|
return self.filter(is_activated=True)
|
@ -4,6 +4,16 @@ from users.models import User
|
|||||||
|
|
||||||
|
|
||||||
class UserSerializer(serializers.ModelSerializer):
|
class UserSerializer(serializers.ModelSerializer):
|
||||||
|
|
||||||
|
password = serializers.CharField(
|
||||||
|
write_only=True,
|
||||||
|
required=False,
|
||||||
|
min_length=8,
|
||||||
|
style={"input_type": "password"},
|
||||||
|
)
|
||||||
|
#todo
|
||||||
|
# avatar = serializers.ImageField(allow_empty_file=True, source="profile.avatar", read_only=True)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = User
|
model = User
|
||||||
fields = (
|
fields = (
|
||||||
|
@ -6,11 +6,12 @@ from rest_framework_simplejwt.views import TokenObtainPairView
|
|||||||
from rest_framework_simplejwt.views import TokenRefreshView
|
from rest_framework_simplejwt.views import TokenRefreshView
|
||||||
|
|
||||||
|
|
||||||
router = DefaultRouter()
|
router = DefaultRouter(trailing_slash=False)
|
||||||
router.register("items", UserModelViewSet)
|
router.register("items", UserModelViewSet)
|
||||||
|
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
path('api/token/', TokenObtainPairView.as_view(), name='token_obtain_pair'),
|
path("", include(router.urls)),
|
||||||
path('api/token/refresh/', TokenRefreshView.as_view(), name='token_refresh'),
|
path('api/token', TokenObtainPairView.as_view(), name='token_obtain_pair'),
|
||||||
|
path('api/token/refresh', TokenRefreshView.as_view(), name='token_refresh'),
|
||||||
]
|
]
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user