diff --git a/application/apps.py b/application/apps.py deleted file mode 100644 index 8acf66b..0000000 --- a/application/apps.py +++ /dev/null @@ -1,5 +0,0 @@ -from django.apps import AppConfig - - -class ApplicationConfig(AppConfig): - name = 'application' diff --git a/application/migrations/0002_auto_20190410_1458.py b/application/migrations/0002_auto_20190410_1458.py deleted file mode 100644 index a479c69..0000000 --- a/application/migrations/0002_auto_20190410_1458.py +++ /dev/null @@ -1,19 +0,0 @@ -# Generated by Django 2.2 on 2019-04-10 11:58 - -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('application', '0001_initial'), - ] - - operations = [ - migrations.AlterField( - model_name='user', - name='map_level_id', - field=models.ForeignKey(default=None, null=True, on_delete=django.db.models.deletion.CASCADE, to='application.MapLevel'), - ), - ] diff --git a/application/serializer.py b/application/serializer.py deleted file mode 100644 index 199a81c..0000000 --- a/application/serializer.py +++ /dev/null @@ -1,17 +0,0 @@ -from .models import User -from rest_framework import serializers - - -class UserSerializer(serializers.ModelSerializer): - class Meta: - model = User - fields = '__all__' - - def create(self, validated_data): - user = User( - email=validated_data['email'], - name=validated_data['username'] - ) - user.set_password(validated_data['password']) - user.save() - return user diff --git a/application/static/application/images/036277957c53a3c967ee327ca92c48ec.jpg b/application/static/application/images/036277957c53a3c967ee327ca92c48ec.jpg deleted file mode 100644 index a812085..0000000 Binary files a/application/static/application/images/036277957c53a3c967ee327ca92c48ec.jpg and /dev/null differ diff --git a/application/static/application/images/088e3864a827bf240cc83cab3ac49ae3.jpg b/application/static/application/images/088e3864a827bf240cc83cab3ac49ae3.jpg deleted file mode 100644 index 8f7bfec..0000000 Binary files a/application/static/application/images/088e3864a827bf240cc83cab3ac49ae3.jpg and /dev/null differ diff --git a/application/static/application/images/100d6380c5c7b6ed8bad87e1bfcb37b1.jpg b/application/static/application/images/100d6380c5c7b6ed8bad87e1bfcb37b1.jpg deleted file mode 100644 index f88b3ee..0000000 Binary files a/application/static/application/images/100d6380c5c7b6ed8bad87e1bfcb37b1.jpg and /dev/null differ diff --git a/application/static/application/images/1228aca331d5d255cb1a8e8f514ff23a.jpg b/application/static/application/images/1228aca331d5d255cb1a8e8f514ff23a.jpg deleted file mode 100644 index dbff5c9..0000000 Binary files a/application/static/application/images/1228aca331d5d255cb1a8e8f514ff23a.jpg and /dev/null differ diff --git a/application/static/application/images/1bb1cc51e1bb1f630187b0241c07bc77.jpg b/application/static/application/images/1bb1cc51e1bb1f630187b0241c07bc77.jpg deleted file mode 100644 index cd02faf..0000000 Binary files a/application/static/application/images/1bb1cc51e1bb1f630187b0241c07bc77.jpg and /dev/null differ diff --git a/application/static/application/images/1bba97d16691eaf3f7680662b2fdb864.jpg b/application/static/application/images/1bba97d16691eaf3f7680662b2fdb864.jpg deleted file mode 100644 index 3d614fa..0000000 Binary files a/application/static/application/images/1bba97d16691eaf3f7680662b2fdb864.jpg and /dev/null differ diff --git a/application/static/application/images/223d5b8ca9d997bf8c81fe63aca7b827.jpg b/application/static/application/images/223d5b8ca9d997bf8c81fe63aca7b827.jpg deleted file mode 100644 index aab8f79..0000000 Binary files a/application/static/application/images/223d5b8ca9d997bf8c81fe63aca7b827.jpg and /dev/null differ diff --git a/application/static/application/images/24b49ce490ad80cc309f8c5359b47ea7.jpg b/application/static/application/images/24b49ce490ad80cc309f8c5359b47ea7.jpg deleted file mode 100644 index b226e8b..0000000 Binary files a/application/static/application/images/24b49ce490ad80cc309f8c5359b47ea7.jpg and /dev/null differ diff --git a/application/static/application/images/2aa87405cdae7f01af63778c74823f01.jpg b/application/static/application/images/2aa87405cdae7f01af63778c74823f01.jpg deleted file mode 100644 index 5b37f26..0000000 Binary files a/application/static/application/images/2aa87405cdae7f01af63778c74823f01.jpg and /dev/null differ diff --git a/application/static/application/images/2d631cdbeeb44d028f5ba1a3ce975290.jpg b/application/static/application/images/2d631cdbeeb44d028f5ba1a3ce975290.jpg deleted file mode 100644 index 4524400..0000000 Binary files a/application/static/application/images/2d631cdbeeb44d028f5ba1a3ce975290.jpg and /dev/null differ diff --git a/application/static/application/images/2d71899913a983c3002968f9b02ebf29.jpg b/application/static/application/images/2d71899913a983c3002968f9b02ebf29.jpg deleted file mode 100644 index 10ec85a..0000000 Binary files a/application/static/application/images/2d71899913a983c3002968f9b02ebf29.jpg and /dev/null differ diff --git a/application/static/application/images/41fc3ecc512c12e608f25cb172428ad0.jpg b/application/static/application/images/41fc3ecc512c12e608f25cb172428ad0.jpg deleted file mode 100644 index 19640fc..0000000 Binary files a/application/static/application/images/41fc3ecc512c12e608f25cb172428ad0.jpg and /dev/null differ diff --git a/application/static/application/images/48a6fe35738bc85aafa6a4ffa49d13d8.jpg b/application/static/application/images/48a6fe35738bc85aafa6a4ffa49d13d8.jpg deleted file mode 100644 index ea7a473..0000000 Binary files a/application/static/application/images/48a6fe35738bc85aafa6a4ffa49d13d8.jpg and /dev/null differ diff --git a/application/static/application/images/5863db615937629a28dd4631df298a9a.jpg b/application/static/application/images/5863db615937629a28dd4631df298a9a.jpg deleted file mode 100644 index 68e2780..0000000 Binary files a/application/static/application/images/5863db615937629a28dd4631df298a9a.jpg and /dev/null differ diff --git a/application/static/application/images/596ff7cec8d33568a7125942e0d65e97.jpg b/application/static/application/images/596ff7cec8d33568a7125942e0d65e97.jpg deleted file mode 100644 index 2dc4799..0000000 Binary files a/application/static/application/images/596ff7cec8d33568a7125942e0d65e97.jpg and /dev/null differ diff --git a/application/static/application/images/61e44c91a67b78e75d34732a406481c4.jpg b/application/static/application/images/61e44c91a67b78e75d34732a406481c4.jpg deleted file mode 100644 index ab2578a..0000000 Binary files a/application/static/application/images/61e44c91a67b78e75d34732a406481c4.jpg and /dev/null differ diff --git a/application/static/application/images/7dbb34e2df9affd88b8fe22001c75a63.jpg b/application/static/application/images/7dbb34e2df9affd88b8fe22001c75a63.jpg deleted file mode 100644 index 119056a..0000000 Binary files a/application/static/application/images/7dbb34e2df9affd88b8fe22001c75a63.jpg and /dev/null differ diff --git a/application/static/application/images/88af5919e223380cf18cb18a83120883.jpg b/application/static/application/images/88af5919e223380cf18cb18a83120883.jpg deleted file mode 100644 index dc9691d..0000000 Binary files a/application/static/application/images/88af5919e223380cf18cb18a83120883.jpg and /dev/null differ diff --git a/application/static/application/images/a29924738ff4678ca4d8c236922f2174.jpg b/application/static/application/images/a29924738ff4678ca4d8c236922f2174.jpg deleted file mode 100644 index b3b4c71..0000000 Binary files a/application/static/application/images/a29924738ff4678ca4d8c236922f2174.jpg and /dev/null differ diff --git a/application/static/application/images/a8bccda33849e646e3a33f67dbb130f9.jpg b/application/static/application/images/a8bccda33849e646e3a33f67dbb130f9.jpg deleted file mode 100644 index e2280d9..0000000 Binary files a/application/static/application/images/a8bccda33849e646e3a33f67dbb130f9.jpg and /dev/null differ diff --git a/application/static/application/images/ab50a705e193a05484d4dc83602cbf6b.jpg b/application/static/application/images/ab50a705e193a05484d4dc83602cbf6b.jpg deleted file mode 100644 index 200d912..0000000 Binary files a/application/static/application/images/ab50a705e193a05484d4dc83602cbf6b.jpg and /dev/null differ diff --git a/application/static/application/images/adca77f65be84ee79c86971a62e0aa26.jpg b/application/static/application/images/adca77f65be84ee79c86971a62e0aa26.jpg deleted file mode 100644 index 0a8a74b..0000000 Binary files a/application/static/application/images/adca77f65be84ee79c86971a62e0aa26.jpg and /dev/null differ diff --git a/application/static/application/images/adccb4841c392877b5c3b248c536f0a0.jpg b/application/static/application/images/adccb4841c392877b5c3b248c536f0a0.jpg deleted file mode 100644 index f66665c..0000000 Binary files a/application/static/application/images/adccb4841c392877b5c3b248c536f0a0.jpg and /dev/null differ diff --git a/application/static/application/images/b07ee8ae7afc3200222fd742971151f5.jpg b/application/static/application/images/b07ee8ae7afc3200222fd742971151f5.jpg deleted file mode 100644 index 0279067..0000000 Binary files a/application/static/application/images/b07ee8ae7afc3200222fd742971151f5.jpg and /dev/null differ diff --git a/application/static/application/images/ba77dc8fc4606890db2a3110030ec12c.jpg b/application/static/application/images/ba77dc8fc4606890db2a3110030ec12c.jpg deleted file mode 100644 index 2cd0b83..0000000 Binary files a/application/static/application/images/ba77dc8fc4606890db2a3110030ec12c.jpg and /dev/null differ diff --git a/application/static/application/images/background.jpg b/application/static/application/images/background.jpg deleted file mode 100644 index 8821c05..0000000 Binary files a/application/static/application/images/background.jpg and /dev/null differ diff --git a/application/static/application/images/c30b0cfec339ee061c3c5e57eda55bc2.jpg b/application/static/application/images/c30b0cfec339ee061c3c5e57eda55bc2.jpg deleted file mode 100644 index eed243f..0000000 Binary files a/application/static/application/images/c30b0cfec339ee061c3c5e57eda55bc2.jpg and /dev/null differ diff --git a/application/static/application/images/cea1d738950cf0e3f41c87fab7f78223.jpg b/application/static/application/images/cea1d738950cf0e3f41c87fab7f78223.jpg deleted file mode 100644 index e29d513..0000000 Binary files a/application/static/application/images/cea1d738950cf0e3f41c87fab7f78223.jpg and /dev/null differ diff --git a/application/static/application/images/d03a6edea9f887c67074e87d61ae978f.jpg b/application/static/application/images/d03a6edea9f887c67074e87d61ae978f.jpg deleted file mode 100644 index 5901b0f..0000000 Binary files a/application/static/application/images/d03a6edea9f887c67074e87d61ae978f.jpg and /dev/null differ diff --git a/application/static/application/images/d213b287ec51fb4781ae8ec84bbca0c4.jpg b/application/static/application/images/d213b287ec51fb4781ae8ec84bbca0c4.jpg deleted file mode 100644 index 65cfa13..0000000 Binary files a/application/static/application/images/d213b287ec51fb4781ae8ec84bbca0c4.jpg and /dev/null differ diff --git a/application/static/application/images/e12a22907f702159e4d157931823dcda.jpg b/application/static/application/images/e12a22907f702159e4d157931823dcda.jpg deleted file mode 100644 index f6789e7..0000000 Binary files a/application/static/application/images/e12a22907f702159e4d157931823dcda.jpg and /dev/null differ diff --git a/application/static/application/images/eafa01cc053b1f852855a4efad27aa6c.jpg b/application/static/application/images/eafa01cc053b1f852855a4efad27aa6c.jpg deleted file mode 100644 index 7deaeb3..0000000 Binary files a/application/static/application/images/eafa01cc053b1f852855a4efad27aa6c.jpg and /dev/null differ diff --git a/application/static/application/images/fda0f115291318ad86e443fc3eddecff.jpg b/application/static/application/images/fda0f115291318ad86e443fc3eddecff.jpg deleted file mode 100644 index 5fd0943..0000000 Binary files a/application/static/application/images/fda0f115291318ad86e443fc3eddecff.jpg and /dev/null differ diff --git a/application/static/application/images/planeta.jpeg b/application/static/application/images/planeta.jpeg deleted file mode 100644 index 1c48cd4..0000000 Binary files a/application/static/application/images/planeta.jpeg and /dev/null differ diff --git a/application/static/application/styles/base.css b/application/static/application/styles/base.css deleted file mode 100644 index cb91e92..0000000 --- a/application/static/application/styles/base.css +++ /dev/null @@ -1,5 +0,0 @@ - -.siqnup-form { - max-width: 30%; - margin: 32px auto 0 auto; -} \ No newline at end of file diff --git a/application/templates/application/layout/base.html b/application/templates/application/layout/base.html deleted file mode 100644 index a2fb5e1..0000000 --- a/application/templates/application/layout/base.html +++ /dev/null @@ -1,23 +0,0 @@ -{% load static %} - - - - - - - E-learning - - - - - - - - - - {% block headers %}{% endblock %} - - -{% block content %}{% endblock %} - - \ No newline at end of file diff --git a/application/templates/application/signin.html b/application/templates/application/signin.html deleted file mode 100644 index 566549b..0000000 --- a/application/templates/application/signin.html +++ /dev/null @@ -1,10 +0,0 @@ - - - - - Title - - - - - \ No newline at end of file diff --git a/application/templates/application/signup.html b/application/templates/application/signup.html deleted file mode 100644 index 062a5ce..0000000 --- a/application/templates/application/signup.html +++ /dev/null @@ -1,25 +0,0 @@ -{% extends 'application/layout/base.html' %} - - -{% block content %} -
-
- - -
- -
- - -
- -
- - -
- - - - {% csrf_token %} -
-{% endblock %} \ No newline at end of file diff --git a/application/urls.py b/application/urls.py deleted file mode 100644 index 201f27e..0000000 --- a/application/urls.py +++ /dev/null @@ -1,9 +0,0 @@ -from django.urls import path -from django.contrib import admin - -from application import views - -urlpatterns = [ - path('signup/', views.show_signup), - path('admin/', admin.site.urls), -] \ No newline at end of file diff --git a/application/views.py b/application/views.py deleted file mode 100644 index 1bb124e..0000000 --- a/application/views.py +++ /dev/null @@ -1,32 +0,0 @@ -# for serializer -from django.http import HttpResponse - -from .models import User -from rest_framework import generics -from .serializer import UserSerializer - -# for signup function -from django.shortcuts import render, redirect - - - -# serializer registragion -# class UserList(generics.ListAPIView): -# queryset = User.objects.all() -# serializer_class = UserSerializer -# another one - - -def show_signup(request): - if request.method == 'POST': - email = request.POST.get('email') - name = request.POST.get('name') - password = request.POST.get('pass') - user = User(email=email, name=name, password=password) - user.save() - return HttpResponse('200') - - return render(request, 'application/signup.html') - - - diff --git a/project/settings.py b/project/settings.py index 24aa19c..e34d162 100644 --- a/project/settings.py +++ b/project/settings.py @@ -37,9 +37,8 @@ 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', - 'application', # include app - #'django_summernote', - 'rest_framework', # add django rest framework + 'users', + 'rest_framework', #'rest_framework_authtoken', #'djoser', ] diff --git a/project/urls.py b/project/urls.py index 4ae359a..d339652 100644 --- a/project/urls.py +++ b/project/urls.py @@ -13,10 +13,19 @@ 1. Import the include() function: from django.urls import include, path 2. Add a URL to urlpatterns: path('blog/', include('blog.urls')) """ -from django.contrib import admin + from django.urls import path, include +from django.contrib import admin + +from rest_framework.routers import DefaultRouter +from users.views import RegistrationView, UserViewSet + +router = DefaultRouter() + +router.register(r'users', UserViewSet) urlpatterns = [ - # path('admin/', admin.site.urls), - path('', include('application.urls')) -] + path('api/', include(router.urls)), + path('api/signup/', RegistrationView.as_view(), name='signup'), + path('admin/', admin.site.urls), +] \ No newline at end of file diff --git a/application/__init__.py b/snippets/__init__.py similarity index 100% rename from application/__init__.py rename to snippets/__init__.py diff --git a/snippets/admin.py b/snippets/admin.py new file mode 100644 index 0000000..ea5d68b --- /dev/null +++ b/snippets/admin.py @@ -0,0 +1,3 @@ +from django.contrib import admin + +# Register your models here. diff --git a/snippets/apps.py b/snippets/apps.py new file mode 100644 index 0000000..81ca843 --- /dev/null +++ b/snippets/apps.py @@ -0,0 +1,5 @@ +from django.apps import AppConfig + + +class SnippetsConfig(AppConfig): + name = 'snippets' diff --git a/application/migrations/__init__.py b/snippets/migrations/__init__.py similarity index 100% rename from application/migrations/__init__.py rename to snippets/migrations/__init__.py diff --git a/snippets/models.py b/snippets/models.py new file mode 100644 index 0000000..fd18c6e --- /dev/null +++ b/snippets/models.py @@ -0,0 +1,3 @@ +from django.db import models + +# Create your models here. diff --git a/application/tests.py b/snippets/tests.py similarity index 95% rename from application/tests.py rename to snippets/tests.py index 7ce503c..de8bdc0 100644 --- a/application/tests.py +++ b/snippets/tests.py @@ -1,3 +1,3 @@ -from django.test import TestCase - -# Create your tests here. +from django.test import TestCase + +# Create your tests here. diff --git a/snippets/views.py b/snippets/views.py new file mode 100644 index 0000000..c60c790 --- /dev/null +++ b/snippets/views.py @@ -0,0 +1,3 @@ +from django.shortcuts import render + +# Create your views here. diff --git a/users/__init__.py b/users/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/application/admin.py b/users/admin.py similarity index 94% rename from application/admin.py rename to users/admin.py index c444238..9c8963b 100644 --- a/application/admin.py +++ b/users/admin.py @@ -1,5 +1,5 @@ -from django.contrib import admin - -from .models import User - -admin.site.register(User) +from django.contrib import admin + +from .models import User + +admin.site.register(User) diff --git a/users/apps.py b/users/apps.py new file mode 100644 index 0000000..2444220 --- /dev/null +++ b/users/apps.py @@ -0,0 +1,5 @@ +from django.apps import AppConfig + + +class UsersConfig(AppConfig): + name = 'users' diff --git a/application/migrations/0001_initial.py b/users/migrations/0001_initial.py similarity index 83% rename from application/migrations/0001_initial.py rename to users/migrations/0001_initial.py index 19d547a..8fbac38 100644 --- a/application/migrations/0001_initial.py +++ b/users/migrations/0001_initial.py @@ -1,102 +1,102 @@ -# Generated by Django 2.2 on 2019-04-10 11:25 - -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - initial = True - - dependencies = [ - ] - - operations = [ - migrations.CreateModel( - name='Block', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ], - ), - migrations.CreateModel( - name='Map', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ], - ), - migrations.CreateModel( - name='MapLevel', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('level_name', models.CharField(default=None, max_length=50)), - ('block_id', models.ForeignKey(default=None, on_delete=django.db.models.deletion.CASCADE, to='application.Block')), - ], - ), - migrations.CreateModel( - name='Task', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('score', models.IntegerField(default=0)), - ('type', models.CharField(default=None, max_length=50)), - ('description', models.TextField(default=None)), - ('map_level_id', models.ForeignKey(default=None, on_delete=django.db.models.deletion.CASCADE, to='application.MapLevel')), - ], - ), - migrations.CreateModel( - name='User', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', models.CharField(default=None, max_length=50)), - ('email', models.EmailField(default=None, max_length=50, unique=True)), - ('password', models.CharField(default=None, max_length=50)), - ('level', models.IntegerField(default=1)), - ('map_level_id', models.ForeignKey(default=None, on_delete=django.db.models.deletion.CASCADE, to='application.MapLevel')), - ], - ), - migrations.CreateModel( - name='Theory', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('text', models.TextField(default=None)), - ('video', models.URLField(default=None)), - ('task_id', models.ForeignKey(default=None, on_delete=django.db.models.deletion.CASCADE, to='application.Task')), - ], - ), - migrations.CreateModel( - name='TaskType', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name_type', models.TextField(default=None)), - ('task_id', models.ForeignKey(default=None, on_delete=django.db.models.deletion.CASCADE, to='application.Task')), - ], - ), - migrations.CreateModel( - name='Solution', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('task_id', models.ForeignKey(default=None, on_delete=django.db.models.deletion.CASCADE, to='application.Task')), - ('user_id', models.ForeignKey(default=None, on_delete=django.db.models.deletion.CASCADE, to='application.User')), - ], - ), - migrations.CreateModel( - name='ProgramTests', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('input', models.TextField(default=None)), - ('output', models.TextField(default=None)), - ('type_id', models.ForeignKey(default=None, on_delete=django.db.models.deletion.CASCADE, to='application.TaskType')), - ], - ), - migrations.CreateModel( - name='Chat', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('task_id', models.ForeignKey(default=None, on_delete=django.db.models.deletion.CASCADE, to='application.Task')), - ], - ), - migrations.AddField( - model_name='block', - name='map_id', - field=models.ForeignKey(default=None, on_delete=django.db.models.deletion.CASCADE, to='application.Map'), - ), - ] +# Generated by Django 2.2 on 2019-04-18 17:36 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ] + + operations = [ + migrations.CreateModel( + name='Block', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ], + ), + migrations.CreateModel( + name='Map', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ], + ), + migrations.CreateModel( + name='MapLevel', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('level_name', models.CharField(default=None, max_length=50)), + ('block_id', models.ForeignKey(default=None, on_delete=django.db.models.deletion.CASCADE, to='users.Block')), + ], + ), + migrations.CreateModel( + name='Task', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('score', models.IntegerField(default=0)), + ('type', models.CharField(default=None, max_length=50)), + ('description', models.TextField(default=None)), + ('map_level_id', models.ForeignKey(default=None, on_delete=django.db.models.deletion.CASCADE, to='users.MapLevel')), + ], + ), + migrations.CreateModel( + name='User', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(default=None, max_length=50)), + ('email', models.EmailField(default=None, max_length=50, unique=True)), + ('password', models.CharField(default=None, max_length=50)), + ('level', models.IntegerField(default=1)), + ('map_level_id', models.ForeignKey(default=None, null=True, on_delete=django.db.models.deletion.CASCADE, to='users.MapLevel')), + ], + ), + migrations.CreateModel( + name='Theory', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('text', models.TextField(default=None)), + ('video', models.URLField(default=None)), + ('task_id', models.ForeignKey(default=None, on_delete=django.db.models.deletion.CASCADE, to='users.Task')), + ], + ), + migrations.CreateModel( + name='TaskType', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name_type', models.TextField(default=None)), + ('task_id', models.ForeignKey(default=None, on_delete=django.db.models.deletion.CASCADE, to='users.Task')), + ], + ), + migrations.CreateModel( + name='Solution', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('task_id', models.ForeignKey(default=None, on_delete=django.db.models.deletion.CASCADE, to='users.Task')), + ('user_id', models.ForeignKey(default=None, on_delete=django.db.models.deletion.CASCADE, to='users.User')), + ], + ), + migrations.CreateModel( + name='ProgramTests', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('input', models.TextField(default=None)), + ('output', models.TextField(default=None)), + ('type_id', models.ForeignKey(default=None, on_delete=django.db.models.deletion.CASCADE, to='users.TaskType')), + ], + ), + migrations.CreateModel( + name='Chat', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('task_id', models.ForeignKey(default=None, on_delete=django.db.models.deletion.CASCADE, to='users.Task')), + ], + ), + migrations.AddField( + model_name='block', + name='map_id', + field=models.ForeignKey(default=None, on_delete=django.db.models.deletion.CASCADE, to='users.Map'), + ), + ] diff --git a/users/migrations/__init__.py b/users/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/application/models.py b/users/models.py similarity index 95% rename from application/models.py rename to users/models.py index 2b2a838..6d2eaa1 100644 --- a/application/models.py +++ b/users/models.py @@ -1,60 +1,63 @@ -from django.db import models - - -class Map(models.Model): - image = 0 # mock field - - -class Block(models.Model): - map_id = models.ForeignKey(Map, on_delete=models.CASCADE, default=None) - image = 0 # mock field - - -class MapLevel(models.Model): - level_name = models.CharField(max_length=50, default=None) - block_id = models.ForeignKey(Block, on_delete=models.CASCADE, default=None) - - -class User(models.Model): - name = models.CharField(max_length=50, default=None) # User name - email = models.EmailField(max_length=50, default=None, unique=True) # Email - password = models.CharField(max_length=50, default=None) # Password - level = models.IntegerField(default=1) # User level - map_level_id = models.ForeignKey(MapLevel, on_delete=models.CASCADE, default=None, null=True) - photo = 0 # mock field - - def __str__(self): - return str(self.name) + str(self.email) - - -class Task(models.Model): - score = models.IntegerField(default=0) - type = models.CharField(max_length=50, default=None) - description = models.TextField(default=None) - map_level_id = models.ForeignKey(MapLevel, on_delete=models.CASCADE, default=None) - - -class Chat(models.Model): - task_id = models.ForeignKey(Task, on_delete=models.CASCADE, default=None) - - -class Solution(models.Model): - task_id = models.ForeignKey(Task, on_delete=models.CASCADE, default=None) - user_id = models.ForeignKey(User, on_delete=models.CASCADE, default=None) - - -class Theory(models.Model): - task_id = models.ForeignKey(Task, on_delete=models.CASCADE, default=None) - text = models.TextField(default=None) - video = models.URLField(default=None) - - -class TaskType(models.Model): - task_id = models.ForeignKey(Task, on_delete=models.CASCADE, default=None) - name_type = models.TextField(default=None) - - -class ProgramTests(models.Model): - input = models.TextField(default=None) - output = models.TextField(default=None) - type_id = models.ForeignKey(TaskType, on_delete=models.CASCADE, default=None) +from django.db import models + + +class Map(models.Model): + image = 0 # mock field + + +class Block(models.Model): + map_id = models.ForeignKey(Map, on_delete=models.CASCADE, default=None) + image = 0 # mock field + + +class MapLevel(models.Model): + level_name = models.CharField(max_length=50, default=None) + block_id = models.ForeignKey(Block, on_delete=models.CASCADE, default=None) + + +class User(models.Model): + name = models.CharField(max_length=50, default=None) # User name + email = models.EmailField(max_length=50, default=None, unique=True) # Email + password = models.CharField(max_length=50, default=None) # Password + level = models.IntegerField(default=1) # User level + map_level_id = models.ForeignKey(MapLevel, on_delete=models.CASCADE, default=None, null=True) + photo = 0 # mock field + + def __str__(self): + return str(self.name) + str(self.email) + + +class Task(models.Model): + score = models.IntegerField(default=0) + type = models.CharField(max_length=50, default=None) + description = models.TextField(default=None) + map_level_id = models.ForeignKey(MapLevel, on_delete=models.CASCADE, default=None) + + +class Chat(models.Model): + task_id = models.ForeignKey(Task, on_delete=models.CASCADE, default=None) + + +class Solution(models.Model): + task_id = models.ForeignKey(Task, on_delete=models.CASCADE, default=None) + user_id = models.ForeignKey(User, on_delete=models.CASCADE, default=None) + + +class Theory(models.Model): + task_id = models.ForeignKey(Task, on_delete=models.CASCADE, default=None) + text = models.TextField(default=None) + video = models.URLField(default=None) + + +class TaskType(models.Model): + task_id = models.ForeignKey(Task, on_delete=models.CASCADE, default=None) + name_type = models.TextField(default=None) + + +class ProgramTests(models.Model): + input = models.TextField(default=None) + output = models.TextField(default=None) + type_id = models.ForeignKey(TaskType, on_delete=models.CASCADE, default=None) + + +# refactor that file diff --git a/users/serializers.py b/users/serializers.py new file mode 100644 index 0000000..209a86a --- /dev/null +++ b/users/serializers.py @@ -0,0 +1,24 @@ +from .models import User +from rest_framework import serializers + + +class UserSerializer(serializers.ModelSerializer): + class Meta: + model = User + fields = '__all__' + + +class RegistrationSerializer(serializers.ModelSerializer): + name = serializers.CharField() + email = serializers.CharField() + password = serializers.CharField() + + def create(self, validated_data): + user = User.objects.create(name=validated_data['name'], + email=validated_data['email'], + password=validated_data['password']) + return user + + class Meta: + model = User + fields = ('name', 'email', 'password') diff --git a/users/tests.py b/users/tests.py new file mode 100644 index 0000000..de8bdc0 --- /dev/null +++ b/users/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/users/views.py b/users/views.py new file mode 100644 index 0000000..2b80267 --- /dev/null +++ b/users/views.py @@ -0,0 +1,26 @@ +from .models import User +from .serializers import UserSerializer + +from rest_framework import status +from rest_framework import viewsets +from rest_framework.views import APIView +from rest_framework.response import Response + +from .serializers import RegistrationSerializer + + +class UserViewSet(viewsets.ModelViewSet): + serializer_class = UserSerializer + queryset = User.objects.all() + + +class RegistrationView(APIView): + def post(self, request): + serializer = RegistrationSerializer(data=request.data) + serializer.is_valid(raise_exception=True) + if serializer.is_valid(): + user = serializer.save() + if user: + json = serializer.data + return Response(json, status=status.HTTP_201_CREATED) + return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)