F: Implement constituenta mark for backend
This commit is contained in:
parent
97fe805e14
commit
e69638799a
|
@ -121,7 +121,8 @@ class TestChangeConstituents(EndpointTester):
|
||||||
'term_raw': 'Test1',
|
'term_raw': 'Test1',
|
||||||
'definition_formal': r'X4\X4',
|
'definition_formal': r'X4\X4',
|
||||||
'definition_raw': '@{X5|sing,datv}',
|
'definition_raw': '@{X5|sing,datv}',
|
||||||
'convention': 'test'
|
'convention': 'test',
|
||||||
|
'crucial': True,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
response = self.executeOK(data=data, schema=self.ks1.model.pk)
|
response = self.executeOK(data=data, schema=self.ks1.model.pk)
|
||||||
|
@ -132,9 +133,11 @@ class TestChangeConstituents(EndpointTester):
|
||||||
self.assertEqual(self.ks1X1.definition_formal, data['item_data']['definition_formal'])
|
self.assertEqual(self.ks1X1.definition_formal, data['item_data']['definition_formal'])
|
||||||
self.assertEqual(self.ks1X1.definition_raw, data['item_data']['definition_raw'])
|
self.assertEqual(self.ks1X1.definition_raw, data['item_data']['definition_raw'])
|
||||||
self.assertEqual(self.ks1X1.convention, data['item_data']['convention'])
|
self.assertEqual(self.ks1X1.convention, data['item_data']['convention'])
|
||||||
|
self.assertEqual(self.ks1X1.crucial, data['item_data']['crucial'])
|
||||||
self.assertEqual(d2.definition_resolved, data['item_data']['term_raw'])
|
self.assertEqual(d2.definition_resolved, data['item_data']['term_raw'])
|
||||||
self.assertEqual(inherited_cst.term_raw, data['item_data']['term_raw'])
|
self.assertEqual(inherited_cst.term_raw, data['item_data']['term_raw'])
|
||||||
self.assertEqual(inherited_cst.convention, data['item_data']['convention'])
|
self.assertEqual(inherited_cst.convention, data['item_data']['convention'])
|
||||||
|
self.assertEqual(inherited_cst.crucial, False)
|
||||||
self.assertEqual(inherited_cst.definition_formal, r'X1\X1')
|
self.assertEqual(inherited_cst.definition_formal, r'X1\X1')
|
||||||
self.assertEqual(inherited_cst.definition_raw, r'@{X2|sing,datv}')
|
self.assertEqual(inherited_cst.definition_raw, r'@{X2|sing,datv}')
|
||||||
|
|
||||||
|
|
|
@ -8,5 +8,5 @@ from . import models
|
||||||
class ConstituentaAdmin(admin.ModelAdmin):
|
class ConstituentaAdmin(admin.ModelAdmin):
|
||||||
''' Admin model: Constituenta. '''
|
''' Admin model: Constituenta. '''
|
||||||
ordering = ['schema', 'order']
|
ordering = ['schema', 'order']
|
||||||
list_display = ['schema', 'order', 'alias', 'term_resolved', 'definition_resolved']
|
list_display = ['schema', 'order', 'alias', 'term_resolved', 'definition_resolved', 'crucial']
|
||||||
search_fields = ['term_resolved', 'definition_resolved']
|
search_fields = ['term_resolved', 'definition_resolved']
|
||||||
|
|
|
@ -0,0 +1,18 @@
|
||||||
|
# Generated by Django 5.2.4 on 2025-07-29 09:01
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('rsform', '0003_alter_constituenta_order'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='constituenta',
|
||||||
|
name='crucial',
|
||||||
|
field=models.BooleanField(default=False, verbose_name='Ключевая'),
|
||||||
|
),
|
||||||
|
]
|
|
@ -4,6 +4,7 @@ import re
|
||||||
from cctext import extract_entities
|
from cctext import extract_entities
|
||||||
from django.db.models import (
|
from django.db.models import (
|
||||||
CASCADE,
|
CASCADE,
|
||||||
|
BooleanField,
|
||||||
CharField,
|
CharField,
|
||||||
ForeignKey,
|
ForeignKey,
|
||||||
JSONField,
|
JSONField,
|
||||||
|
@ -103,6 +104,10 @@ class Constituenta(Model):
|
||||||
default='',
|
default='',
|
||||||
blank=True
|
blank=True
|
||||||
)
|
)
|
||||||
|
crucial = BooleanField(
|
||||||
|
verbose_name='Ключевая',
|
||||||
|
default=False
|
||||||
|
)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
''' Model metadata. '''
|
''' Model metadata. '''
|
||||||
|
|
|
@ -144,6 +144,7 @@ class RSForm:
|
||||||
self.cache.ensure_loaded()
|
self.cache.ensure_loaded()
|
||||||
position = self.cache.constituents.index(self.cache.by_id[insert_after.pk]) + 1
|
position = self.cache.constituents.index(self.cache.by_id[insert_after.pk]) + 1
|
||||||
result = self.insert_new(data['alias'], data['cst_type'], position)
|
result = self.insert_new(data['alias'], data['cst_type'], position)
|
||||||
|
result.crucial = data.get('crucial', False)
|
||||||
result.convention = data.get('convention', '')
|
result.convention = data.get('convention', '')
|
||||||
result.definition_formal = data.get('definition_formal', '')
|
result.definition_formal = data.get('definition_formal', '')
|
||||||
result.term_forms = data.get('term_forms', [])
|
result.term_forms = data.get('term_forms', [])
|
||||||
|
@ -247,6 +248,9 @@ class RSForm:
|
||||||
else:
|
else:
|
||||||
old_data['convention'] = cst.convention
|
old_data['convention'] = cst.convention
|
||||||
cst.convention = data['convention']
|
cst.convention = data['convention']
|
||||||
|
if 'crucial' in data:
|
||||||
|
cst.crucial = data['crucial']
|
||||||
|
del data['crucial']
|
||||||
if 'definition_formal' in data:
|
if 'definition_formal' in data:
|
||||||
if cst.definition_formal == data['definition_formal']:
|
if cst.definition_formal == data['definition_formal']:
|
||||||
del data['definition_formal']
|
del data['definition_formal']
|
||||||
|
|
|
@ -46,12 +46,13 @@ class CstUpdateSerializer(StrictSerializer):
|
||||||
class Meta:
|
class Meta:
|
||||||
''' serializer metadata. '''
|
''' serializer metadata. '''
|
||||||
model = Constituenta
|
model = Constituenta
|
||||||
fields = 'alias', 'cst_type', 'convention', 'definition_formal', 'definition_raw', 'term_raw', 'term_forms'
|
fields = 'alias', 'cst_type', 'convention', 'crucial', 'definition_formal', \
|
||||||
|
'definition_raw', 'term_raw', 'term_forms'
|
||||||
|
|
||||||
target = PKField(
|
target = PKField(
|
||||||
many=False,
|
many=False,
|
||||||
queryset=Constituenta.objects.all().only(
|
queryset=Constituenta.objects.all().only(
|
||||||
'alias', 'cst_type', 'convention', 'definition_formal', 'definition_raw', 'term_raw')
|
'alias', 'cst_type', 'convention', 'crucial', 'definition_formal', 'definition_raw', 'term_raw')
|
||||||
)
|
)
|
||||||
item_data = ConstituentaUpdateData()
|
item_data = ConstituentaUpdateData()
|
||||||
|
|
||||||
|
@ -96,7 +97,7 @@ class CstCreateSerializer(StrictModelSerializer):
|
||||||
''' serializer metadata. '''
|
''' serializer metadata. '''
|
||||||
model = Constituenta
|
model = Constituenta
|
||||||
fields = \
|
fields = \
|
||||||
'alias', 'cst_type', 'convention', \
|
'alias', 'cst_type', 'convention', 'crucial', \
|
||||||
'term_raw', 'definition_raw', 'definition_formal', \
|
'term_raw', 'definition_raw', 'definition_formal', \
|
||||||
'insert_after', 'term_forms'
|
'insert_after', 'term_forms'
|
||||||
|
|
||||||
|
|
|
@ -225,7 +225,9 @@ class TestRSFormViewset(EndpointTester):
|
||||||
'cst_type': CstType.BASE,
|
'cst_type': CstType.BASE,
|
||||||
'insert_after': x2.pk,
|
'insert_after': x2.pk,
|
||||||
'term_raw': 'test',
|
'term_raw': 'test',
|
||||||
'term_forms': [{'text': 'form1', 'tags': 'sing,datv'}]
|
'term_forms': [{'text': 'form1', 'tags': 'sing,datv'}],
|
||||||
|
'definition_formal': 'invalid',
|
||||||
|
'crucial': True
|
||||||
}
|
}
|
||||||
response = self.executeCreated(data=data, item=self.owned_id)
|
response = self.executeCreated(data=data, item=self.owned_id)
|
||||||
self.assertEqual(response.data['new_cst']['alias'], data['alias'])
|
self.assertEqual(response.data['new_cst']['alias'], data['alias'])
|
||||||
|
@ -233,6 +235,8 @@ class TestRSFormViewset(EndpointTester):
|
||||||
self.assertEqual(x4.order, 2)
|
self.assertEqual(x4.order, 2)
|
||||||
self.assertEqual(x4.term_raw, data['term_raw'])
|
self.assertEqual(x4.term_raw, data['term_raw'])
|
||||||
self.assertEqual(x4.term_forms, data['term_forms'])
|
self.assertEqual(x4.term_forms, data['term_forms'])
|
||||||
|
self.assertEqual(x4.definition_formal, data['definition_formal'])
|
||||||
|
self.assertEqual(x4.crucial, data['crucial'])
|
||||||
|
|
||||||
data = {
|
data = {
|
||||||
'alias': 'X5',
|
'alias': 'X5',
|
||||||
|
|
Loading…
Reference in New Issue
Block a user