Copy terms when cloning

This commit is contained in:
IRBorisov 2023-10-31 10:41:14 +03:00
parent 00ea912a9e
commit 7ecf85dbc7
3 changed files with 12 additions and 3 deletions

View File

@ -412,6 +412,7 @@ class RSForm:
cst = self._insert_new(data, insert_after) cst = self._insert_new(data, insert_after)
cst.convention = data.get('convention', '') cst.convention = data.get('convention', '')
cst.definition_formal = data.get('definition_formal', '') cst.definition_formal = data.get('definition_formal', '')
cst.term_forms = data.get('term_forms', [])
cst.term_raw = data.get('term_raw', '') cst.term_raw = data.get('term_raw', '')
if cst.term_raw != '': if cst.term_raw != '':
resolved = resolver.resolve(cst.term_raw) resolved = resolver.resolve(cst.term_raw)

View File

@ -175,7 +175,7 @@ class CstCreateSerializer(serializers.ModelSerializer):
class Meta: class Meta:
''' serializer metadata. ''' ''' serializer metadata. '''
model = Constituenta model = Constituenta
fields = 'alias', 'cst_type', 'convention', 'term_raw', 'definition_raw', 'definition_formal', 'insert_after' fields = 'alias', 'cst_type', 'convention', 'term_raw', 'definition_raw', 'definition_formal', 'insert_after', 'term_forms'
class CstRenameSerializer(serializers.ModelSerializer): class CstRenameSerializer(serializers.ModelSerializer):

View File

@ -426,15 +426,23 @@ class TestRSFormViewset(APITestCase):
x3 = Constituenta.objects.get(alias=response.data['new_cst']['alias']) x3 = Constituenta.objects.get(alias=response.data['new_cst']['alias'])
self.assertEqual(x3.order, 3) self.assertEqual(x3.order, 3)
data = {'alias': 'X4', 'cst_type': 'basic', 'insert_after': x2.id} data = {
'alias': 'X4',
'cst_type': 'basic',
'insert_after': x2.id,
'term_raw': 'test',
'term_forms': [{'text':'form1', 'tags':'sing,datv'}]
}
response = self.client.post( response = self.client.post(
f'/api/rsforms/{item.id}/cst-create', f'/api/rsforms/{item.id}/cst-create',
data=data, format='json' data=data, format='json'
) )
self.assertEqual(response.status_code, 201) self.assertEqual(response.status_code, 201)
self.assertEqual(response.data['new_cst']['alias'], 'X4') self.assertEqual(response.data['new_cst']['alias'], data['alias'])
x4 = Constituenta.objects.get(alias=response.data['new_cst']['alias']) x4 = Constituenta.objects.get(alias=response.data['new_cst']['alias'])
self.assertEqual(x4.order, 3) self.assertEqual(x4.order, 3)
self.assertEqual(x4.term_raw, data['term_raw'])
self.assertEqual(x4.term_forms, data['term_forms'])
def test_rename_constituenta(self): def test_rename_constituenta(self):
cst1 = Constituenta.objects.create( cst1 = Constituenta.objects.create(