mirror of
https://github.com/evgen-app/evg-app-back.git
synced 2024-11-28 11:43:45 +03:00
first commit
This commit is contained in:
parent
e4987f7092
commit
49b4cdee6c
|
@ -1 +0,0 @@
|
|||
Subproject commit 4be809b3dbdfa14caf3adc6a5b5024a163ee3b8b
|
BIN
evgenApp/__pycache__/__init__.cpython-39.pyc
Normal file
BIN
evgenApp/__pycache__/__init__.cpython-39.pyc
Normal file
Binary file not shown.
BIN
evgenApp/__pycache__/schema.cpython-39.pyc
Normal file
BIN
evgenApp/__pycache__/schema.cpython-39.pyc
Normal file
Binary file not shown.
BIN
evgenApp/__pycache__/settings.cpython-39.pyc
Normal file
BIN
evgenApp/__pycache__/settings.cpython-39.pyc
Normal file
Binary file not shown.
BIN
evgenApp/__pycache__/urls.cpython-39.pyc
Normal file
BIN
evgenApp/__pycache__/urls.cpython-39.pyc
Normal file
Binary file not shown.
BIN
evgenApp/__pycache__/wsgi.cpython-39.pyc
Normal file
BIN
evgenApp/__pycache__/wsgi.cpython-39.pyc
Normal file
Binary file not shown.
|
@ -1,15 +1,11 @@
|
|||
import graphene
|
||||
import users.schema
|
||||
import organisations.schema
|
||||
import lessons.schema
|
||||
import hyperlinks.schema
|
||||
|
||||
class Query(users.schema.Query, organisations.schema.Query,
|
||||
lessons.schema.Query, hyperlinks.schema.Query, graphene.ObjectType):
|
||||
import users.schema
|
||||
|
||||
class Query(users.schema.Query, graphene.ObjectType):
|
||||
pass
|
||||
|
||||
class Mutation(users.schema.Mutation, organisations.schema.Mutation,
|
||||
lessons.schema.Mutation, hyperlinks.schema.Mutation, graphene.ObjectType):
|
||||
class Mutation(users.schema.Mutation, graphene.ObjectType):
|
||||
pass
|
||||
|
||||
|
||||
|
|
|
@ -40,10 +40,7 @@ INSTALLED_APPS = [
|
|||
'django.contrib.messages',
|
||||
'django.contrib.staticfiles',
|
||||
'django_filters',
|
||||
'users',
|
||||
'organisations',
|
||||
'lessons',
|
||||
'hyperlinks'
|
||||
"users"
|
||||
]
|
||||
GRAPHENE = {
|
||||
'SCHEMA': 'evgenApp.schema.schema',
|
||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -1,3 +0,0 @@
|
|||
from django.contrib import admin
|
||||
|
||||
# Register your models here.
|
|
@ -1,5 +0,0 @@
|
|||
from django.apps import AppConfig
|
||||
|
||||
|
||||
class HyperlinksConfig(AppConfig):
|
||||
name = 'hyperlinks'
|
|
@ -1,26 +0,0 @@
|
|||
# Generated by Django 3.1.5 on 2021-01-20 17:35
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
import uuid
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
initial = True
|
||||
|
||||
dependencies = [
|
||||
('organisations', '0005_auto_20210120_1944'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='HyperLink',
|
||||
fields=[
|
||||
('link', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)),
|
||||
('child', models.OneToOneField(blank=True, on_delete=django.db.models.deletion.CASCADE, to='organisations.child')),
|
||||
('organ', models.OneToOneField(blank=True, on_delete=django.db.models.deletion.CASCADE, to='organisations.organisator')),
|
||||
('teacher', models.OneToOneField(blank=True, on_delete=django.db.models.deletion.CASCADE, to='organisations.teacher')),
|
||||
],
|
||||
),
|
||||
]
|
|
@ -1,30 +0,0 @@
|
|||
# Generated by Django 3.1.5 on 2021-01-20 18:19
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('organisations', '0005_auto_20210120_1944'),
|
||||
('hyperlinks', '0001_initial'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='hyperlink',
|
||||
name='child',
|
||||
field=models.OneToOneField(null=True, on_delete=django.db.models.deletion.CASCADE, to='organisations.child'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='hyperlink',
|
||||
name='organ',
|
||||
field=models.OneToOneField(null=True, on_delete=django.db.models.deletion.CASCADE, to='organisations.organisator'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='hyperlink',
|
||||
name='teacher',
|
||||
field=models.OneToOneField(null=True, on_delete=django.db.models.deletion.CASCADE, to='organisations.teacher'),
|
||||
),
|
||||
]
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -1,18 +0,0 @@
|
|||
from django.db import models
|
||||
|
||||
from organisations.models import Organisator, Child, Teacher
|
||||
|
||||
import uuid
|
||||
|
||||
from django.dispatch import receiver
|
||||
from django.db.models.signals import post_save
|
||||
|
||||
class HyperLink(models.Model):
|
||||
link = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False, unique=False)
|
||||
teacher = models.OneToOneField(Teacher, null=True, on_delete=models.CASCADE, unique=False)
|
||||
child = models.OneToOneField(Child, null=True, on_delete=models.CASCADE, unique=False)
|
||||
organ = models.OneToOneField(Organisator, null=True, on_delete=models.CASCADE, unique=False)
|
||||
|
||||
#@receiver(signal=post_save, sender=Organisator)
|
||||
#def org_recieve(sender, instance, **kwargs):
|
||||
# HyperLink.objects.create(organ=instance)
|
|
@ -1,51 +0,0 @@
|
|||
import graphene
|
||||
import graphene_django
|
||||
from organisations.gqlTypes import TeacherType
|
||||
from .models import HyperLink
|
||||
|
||||
from graphene import relay
|
||||
from django.contrib.auth.models import User
|
||||
|
||||
class HyperLinkType(graphene_django.DjangoObjectType):
|
||||
class Meta:
|
||||
model = HyperLink
|
||||
|
||||
|
||||
|
||||
class getProfile(graphene.Mutation):
|
||||
class Arguments:
|
||||
profile_token = graphene.ID()
|
||||
user_id = graphene.ID()
|
||||
|
||||
id = graphene.ID()
|
||||
user_type = graphene.String()
|
||||
|
||||
def mutate(self, info, profile_token, user_id):
|
||||
user_type = ""
|
||||
user = User.objects.get(id=user_id)
|
||||
print(HyperLink.objects.all())
|
||||
hl = HyperLink.objects.get(link=profile_token)
|
||||
print(hl, "hl")
|
||||
model = hl.teacher or hl.child or hl.organ
|
||||
if hl.teacher: user_type = "teacher"
|
||||
if hl.child: user_type = "child"
|
||||
if hl.organ: user_type = "organ"
|
||||
print(model, "profile")
|
||||
model.delete()
|
||||
model.profile = user.profile
|
||||
model.save()
|
||||
return getProfile(id=model.id, user_type = user_type)
|
||||
|
||||
|
||||
class Mutation(graphene.ObjectType):
|
||||
get_profile = getProfile.Field()
|
||||
|
||||
class Query(graphene.ObjectType):
|
||||
hyper_links = graphene.Field(graphene.List(HyperLinkType))
|
||||
|
||||
def resolve_hyper_links(self, info):
|
||||
return HyperLink.objects.all()
|
||||
|
||||
|
||||
|
||||
schema = graphene.Schema(query=Query, mutation=Mutation)
|
|
@ -1,3 +0,0 @@
|
|||
from django.test import TestCase
|
||||
|
||||
# Create your tests here.
|
|
@ -1,3 +0,0 @@
|
|||
from django.shortcuts import render
|
||||
|
||||
# Create your views here.
|
|
@ -1,37 +0,0 @@
|
|||
from .models import Lesson
|
||||
import graphene
|
||||
import graphene_django
|
||||
from graphene import relay
|
||||
from .gqlTypes import TestsType
|
||||
|
||||
|
||||
class LessonType(graphene_django.DjangoObjectType):
|
||||
class Meta:
|
||||
model=Lesson
|
||||
interfaces = (relay.Node,)
|
||||
filter_fields = {
|
||||
"name": ["exact", "contains"],
|
||||
"descr": ["exact", "contains"]
|
||||
}
|
||||
pk = graphene.Int()
|
||||
tests = graphene.List(TestsType)
|
||||
testsLen = graphene.Int()
|
||||
materialsLen = graphene.Int()
|
||||
materials = graphene.List(Material)
|
||||
|
||||
def resolve_tests(self, info):
|
||||
return self.tests_set.all()
|
||||
|
||||
def resolve_pk(self, info):
|
||||
return self.pk
|
||||
|
||||
def resolve_testsLen(self, info):
|
||||
return len(self.tests_set.all())
|
||||
|
||||
|
||||
def resolve_materialsLen(self, info):
|
||||
return len(self.materials_set.all())
|
||||
|
||||
|
||||
def resolve_materials(self, info):
|
||||
return self.materials_set.all()
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -1,3 +0,0 @@
|
|||
from django.contrib import admin
|
||||
|
||||
# Register your models here.
|
|
@ -1,5 +0,0 @@
|
|||
from django.apps import AppConfig
|
||||
|
||||
|
||||
class LessonsConfig(AppConfig):
|
||||
name = 'lessons'
|
|
@ -1,27 +0,0 @@
|
|||
from .models import Subject, SubjectClassLocal
|
||||
from organisations.models import Organisation
|
||||
|
||||
|
||||
def extendOrganisationSubject(org, sub_name):
|
||||
Subject.objects.create(name=sub_name, organisation=org)
|
||||
|
||||
|
||||
def addSubjectToGroup(group, subName, subject):
|
||||
SubjectClassLocal.objects.create(name=subName, subject=subject, group=group)
|
||||
|
||||
|
||||
def addClassToTeacher(classLocal, teacher):
|
||||
classLocal.teachers.add(teacher)
|
||||
|
||||
|
||||
def removeTeacherFromClass(classLocal, teacher):
|
||||
classLocal.teachers.remove(teacher)
|
||||
|
||||
def addLessonToClass(classLocal):
|
||||
Lesson.objects.create(type_lesson=classLocal)
|
||||
|
||||
def addTestToLesson(lesson, deadline, name):
|
||||
Tests.objects.create(name=name, deadline=deadline, lesson=lesson)
|
||||
|
||||
def addTaskToTest(test, theory, practise, mark):
|
||||
Task.objects.create(theory=theory, practise=practise, test=test, number=mark)
|
|
@ -1,171 +0,0 @@
|
|||
import graphene
|
||||
import graphene_django
|
||||
|
||||
from .models import Subject, Lesson, SubjectClassLocal, Tests, Task, AnswerSheet, Answer, Materials, TaskType as taskType
|
||||
from organisations.gqlTypes import ChildType, TeacherType
|
||||
|
||||
from organisations.models import Organisation, Group, Child, Teacher
|
||||
|
||||
from graphene import relay
|
||||
from graphene_django.filter import DjangoFilterConnectionField
|
||||
from users.models import Profile
|
||||
|
||||
from django.db.models import Model
|
||||
|
||||
|
||||
class Material(graphene_django.DjangoObjectType):
|
||||
class Meta:
|
||||
model = Materials
|
||||
interfaces = (relay.Node,)
|
||||
filter_fields = {
|
||||
"name": ("exact",)
|
||||
}
|
||||
|
||||
|
||||
class AnswerType(graphene_django.DjangoObjectType):
|
||||
class Meta:
|
||||
model = Answer
|
||||
interfaces = (relay.Node,)
|
||||
filter_fields = {
|
||||
"sheet" : ("exact",),
|
||||
"number" : ("exact",)
|
||||
}
|
||||
pk = graphene.Int()
|
||||
|
||||
def resolve_pk(self, info): return self.pk
|
||||
|
||||
class AnswerSheetType(graphene_django.DjangoObjectType):
|
||||
class Meta:
|
||||
model = AnswerSheet
|
||||
interfaces = (relay.Node,)
|
||||
filter_fields = {
|
||||
"test" : ("exact",),
|
||||
"child": ("exact",)
|
||||
}
|
||||
|
||||
|
||||
|
||||
class TaskType(graphene_django.DjangoObjectType):
|
||||
class Meta:
|
||||
model = Task
|
||||
interfaces = (relay.Node,)
|
||||
filter_fields = {
|
||||
"test": ("exact",),
|
||||
"types": ("contains",),
|
||||
"number":("exact",)
|
||||
}
|
||||
pk = graphene.Int()
|
||||
|
||||
def resolve_pk(self, info):
|
||||
return self.pk
|
||||
|
||||
|
||||
class TestsType(graphene_django.DjangoObjectType):
|
||||
class Meta:
|
||||
model = Tests
|
||||
interfaces = (relay.Node,)
|
||||
filter_fields = {
|
||||
"name": ("exact", "contains"),
|
||||
"lesson": ("exact",)
|
||||
}
|
||||
pk = graphene.Int()
|
||||
taskLen = graphene.Int()
|
||||
|
||||
answerLen = graphene.Int()
|
||||
|
||||
def resolve_answerLen(self, info):
|
||||
return len(self.answersheet_set.all())
|
||||
|
||||
def resolve_pk(self, info):
|
||||
return self.id
|
||||
|
||||
|
||||
def resolve_taskLen(self, info):
|
||||
return len(self.task_set.all())
|
||||
|
||||
|
||||
|
||||
class SubjectType(graphene_django.DjangoObjectType):
|
||||
class Meta:
|
||||
model=Subject
|
||||
interfaces = (relay.Node,)
|
||||
|
||||
filter_fields = {
|
||||
"name" : ("exact", "contains",),
|
||||
"organisation" : ("exact",),
|
||||
"teachers_give" : ("contains",)
|
||||
}
|
||||
pk = graphene.Int()
|
||||
|
||||
def resolve_pk(self, info): return self.pk
|
||||
|
||||
|
||||
class LessonType(graphene_django.DjangoObjectType):
|
||||
class Meta:
|
||||
model=Lesson
|
||||
interfaces = (relay.Node,)
|
||||
filter_fields = {
|
||||
"name": ["exact", "contains"],
|
||||
"descr": ["exact", "contains"]
|
||||
}
|
||||
pk = graphene.Int()
|
||||
tests = graphene.List(TestsType)
|
||||
testsLen = graphene.Int()
|
||||
materialsLen = graphene.Int()
|
||||
materials = graphene.List(Material)
|
||||
|
||||
def resolve_tests(self, info):
|
||||
return self.tests_set.all()
|
||||
|
||||
def resolve_pk(self, info):
|
||||
return self.pk
|
||||
|
||||
def resolve_testsLen(self, info):
|
||||
return len(self.tests_set.all())
|
||||
|
||||
|
||||
def resolve_materialsLen(self, info):
|
||||
return len(self.materials_set.all())
|
||||
|
||||
|
||||
def resolve_materials(self, info):
|
||||
return self.materials_set.all()
|
||||
|
||||
|
||||
class LocalSubjectType(graphene_django.DjangoObjectType):
|
||||
class Meta:
|
||||
model=SubjectClassLocal
|
||||
interfaces = (relay.Node,)
|
||||
filter_fields = {
|
||||
"name": ("exact", "contains"),
|
||||
"id": ("exact",),
|
||||
"group": ("exact",)
|
||||
}
|
||||
pk = graphene.Int()
|
||||
teachers_set = graphene.List(TeacherType)
|
||||
lessonsLen = graphene.Int()
|
||||
|
||||
def resolve_pk(self, info):
|
||||
return self.pk
|
||||
|
||||
|
||||
def resolve_teachers_set(self, info):
|
||||
return self.teachers.all()
|
||||
|
||||
|
||||
def resolve_lessonsLen(self, info):
|
||||
return len(self.lesson_set.all())
|
||||
|
||||
|
||||
class TaskTypeType(graphene_django.DjangoObjectType):
|
||||
class Meta:
|
||||
model = taskType
|
||||
interfaces = (relay.Node,)
|
||||
filter_fields = {}
|
||||
|
||||
|
||||
class AnswerSheetType(graphene_django.DjangoObjectType):
|
||||
class Meta:
|
||||
model = AnswerSheet
|
||||
interfaces = (relay.Node,)
|
||||
filter_fields = {}
|
|
@ -1,125 +0,0 @@
|
|||
# Generated by Django 3.1.5 on 2021-02-05 08:53
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
initial = True
|
||||
|
||||
dependencies = [
|
||||
('organisations', '0005_auto_20210120_1944'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='Lesson',
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('name', models.TextField(default='')),
|
||||
('descr', models.TextField(default='')),
|
||||
('content', models.TextField(default='')),
|
||||
('time_lesson', models.DateTimeField(auto_now=True)),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Subject',
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('name', models.CharField(max_length=100)),
|
||||
('organisation', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='organisations.organisation')),
|
||||
('teachers_give', models.ManyToManyField(to='organisations.Teacher')),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Task',
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('theory', models.TextField()),
|
||||
('practise', models.TextField()),
|
||||
('number', models.IntegerField()),
|
||||
('max_score', models.IntegerField(default=0)),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Type',
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('name', models.TextField(max_length=150)),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Theme',
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('name', models.CharField(max_length=150)),
|
||||
('tasks', models.ManyToManyField(to='lessons.Task')),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Tests',
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('name', models.CharField(max_length=150)),
|
||||
('deadline', models.DateTimeField()),
|
||||
('lesson', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='lessons.lesson')),
|
||||
],
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='task',
|
||||
name='test',
|
||||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='lessons.tests'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='task',
|
||||
name='types',
|
||||
field=models.ManyToManyField(to='lessons.Type'),
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='SubjectClassLocal',
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('name', models.CharField(max_length=100)),
|
||||
('group', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='organisations.group')),
|
||||
('subject', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='lessons.subject')),
|
||||
('teachers', models.ManyToManyField(to='organisations.Teacher')),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Materials',
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('link', models.URLField()),
|
||||
('name', models.CharField(blank=True, max_length=100)),
|
||||
('data', models.TextField(blank=True)),
|
||||
('Type', models.CharField(default='link', max_length=100)),
|
||||
('lesson', models.ForeignKey(default=3, on_delete=django.db.models.deletion.CASCADE, to='lessons.lesson')),
|
||||
],
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='lesson',
|
||||
name='type_lesson',
|
||||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='lessons.subjectclasslocal'),
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='AnswerSheet',
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('completed', models.BooleanField(default=False)),
|
||||
('child', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='organisations.child')),
|
||||
('test', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='lessons.tests')),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Answer',
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('content', models.TextField()),
|
||||
('number', models.IntegerField()),
|
||||
('completed', models.BooleanField(default=False)),
|
||||
('score', models.IntegerField(default=0)),
|
||||
('sheet', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='lessons.answersheet')),
|
||||
],
|
||||
),
|
||||
]
|
|
@ -1,38 +0,0 @@
|
|||
# Generated by Django 3.1.5 on 2021-02-05 10:26
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('lessons', '0001_initial'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='task',
|
||||
name='Type',
|
||||
field=models.CharField(default='line', max_length=150),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='task',
|
||||
name='autoCheckData',
|
||||
field=models.TextField(blank=True),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='task',
|
||||
name='is_autoCheck',
|
||||
field=models.BooleanField(default=False),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='task',
|
||||
name='is_timing',
|
||||
field=models.BooleanField(default=False),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='task',
|
||||
name='time',
|
||||
field=models.IntegerField(default=30),
|
||||
),
|
||||
]
|
|
@ -1,26 +0,0 @@
|
|||
# Generated by Django 3.1.5 on 2021-02-05 12:41
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('lessons', '0002_auto_20210205_1326'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='TaskType',
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('name', models.TextField()),
|
||||
],
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='task',
|
||||
name='Type',
|
||||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='lessons.tasktype'),
|
||||
),
|
||||
]
|
|
@ -1,18 +0,0 @@
|
|||
# Generated by Django 3.1.5 on 2021-02-05 12:43
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('lessons', '0003_auto_20210205_1541'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='task',
|
||||
name='Type',
|
||||
field=models.CharField(default='line', max_length=150),
|
||||
),
|
||||
]
|
|
@ -1,19 +0,0 @@
|
|||
# Generated by Django 3.1.5 on 2021-02-05 12:44
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('lessons', '0004_auto_20210205_1543'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='task',
|
||||
name='Type',
|
||||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='lessons.tasktype'),
|
||||
),
|
||||
]
|
|
@ -1,19 +0,0 @@
|
|||
# Generated by Django 3.1.5 on 2021-02-05 15:48
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('lessons', '0005_auto_20210205_1544'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='task',
|
||||
name='test',
|
||||
field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='lessons.tests'),
|
||||
),
|
||||
]
|
|
@ -1,19 +0,0 @@
|
|||
# Generated by Django 3.1.5 on 2021-02-05 15:57
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('lessons', '0006_auto_20210205_1848'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='task',
|
||||
name='test',
|
||||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='lessons.tests'),
|
||||
),
|
||||
]
|
|
@ -1,22 +0,0 @@
|
|||
# Generated by Django 3.1.5 on 2021-02-05 15:58
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('lessons', '0007_auto_20210205_1857'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RemoveField(
|
||||
model_name='task',
|
||||
name='test',
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='task',
|
||||
name='test',
|
||||
field=models.ManyToManyField(to='lessons.Tests'),
|
||||
),
|
||||
]
|
|
@ -1,23 +0,0 @@
|
|||
# Generated by Django 3.1.5 on 2021-02-10 18:16
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('lessons', '0008_auto_20210205_1858'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='tests',
|
||||
name='is_timing',
|
||||
field=models.BooleanField(default=False),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='tests',
|
||||
name='time_sec',
|
||||
field=models.IntegerField(default=300),
|
||||
),
|
||||
]
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -1,89 +0,0 @@
|
|||
from django.db import models
|
||||
from organisations.models import Organisation, Teacher, Group, Child
|
||||
|
||||
from django.dispatch import receiver
|
||||
from django.db.models.signals import post_save
|
||||
|
||||
|
||||
class Subject(models.Model):
|
||||
name = models.CharField(max_length=100)
|
||||
organisation = models.ForeignKey(Organisation, on_delete=models.CASCADE)
|
||||
teachers_give = models.ManyToManyField(Teacher)
|
||||
|
||||
class SubjectClassLocal(models.Model):
|
||||
subject = models.ForeignKey(Subject, on_delete=models.CASCADE)
|
||||
teachers = models.ManyToManyField(Teacher)
|
||||
group = models.ForeignKey(Group, on_delete=models.CASCADE)
|
||||
name = models.CharField(max_length=100, unique=False)
|
||||
|
||||
def __str__(self):
|
||||
return self.name
|
||||
|
||||
|
||||
class Lesson(models.Model):
|
||||
type_lesson = models.ForeignKey(SubjectClassLocal, on_delete=models.CASCADE)
|
||||
name = models.TextField(default="")
|
||||
descr = models.TextField(default="")
|
||||
content = models.TextField(default="")
|
||||
time_lesson = models.DateTimeField(auto_now=True)
|
||||
|
||||
|
||||
class Materials(models.Model):
|
||||
link = models.URLField()
|
||||
name = models.CharField(max_length=100, blank=True)
|
||||
data = models.TextField(blank=True)
|
||||
Type = models.CharField(max_length=100, default="link")
|
||||
lesson = models.ForeignKey(Lesson, on_delete=models.CASCADE, default=3)
|
||||
|
||||
|
||||
class Tests(models.Model):
|
||||
name = models.CharField(max_length=150)
|
||||
deadline = models.DateTimeField()
|
||||
lesson = models.ForeignKey(Lesson, on_delete=models.CASCADE)
|
||||
is_timing = models.BooleanField(default=False)
|
||||
time_sec = models.IntegerField(default=300)
|
||||
|
||||
class Type(models.Model):
|
||||
name = models.TextField(max_length=150)
|
||||
|
||||
|
||||
class TaskType(models.Model):
|
||||
name = models.TextField()
|
||||
|
||||
|
||||
def __str__(self) :
|
||||
return self.name
|
||||
|
||||
class Task(models.Model):
|
||||
theory = models.TextField()
|
||||
practise = models.TextField()
|
||||
test = models.ManyToManyField(Tests)
|
||||
types = models.ManyToManyField(Type)
|
||||
number = models.IntegerField()
|
||||
max_score = models.IntegerField(default=0)
|
||||
is_timing = models.BooleanField(default=False)
|
||||
time = models.IntegerField(default=30)
|
||||
Type = models.ForeignKey(TaskType, on_delete=models.CASCADE)
|
||||
is_autoCheck = models.BooleanField(default=False)
|
||||
autoCheckData = models.TextField(blank=True)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
class Theme(models.Model):
|
||||
tasks = models.ManyToManyField(Task)
|
||||
name = models.CharField(max_length=150)
|
||||
|
||||
class AnswerSheet(models.Model):
|
||||
child = models.ForeignKey(Child, on_delete=models.CASCADE)
|
||||
completed = models.BooleanField(default=False)
|
||||
test = models.ForeignKey(Tests, on_delete=models.CASCADE)
|
||||
|
||||
class Answer(models.Model):
|
||||
sheet = models.ForeignKey(AnswerSheet, on_delete=models.CASCADE)
|
||||
content = models.TextField()
|
||||
number = models.IntegerField()
|
||||
completed = models.BooleanField(default=False)
|
||||
score = models.IntegerField(default=0)
|
|
@ -1,529 +0,0 @@
|
|||
import graphene
|
||||
import graphene_django
|
||||
|
||||
from .models import Subject, Lesson, SubjectClassLocal, Tests, Task, AnswerSheet, Answer
|
||||
from organisations.gqlTypes import ChildType, TeacherType
|
||||
|
||||
from organisations.models import Organisation, Group, Child, Teacher
|
||||
|
||||
from graphene import relay
|
||||
from graphene_django.filter import DjangoFilterConnectionField
|
||||
from users.models import Profile
|
||||
|
||||
from django.db.models import Model
|
||||
|
||||
from .gqlTypes import *
|
||||
|
||||
|
||||
from graphql_relay.node.node import from_global_id
|
||||
|
||||
class CreateAnwerSheet(graphene.Mutation):
|
||||
class Arguments:
|
||||
child = graphene.ID()
|
||||
test = graphene.ID()
|
||||
|
||||
answer = graphene.Field(AnswerSheetType)
|
||||
|
||||
def mutate(self, info, child, test):
|
||||
answerSheet = AnswerSheet.objects.create(
|
||||
test=Tests.objects.get(id=from_global_id(test)[1]),
|
||||
child=Child.objects.get(id=from_global_id(child)[1]),
|
||||
completed=False
|
||||
)
|
||||
return CreateAnwerSheet(answer=answerSheet)
|
||||
|
||||
|
||||
class CreateAnswer(graphene.Mutation):
|
||||
class Arguments:
|
||||
sheet = graphene.ID()
|
||||
data = graphene.String()
|
||||
number = graphene.Int()
|
||||
|
||||
answer = graphene.Field(AnswerType)
|
||||
|
||||
def mutate(self, info, sheet, data, number):
|
||||
print(number,sheet, "number")
|
||||
sheet = AnswerSheet.objects.get(id=from_global_id(sheet)[1])
|
||||
candidate = Answer.objects.filter(sheet__id=sheet.id, number=number)
|
||||
print(candidate)
|
||||
if len(candidate):
|
||||
candidate.all().delete()
|
||||
answer = Answer.objects.create(
|
||||
sheet = sheet,
|
||||
content = data,
|
||||
number = number,
|
||||
)
|
||||
return CreateAnswer(answer=answer)
|
||||
|
||||
|
||||
class CreateLesson(graphene.Mutation):
|
||||
class Arguments:
|
||||
name = graphene.String()
|
||||
descr = graphene.String()
|
||||
subject = graphene.ID()
|
||||
|
||||
ok = graphene.Boolean()
|
||||
lesson = graphene.Field(LessonType)
|
||||
|
||||
def mutate(self, info, name, descr, subject):
|
||||
print(from_global_id(subject), subject)
|
||||
lesson = Lesson.objects.create(name=name, descr=descr, type_lesson=
|
||||
SubjectClassLocal.objects.get(id=from_global_id(subject)[1]))
|
||||
return CreateLesson(ok=True, lesson=lesson)
|
||||
|
||||
class UpdateLessonRegistration(graphene.Mutation):
|
||||
class Arguments:
|
||||
id = graphene.ID()
|
||||
descr = graphene.String()
|
||||
name = graphene.String()
|
||||
ok = graphene.Boolean()
|
||||
|
||||
def mutate(self, info, id, descr=None, name=None):
|
||||
lesson = Lesson.objects.get(id=from_global_id(id)[1]) or None
|
||||
if lesson == None: return UpdateLessonRegistration(ok=False)
|
||||
descr_upd = lesson.descr
|
||||
name_upd = lesson.name
|
||||
if descr != None: descr_upd = descr
|
||||
if name != None: name_upd = name
|
||||
lesson.descr = descr_upd
|
||||
lesson.name = name_upd
|
||||
lesson.save()
|
||||
return UpdateLessonRegistration(ok=True)
|
||||
|
||||
|
||||
class DeleteLesson(graphene.Mutation):
|
||||
class Arguments:
|
||||
id = graphene.ID()
|
||||
ok = graphene.Boolean()
|
||||
|
||||
def mutate(self, info, id):
|
||||
lesson = Lesson.objects.get(id=from_global_id(id)[1])
|
||||
if lesson == None: return DeleteLesson(ok=False)
|
||||
lesson.delete()
|
||||
return DeleteLesson(ok=True)
|
||||
|
||||
import datetime #fix
|
||||
class CreateTest(graphene.Mutation):
|
||||
class Arguments:
|
||||
lesson_id = graphene.ID()
|
||||
name = graphene.String()
|
||||
deadline = graphene.Date()
|
||||
|
||||
test = graphene.Field(TestsType)
|
||||
|
||||
def mutate(self, info, lesson_id, name, deadline=None):
|
||||
lesson = Lesson.objects.get(id=from_global_id(lesson_id)[1])
|
||||
t = Tests.objects.create(name=name, lesson=lesson, deadline=datetime.datetime.now())
|
||||
return CreateTest(test=t)
|
||||
|
||||
class updateTestRegistration(graphene.Mutation):
|
||||
class Arguments:
|
||||
test_id = graphene.ID()
|
||||
name = graphene.String()
|
||||
deadline = graphene.Date()
|
||||
test = graphene.Field(TestsType)
|
||||
|
||||
def mutate(self, info, test_id, name=None, deadline=None):
|
||||
test = Tests.objects.get(id=from_global_id(test_id)[1])
|
||||
name_changed = test.name
|
||||
deadline_changed = test.deadline
|
||||
if name != None: name_changed = name
|
||||
if deadline != None : deadline_changed = deadline
|
||||
test.name = name_changed
|
||||
test.deadline = deadline_changed
|
||||
test.save()
|
||||
return updateTestRegistration(test)
|
||||
from collections.abc import Mapping
|
||||
|
||||
class deleteTest(graphene.Mutation):
|
||||
class Arguments:
|
||||
test_id = graphene.ID()
|
||||
ok = graphene.Boolean()
|
||||
|
||||
def mutate(self, info, test_id):
|
||||
test = Tests.objects.get(id=from_global_id(test_id)[1])
|
||||
test.delete()
|
||||
return deleteTest(ok=True)
|
||||
|
||||
|
||||
def createModel(model, fields):
|
||||
return model.objects.create(**fields)
|
||||
|
||||
def updateModel(model:Model, instance:Model, fields:Mapping):
|
||||
print(fields)
|
||||
updated_fields = {}
|
||||
for key, value in fields.items():
|
||||
updated_fields.update({key: value[0] or value[1]})
|
||||
print(updated_fields)
|
||||
for key, value in updated_fields.items():
|
||||
setattr(instance, key, value)
|
||||
instance.save()
|
||||
return instance
|
||||
|
||||
def deleteModel(model:Model):
|
||||
model.delete()
|
||||
|
||||
|
||||
class createTask(graphene.Mutation):
|
||||
class Arguments:
|
||||
test_id = graphene.ID()
|
||||
theory = graphene.String()
|
||||
practise = graphene.String()
|
||||
number = graphene.Int()
|
||||
max_score = graphene.Int()
|
||||
Type = graphene.String()
|
||||
|
||||
task = graphene.Field(TaskType)
|
||||
|
||||
def mutate(self, info, test_id, theory, practise, number, max_score, Type):
|
||||
task = Tests.objects.get(id=from_global_id(test_id)[1])
|
||||
print(from_global_id(Type))
|
||||
m = createModel(model=Task, fields = {
|
||||
"theory": theory,
|
||||
"practise": practise,
|
||||
"number": number,
|
||||
"max_score": max_score,
|
||||
"Type" : taskType(id=from_global_id(Type)[1])
|
||||
})
|
||||
print(m)
|
||||
m.test.set([task])
|
||||
m.save()
|
||||
return createTask(task=m)
|
||||
|
||||
class updateTask(graphene.Mutation):
|
||||
class Arguments:
|
||||
task_id = graphene.ID()
|
||||
theory = graphene.String()
|
||||
practise = graphene.String()
|
||||
number = graphene.Int()
|
||||
max_score = graphene.Int()
|
||||
Type = graphene.ID()
|
||||
autoCheck = graphene.Boolean()
|
||||
autoCheckData = graphene.String()
|
||||
is_time = graphene.Boolean()
|
||||
time = graphene.Int()
|
||||
task = graphene.Field(TaskType)
|
||||
|
||||
def mutate(self, info, task_id, theory=None, practise=None, number=None, max_score=None,
|
||||
Type=None, autoCheck=None, autoCheckData=None, is_time=None, time=None):
|
||||
task = Task.objects.get(id=from_global_id(task_id)[1])
|
||||
m = updateModel(Task, task, {
|
||||
"theory": [theory, task.theory],
|
||||
"practise": [practise, task.practise],
|
||||
"max_score": [max_score, task.max_score],
|
||||
"Type": [taskType(from_global_id(Type)[1]), task.Type],
|
||||
"is_autoCheck": [autoCheck, task.is_autoCheck],
|
||||
"autoCheckData": [autoCheckData, task.autoCheckData],
|
||||
"is_timing": [is_time, task.is_timing],
|
||||
"time" : [time, task.time],
|
||||
})
|
||||
return updateTask(task=m)
|
||||
|
||||
class ScoringTasks(graphene.Mutation):
|
||||
class Arguments:
|
||||
answerSheetId = graphene.ID()
|
||||
score = graphene.Int()
|
||||
number = graphene.Int()
|
||||
|
||||
answer = graphene.Field(AnswerType)
|
||||
|
||||
|
||||
def mutate(self, info, answerSheetId, score=0, number=0):
|
||||
answer = AnswerSheet.objects.get(id=from_global_id(answerSheetId)[1]).answer_set.all().filter(number=number)[0]
|
||||
answer.score = score
|
||||
answer.completed = True
|
||||
answer.save()
|
||||
return ScoringTasks(answer=answer)
|
||||
|
||||
|
||||
class deleteTask(graphene.Mutation):
|
||||
class Arguments:
|
||||
task_id = graphene.ID()
|
||||
|
||||
ok = graphene.Boolean()
|
||||
def mutate(self, info, task_id):
|
||||
deleteModel(Task.objects.get(id=task_id))
|
||||
return deleteTask(ok=True)
|
||||
|
||||
class addChildToGroup(graphene.Mutation):
|
||||
class Arguments:
|
||||
group_id = graphene.ID()
|
||||
child_id = graphene.ID()
|
||||
|
||||
child = graphene.Field(ChildType)
|
||||
|
||||
def mutate(self, info, group_id, child_id):
|
||||
group = Group.objects.get(id=group_id)
|
||||
child = Child.objects.get(id=child_id)
|
||||
child.groups.add(group)
|
||||
child.save()
|
||||
return addChildToGroup(child=child)
|
||||
|
||||
class addChildToOrg(graphene.Mutation):
|
||||
class Arguments:
|
||||
org_id = graphene.ID()
|
||||
child_id = graphene.ID()
|
||||
name = graphene.String()
|
||||
surname = graphene.String()
|
||||
midname = graphene.String()
|
||||
|
||||
child = graphene.Field(ChildType)
|
||||
|
||||
def mutate(self, info, org_id, child_id, name, surname, midname):
|
||||
user = Profile.objects.get(id=child_id)
|
||||
org = Organisation.objects.get(id=org_id)
|
||||
|
||||
child = Child.objects.create(profile=user, org=org, name=name or "",
|
||||
surname = surname or "", midname = midname or "")
|
||||
return addChildToOrg(child=child)
|
||||
|
||||
class CreateSubjectClass(graphene.Mutation):
|
||||
class Arguments:
|
||||
group_id = graphene.ID()
|
||||
subject_id = graphene.ID()
|
||||
name = graphene.String()
|
||||
|
||||
subject_class = graphene.Field(LocalSubjectType)
|
||||
|
||||
def mutate(self, info, group_id, subject_id, name):
|
||||
group = Group.objects.get(id=group_id)
|
||||
subject = Subject.objects.get(id=subject_id)
|
||||
local_subject = SubjectClassLocal.objects.create(name=name,
|
||||
group=group, subject=subject)
|
||||
return CreateSubjectClass(subject_class=local_subject)
|
||||
|
||||
|
||||
class CreateSubject(graphene.Mutation):
|
||||
class Arguments:
|
||||
org_id = graphene.ID()
|
||||
name = graphene.String()
|
||||
|
||||
subject = graphene.Field(SubjectType)
|
||||
|
||||
def mutate(self, info, org_id, name):
|
||||
org = Organisation.objects.get(id=org_id)
|
||||
subject = Subject.objects.create(name=name, organisation=org)
|
||||
return CreateSubject(subject)
|
||||
|
||||
class UpdateSubjectReg(graphene.Mutation):
|
||||
class Arguments:
|
||||
subject_id = graphene.ID()
|
||||
name = graphene.String()
|
||||
|
||||
subject = graphene.Field(SubjectType)
|
||||
|
||||
def mutate(self, info, subject_id, name):
|
||||
subject = Subject.objects.get(id=subject_id)
|
||||
subject.name = name or subject.name
|
||||
subject.save()
|
||||
return UpdateSubjectReg(subject=subject)
|
||||
|
||||
class DeleteSubject(graphene.Mutation):
|
||||
class Arguments:
|
||||
subject_id = graphene.ID()
|
||||
|
||||
ok = graphene.Boolean()
|
||||
|
||||
def mutate(self, info, subject_id):
|
||||
subject = Subject.objects.get(id=subject_id)
|
||||
subject.delete()
|
||||
return DeleteSubject(ok=True)
|
||||
|
||||
|
||||
class UpdateSubjectLocalReg(graphene.Mutation):
|
||||
class Arguments:
|
||||
subject_local_id = graphene.ID()
|
||||
name = graphene.String()
|
||||
|
||||
subject_local = graphene.Field(LocalSubjectType)
|
||||
|
||||
def mutate(self, info, subject_local_id, name):
|
||||
subject = SubjectClassLocal.objects.get(id=subject_local_id)
|
||||
subject.name = name or subject.name
|
||||
subject.save()
|
||||
return UpdateSubjectLocalReg(subject_local=subject)
|
||||
|
||||
|
||||
class DeleteSubjectLocal(graphene.Mutation):
|
||||
class Arguments:
|
||||
subject_local_id = graphene.ID()
|
||||
|
||||
ok = graphene.Boolean()
|
||||
|
||||
def mutate(self, info, subject_local_id):
|
||||
SubjectClassLocal.objects.get(id=subject_local_id).delete()
|
||||
return DeleteSubjectLocal(ok=True)
|
||||
|
||||
|
||||
class AddSubjectToTeacher(graphene.Mutation):
|
||||
class Arguments:
|
||||
subject_id = graphene.ID()
|
||||
teacher_id = graphene.ID()
|
||||
teacher = graphene.Field(TeacherType)
|
||||
|
||||
def mutate(self, info, subject_id, teacher_id):
|
||||
teacher = Teacher.objects.get(id=teacher_id)
|
||||
subject= Subject.objects.get(id=subject_id)
|
||||
|
||||
subject.teachers_give.add(teacher)
|
||||
subject.save()
|
||||
return AddSubjectToTeacher(teacher=teacher)
|
||||
|
||||
|
||||
class RemoveSubjectFromTeacher(graphene.Mutation):
|
||||
class Arguments:
|
||||
subject_id = graphene.ID()
|
||||
teacher_id = graphene.ID()
|
||||
teacher = graphene.Field(TeacherType)
|
||||
|
||||
def mutate(self, info, subject_id, teacher_id):
|
||||
subject = Subject.objects.get(id=subject_id)
|
||||
subject.teachers_give.all().filter(id=teacher_id)[0].delete()
|
||||
return RemoveSubjectFromTeacher(teacher=Teacher.objects.get(id=teacher_id))
|
||||
|
||||
|
||||
class AnswerQuestion(graphene.Mutation):
|
||||
class Arguments:
|
||||
answer_table_id = graphene.ID()
|
||||
answer = graphene.String()
|
||||
|
||||
answer = graphene.Field(AnswerType)
|
||||
|
||||
def mutate(self, info, answer_table_id, answer):
|
||||
answerT = Answer.objects.get(id=answer_table_id)
|
||||
answerT.content = answer
|
||||
answerT.completed = True
|
||||
answerT.save()
|
||||
return AnswerQuestion(answer=answerT)
|
||||
|
||||
|
||||
class CreateMaterial(graphene.Mutation):
|
||||
class Arguments:
|
||||
lesson_id = graphene.ID()
|
||||
data = graphene.String()
|
||||
name = graphene.String()
|
||||
lessonType = graphene.String()
|
||||
|
||||
material = graphene.Field(Material)
|
||||
|
||||
|
||||
def mutate(self, info, lesson_id, data, name, lessonType):
|
||||
lessonId = from_global_id(lesson_id)[1]
|
||||
print(lessonId)
|
||||
lesson = Lesson.objects.get(id=lessonId)
|
||||
material = Materials.objects.create(lesson=lesson, data=data, link="google.com", name=name, Type=lessonType)
|
||||
return CreateMaterial(material=material)
|
||||
|
||||
|
||||
class DeleteMaterial(graphene.Mutation):
|
||||
class Arguments:
|
||||
material_id = graphene.ID()
|
||||
|
||||
ok = graphene.Boolean()
|
||||
|
||||
|
||||
def mutate(self, info, material_id):
|
||||
material_id = from_global_id(material_id)[1]
|
||||
|
||||
Materials.objects.get(id=material_id).delete()
|
||||
return DeleteMaterial(ok=True)
|
||||
|
||||
|
||||
class ChangeMaterail(graphene.Mutation):
|
||||
class Arguments:
|
||||
material_id = graphene.ID()
|
||||
data = graphene.String()
|
||||
name = graphene.String()
|
||||
|
||||
material = graphene.Field(Material)
|
||||
|
||||
|
||||
def mutate(self, info, material_id, data, name):
|
||||
material_id = from_global_id(material_id)[1]
|
||||
material = Materials.objects.get(id=material_id)
|
||||
material.name = name or material.name
|
||||
material.data = data or material.data
|
||||
material.save()
|
||||
return ChangeMaterail(material=material)
|
||||
|
||||
|
||||
|
||||
class Mutation(graphene.ObjectType):
|
||||
create_lesson = CreateLesson.Field()
|
||||
update_lesson_registration = UpdateLessonRegistration.Field()
|
||||
delete_lesson = DeleteLesson.Field()
|
||||
|
||||
create_test = CreateTest.Field()
|
||||
update_test_registration = updateTestRegistration.Field()
|
||||
delete_test = deleteTest.Field()
|
||||
|
||||
create_task = createTask.Field()
|
||||
update_task = updateTask.Field()
|
||||
delete_task = deleteTask.Field()
|
||||
|
||||
add_child_to_group = addChildToGroup.Field()
|
||||
add_child_to_org = addChildToOrg.Field()
|
||||
|
||||
create_subject_class = CreateSubjectClass.Field()
|
||||
update_subject_class = UpdateSubjectLocalReg.Field()
|
||||
delete_subject_class = DeleteSubjectLocal.Field()
|
||||
|
||||
create_subject = CreateSubject.Field()
|
||||
update_subject = UpdateSubjectReg.Field()
|
||||
delete_subject = DeleteSubject.Field()
|
||||
|
||||
add_subject_to_teacher = AddSubjectToTeacher.Field()
|
||||
remove_subject_from_teacher = RemoveSubjectFromTeacher.Field()
|
||||
|
||||
answer_question = AnswerQuestion.Field()
|
||||
|
||||
|
||||
create_material = CreateMaterial.Field()
|
||||
deleteMaterial = DeleteMaterial.Field()
|
||||
changeMaterial = ChangeMaterail.Field()
|
||||
|
||||
|
||||
create_anwer_sheet = CreateAnwerSheet.Field()
|
||||
|
||||
create_answer = CreateAnswer.Field()
|
||||
|
||||
|
||||
scoring_tasks = ScoringTasks.Field()
|
||||
|
||||
class Query(graphene.ObjectType):
|
||||
|
||||
all_test = DjangoFilterConnectionField(TestsType)
|
||||
test = relay.Node.Field(TestsType)
|
||||
|
||||
all_subject = DjangoFilterConnectionField(SubjectType)
|
||||
subject = relay.Node.Field(SubjectType)
|
||||
|
||||
|
||||
|
||||
answer_sheet = relay.Node.Field(AnswerSheetType)
|
||||
all_answer_sheet = DjangoFilterConnectionField(AnswerSheetType)
|
||||
|
||||
answer = relay.Node.Field(AnswerType)
|
||||
all_answer = DjangoFilterConnectionField(AnswerType)
|
||||
|
||||
all_lessons = DjangoFilterConnectionField(LessonType)
|
||||
lessons = relay.Node.Field(LessonType)
|
||||
|
||||
subject_class = relay.Node.Field(LocalSubjectType)
|
||||
subject_classes = DjangoFilterConnectionField(LocalSubjectType)
|
||||
|
||||
|
||||
materials = DjangoFilterConnectionField(Material)
|
||||
material = relay.Node.Field(Material)
|
||||
|
||||
gettaskType = relay.Node.Field(TaskTypeType)
|
||||
taskTypes = DjangoFilterConnectionField(TaskTypeType)
|
||||
|
||||
|
||||
tasks = DjangoFilterConnectionField(TaskType)
|
||||
task = relay.Node.Field(TaskType)
|
||||
|
||||
|
||||
|
||||
|
||||
schema = graphene.Schema(query=Query)
|
|
@ -1,3 +0,0 @@
|
|||
from django.test import TestCase
|
||||
|
||||
# Create your tests here.
|
|
@ -1,3 +0,0 @@
|
|||
from django.shortcuts import render
|
||||
|
||||
# Create your views here.
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -1,3 +0,0 @@
|
|||
from django.contrib import admin
|
||||
|
||||
# Register your models here.
|
|
@ -1,5 +0,0 @@
|
|||
from django.apps import AppConfig
|
||||
|
||||
|
||||
class OrganisationsConfig(AppConfig):
|
||||
name = 'organisations'
|
|
@ -1,111 +0,0 @@
|
|||
import graphene_django
|
||||
from .models import Organisation, Role, Group, Teacher, Child, Organisator
|
||||
from graphene import relay
|
||||
import graphene
|
||||
|
||||
|
||||
class OrganisatorType(graphene_django.DjangoObjectType):
|
||||
class Meta:
|
||||
model = Organisator
|
||||
interfaces = (relay.Node,)
|
||||
filter_fields = {
|
||||
"name": ("exact", "contains"),
|
||||
"surname": ("exact", "contains"),
|
||||
"midname": ("exact", "contains"),
|
||||
"org" : ("exact",),
|
||||
"profile" : ("exact",),
|
||||
"groups" : ("contains",)
|
||||
}
|
||||
|
||||
class OrganisationType(graphene_django.DjangoObjectType):
|
||||
class Meta:
|
||||
model = Organisation
|
||||
interfaces = (relay.Node,)
|
||||
filter_fields = {
|
||||
"name" : ("exact", "contains",),
|
||||
}
|
||||
children_length = graphene.Int()
|
||||
classes_length = graphene.Int()
|
||||
|
||||
subjects = graphene.List(graphene.String)
|
||||
|
||||
def resolve_children_length(self, info):
|
||||
print(self, self._meta.fields)
|
||||
return len(self.child_set.all())
|
||||
|
||||
def resolve_classes_length(self, info):
|
||||
return len(self.group_set.all())
|
||||
|
||||
def resolve_subjects(self, info):
|
||||
return list(map(lambda x : x.name, self.subject_set.all()))
|
||||
|
||||
class RoleType(graphene_django.DjangoObjectType):
|
||||
class Meta:
|
||||
model = Role
|
||||
|
||||
|
||||
|
||||
|
||||
class ChildType(graphene_django.DjangoObjectType):
|
||||
class Meta:
|
||||
model = Child
|
||||
|
||||
interfaces = (relay.Node,)
|
||||
|
||||
filter_fields = {
|
||||
"name": ("exact", "contains"),
|
||||
"surname": ("exact", "contains"),
|
||||
"midname": ("exact", "contains"),
|
||||
"org" : ("exact",),
|
||||
"profile" : ("exact",),
|
||||
"groups" : ("contains",)
|
||||
}
|
||||
pk = graphene.Int()
|
||||
|
||||
def resolve_pk(self, info): return self.pk
|
||||
|
||||
|
||||
class TeacherType(graphene_django.DjangoObjectType):
|
||||
|
||||
class Meta:
|
||||
model = Teacher
|
||||
interfaces = (relay.Node,)
|
||||
|
||||
filter_fields = {
|
||||
"name": ("exact", "contains"),
|
||||
"surname": ("exact", "contains"),
|
||||
"midname": ("exact", "contains"),
|
||||
"org" : ("exact",),
|
||||
"profile" : ("exact",),
|
||||
"groups" : ("contains",)
|
||||
}
|
||||
pk = graphene.Int()
|
||||
|
||||
def resolve_pk(self, info): return self.pk
|
||||
|
||||
def resolve_local_lessons(self, info):
|
||||
return self.subjectclasslocal_set.all()
|
||||
|
||||
|
||||
from lessons.gqlTypes import LocalSubjectType
|
||||
|
||||
class GroupType(graphene_django.DjangoObjectType):
|
||||
class Meta:
|
||||
model = Group
|
||||
interfaces = (relay.Node,)
|
||||
|
||||
filter_fields = {
|
||||
"name" : ("exact", "contains"),
|
||||
}
|
||||
pk = graphene.Int()
|
||||
classes = graphene.List(LocalSubjectType)
|
||||
childrenLen = graphene.Int()
|
||||
|
||||
def resolve(self, info):
|
||||
return self.pk
|
||||
|
||||
def resolve_classes(self, info):
|
||||
return self.subjectclasslocal_set.all()
|
||||
|
||||
def resolve_childrenLen(self, info):
|
||||
return len(self.child_set.all())
|
|
@ -1,75 +0,0 @@
|
|||
# Generated by Django 3.1.5 on 2021-01-07 21:23
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
initial = True
|
||||
|
||||
dependencies = [
|
||||
('users', '0001_initial'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='Group',
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('name', models.CharField(max_length=20)),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Organisation',
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('name', models.TextField()),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Role',
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('name', models.CharField(max_length=50)),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Subject',
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('name', models.CharField(max_length=100)),
|
||||
('org', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='organisations.organisation')),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Teacher',
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('name', models.CharField(blank=True, max_length=150)),
|
||||
('surname', models.CharField(blank=True, max_length=150)),
|
||||
('midname', models.CharField(blank=True, max_length=150)),
|
||||
('groups', models.ManyToManyField(to='organisations.Group')),
|
||||
('org', models.ForeignKey(blank=True, on_delete=django.db.models.deletion.CASCADE, to='organisations.organisation')),
|
||||
('profile', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to='users.profile')),
|
||||
('subject_area', models.ManyToManyField(to='organisations.Subject')),
|
||||
],
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='group',
|
||||
name='org',
|
||||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='organisations.organisation'),
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Child',
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('name', models.CharField(blank=True, max_length=150)),
|
||||
('surname', models.CharField(blank=True, max_length=150)),
|
||||
('midname', models.CharField(blank=True, max_length=150)),
|
||||
('groups', models.ManyToManyField(to='organisations.Group')),
|
||||
('org', models.ForeignKey(blank=True, on_delete=django.db.models.deletion.CASCADE, to='organisations.organisation')),
|
||||
('profile', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to='users.profile')),
|
||||
],
|
||||
),
|
||||
]
|
|
@ -1,20 +0,0 @@
|
|||
# Generated by Django 3.1.5 on 2021-01-07 21:39
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('users', '0001_initial'),
|
||||
('organisations', '0001_initial'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='teacher',
|
||||
name='profile',
|
||||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='users.profile'),
|
||||
),
|
||||
]
|
|
@ -1,20 +0,0 @@
|
|||
# Generated by Django 3.1.5 on 2021-01-07 21:42
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('users', '0001_initial'),
|
||||
('organisations', '0002_auto_20210107_2139'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='child',
|
||||
name='profile',
|
||||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='users.profile'),
|
||||
),
|
||||
]
|
|
@ -1,20 +0,0 @@
|
|||
# Generated by Django 3.1.5 on 2021-01-08 20:13
|
||||
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('organisations', '0003_auto_20210107_2142'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RemoveField(
|
||||
model_name='teacher',
|
||||
name='subject_area',
|
||||
),
|
||||
migrations.DeleteModel(
|
||||
name='Subject',
|
||||
),
|
||||
]
|
|
@ -1,37 +0,0 @@
|
|||
# Generated by Django 3.1.5 on 2021-01-20 16:44
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('users', '0001_initial'),
|
||||
('organisations', '0004_auto_20210108_2013'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='child',
|
||||
name='profile',
|
||||
field=models.ForeignKey(blank=True, on_delete=django.db.models.deletion.CASCADE, to='users.profile'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='teacher',
|
||||
name='profile',
|
||||
field=models.ForeignKey(blank=True, on_delete=django.db.models.deletion.CASCADE, to='users.profile'),
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Organisator',
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('name', models.CharField(blank=True, max_length=150)),
|
||||
('surname', models.CharField(blank=True, max_length=150)),
|
||||
('midname', models.CharField(blank=True, max_length=150)),
|
||||
('groups', models.ManyToManyField(to='organisations.Group')),
|
||||
('org', models.ForeignKey(blank=True, on_delete=django.db.models.deletion.CASCADE, to='organisations.organisation')),
|
||||
('profile', models.ForeignKey(blank=True, on_delete=django.db.models.deletion.CASCADE, to='users.profile')),
|
||||
],
|
||||
),
|
||||
]
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user