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',
|
||||
'definition_formal': r'X4\X4',
|
||||
'definition_raw': '@{X5|sing,datv}',
|
||||
'convention': 'test'
|
||||
'convention': 'test',
|
||||
'crucial': True,
|
||||
}
|
||||
}
|
||||
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_raw, data['item_data']['definition_raw'])
|
||||
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(inherited_cst.term_raw, data['item_data']['term_raw'])
|
||||
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_raw, r'@{X2|sing,datv}')
|
||||
|
||||
|
|
|
@ -8,5 +8,5 @@ from . import models
|
|||
class ConstituentaAdmin(admin.ModelAdmin):
|
||||
''' Admin model: Constituenta. '''
|
||||
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']
|
||||
|
|
|
@ -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 django.db.models import (
|
||||
CASCADE,
|
||||
BooleanField,
|
||||
CharField,
|
||||
ForeignKey,
|
||||
JSONField,
|
||||
|
@ -103,6 +104,10 @@ class Constituenta(Model):
|
|||
default='',
|
||||
blank=True
|
||||
)
|
||||
crucial = BooleanField(
|
||||
verbose_name='Ключевая',
|
||||
default=False
|
||||
)
|
||||
|
||||
class Meta:
|
||||
''' Model metadata. '''
|
||||
|
|
|
@ -144,6 +144,7 @@ class RSForm:
|
|||
self.cache.ensure_loaded()
|
||||
position = self.cache.constituents.index(self.cache.by_id[insert_after.pk]) + 1
|
||||
result = self.insert_new(data['alias'], data['cst_type'], position)
|
||||
result.crucial = data.get('crucial', False)
|
||||
result.convention = data.get('convention', '')
|
||||
result.definition_formal = data.get('definition_formal', '')
|
||||
result.term_forms = data.get('term_forms', [])
|
||||
|
@ -247,6 +248,9 @@ class RSForm:
|
|||
else:
|
||||
old_data['convention'] = cst.convention
|
||||
cst.convention = data['convention']
|
||||
if 'crucial' in data:
|
||||
cst.crucial = data['crucial']
|
||||
del data['crucial']
|
||||
if 'definition_formal' in data:
|
||||
if cst.definition_formal == data['definition_formal']:
|
||||
del data['definition_formal']
|
||||
|
|
|
@ -46,12 +46,13 @@ class CstUpdateSerializer(StrictSerializer):
|
|||
class Meta:
|
||||
''' serializer metadata. '''
|
||||
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(
|
||||
many=False,
|
||||
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()
|
||||
|
||||
|
@ -96,7 +97,7 @@ class CstCreateSerializer(StrictModelSerializer):
|
|||
''' serializer metadata. '''
|
||||
model = Constituenta
|
||||
fields = \
|
||||
'alias', 'cst_type', 'convention', \
|
||||
'alias', 'cst_type', 'convention', 'crucial', \
|
||||
'term_raw', 'definition_raw', 'definition_formal', \
|
||||
'insert_after', 'term_forms'
|
||||
|
||||
|
|
|
@ -225,7 +225,9 @@ class TestRSFormViewset(EndpointTester):
|
|||
'cst_type': CstType.BASE,
|
||||
'insert_after': x2.pk,
|
||||
'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)
|
||||
self.assertEqual(response.data['new_cst']['alias'], data['alias'])
|
||||
|
@ -233,6 +235,8 @@ class TestRSFormViewset(EndpointTester):
|
|||
self.assertEqual(x4.order, 2)
|
||||
self.assertEqual(x4.term_raw, data['term_raw'])
|
||||
self.assertEqual(x4.term_forms, data['term_forms'])
|
||||
self.assertEqual(x4.definition_formal, data['definition_formal'])
|
||||
self.assertEqual(x4.crucial, data['crucial'])
|
||||
|
||||
data = {
|
||||
'alias': 'X5',
|
||||
|
|
Loading…
Reference in New Issue
Block a user