This commit is contained in:
2024-12-08 15:16:43 +03:00
parent ed33722449
commit 8fb349d74b
17 changed files with 251 additions and 4 deletions

0
schemas/__init__.py Normal file
View File

6
schemas/admin.py Normal file
View File

@@ -0,0 +1,6 @@
from django.contrib import admin
# Register your models here.
from .models import Schema
admin.site.register(Schema)

6
schemas/apps.py Normal file
View File

@@ -0,0 +1,6 @@
from django.apps import AppConfig
class SchemasConfig(AppConfig):
default_auto_field = 'django.db.models.BigAutoField'
name = 'schemas'

View File

@@ -0,0 +1,28 @@
# Generated by Django 5.1.4 on 2024-12-08 11:56
import django.db.models.deletion
from django.db import migrations, models
class Migration(migrations.Migration):
initial = True
dependencies = [
('web', '0007_customuser_telegram_id_customuser_telegram_username'),
]
operations = [
migrations.CreateModel(
name='Schema',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.TextField()),
('data', models.BinaryField(blank=True, null=True)),
('project', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='web.project')),
],
options={
'indexes': [models.Index(fields=['project'], name='schemas_sch_project_18fee8_idx')],
},
),
]

View File

@@ -0,0 +1,18 @@
# Generated by Django 5.1.4 on 2024-12-08 12:05
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('schemas', '0001_initial'),
]
operations = [
migrations.AlterField(
model_name='schema',
name='data',
field=models.TextField(blank=True, null=True),
),
]

View File

@@ -0,0 +1,18 @@
# Generated by Django 5.1.4 on 2024-12-08 12:15
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('schemas', '0002_alter_schema_data'),
]
operations = [
migrations.AlterField(
model_name='schema',
name='data',
field=models.TextField(blank=True, default=''),
),
]

View File

14
schemas/models.py Normal file
View File

@@ -0,0 +1,14 @@
from django.db import models
# Create your models here.
class Schema(models.Model):
project = models.ForeignKey('web.Project', on_delete=models.CASCADE)
name = models.TextField()
data = models.TextField(default='', blank=True)
class Meta:
indexes = [
models.Index(fields=['project'])
]

3
schemas/tests.py Normal file
View File

@@ -0,0 +1,3 @@
from django.test import TestCase
# Create your tests here.

9
schemas/urls.py Normal file
View File

@@ -0,0 +1,9 @@
from django.contrib import admin
from django.urls import path
from .views import *
urlpatterns = [
path(*SchemasView.as_path()),
path('get', get_schemas)
]

46
schemas/views.py Normal file
View File

@@ -0,0 +1,46 @@
from json import loads
from django.http import HttpResponse, JsonResponse
from BaseLib.BaseView import BaseView
from BaseLib.configurator import *
from Platform import settings
from schemas.models import Schema
# Create your views here.
class SchemasView(BaseView):
required_login = True
endpoint = ''
view_file = 'schemas.html'
def pre_handle(self):
self.context['schemas'] = Schema.objects.filter(project=self.request.user.selected_project)
def post_create_schema(self):
Schema.objects.create(project=self.request.user.selected_project, name=self.request.POST['name'])
return '/schemas'
def post_delete(self):
Schema.objects.get(id=self.request.POST['schema']).delete()
return '/schemas'
def post_save(self):
schema = Schema.objects.get(id=self.request.POST['schema'])
schema.data = self.request.POST['data']
schema.save()
return '/schemas'
def get_schemas(request):
project = request.GET.get('project')
if project is None:
return HttpResponse('', status=400)
data = {
schema.name: schema.data
for schema in Schema.objects.filter(project__name=project)
}
return JsonResponse(data, safe=False)