diff --git a/rsconcept/backend/apps/rsform/models.py b/rsconcept/backend/apps/rsform/models.py
index 78b0bacc..18afe83a 100644
--- a/rsconcept/backend/apps/rsform/models.py
+++ b/rsconcept/backend/apps/rsform/models.py
@@ -106,7 +106,8 @@ class RSForm(models.Model):
)
self._update_from_core()
self.save()
- return Constituenta.objects.get(pk=result.pk)
+ result.refresh_from_db()
+ return result
@transaction.atomic
def move_cst(self, listCst: list['Constituenta'], target: int):
diff --git a/rsconcept/backend/apps/rsform/tests/t_views.py b/rsconcept/backend/apps/rsform/tests/t_views.py
index 2415603a..e677cef0 100644
--- a/rsconcept/backend/apps/rsform/tests/t_views.py
+++ b/rsconcept/backend/apps/rsform/tests/t_views.py
@@ -200,26 +200,27 @@ class TestRSFormViewset(APITestCase):
def test_delete_constituenta(self):
schema = self.rsform_owned
data = json.dumps({'items': [{'id': 1337}]})
- response = self.client.post(f'/api/rsforms/{schema.id}/cst-multidelete/',
- data=data, content_type='application/json')
+ response = self.client.patch(f'/api/rsforms/{schema.id}/cst-multidelete/',
+ data=data, content_type='application/json')
self.assertEqual(response.status_code, 400)
x1 = Constituenta.objects.create(schema=schema, alias='X1', csttype='basic', order=1)
x2 = Constituenta.objects.create(schema=schema, alias='X2', csttype='basic', order=2)
data = json.dumps({'items': [{'id': x1.id}]})
- response = self.client.post(f'/api/rsforms/{schema.id}/cst-multidelete/',
- data=data, content_type='application/json')
+ response = self.client.patch(f'/api/rsforms/{schema.id}/cst-multidelete/',
+ data=data, content_type='application/json')
x2.refresh_from_db()
schema.refresh_from_db()
self.assertEqual(response.status_code, 202)
+ self.assertEqual(len(response.data['items']), 1)
self.assertEqual(schema.constituents().count(), 1)
self.assertEqual(x2.alias, 'X2')
self.assertEqual(x2.order, 1)
x3 = Constituenta.objects.create(schema=self.rsform_unowned, alias='X1', csttype='basic', order=1)
data = json.dumps({'items': [{'id': x3.id}]})
- response = self.client.post(f'/api/rsforms/{schema.id}/cst-multidelete/',
- data=data, content_type='application/json')
+ response = self.client.patch(f'/api/rsforms/{schema.id}/cst-multidelete/',
+ data=data, content_type='application/json')
self.assertEqual(response.status_code, 400)
def test_move_constituenta(self):
diff --git a/rsconcept/backend/apps/rsform/views.py b/rsconcept/backend/apps/rsform/views.py
index 618e34a9..55eb6b76 100644
--- a/rsconcept/backend/apps/rsform/views.py
+++ b/rsconcept/backend/apps/rsform/views.py
@@ -69,14 +69,16 @@ class RSFormViewSet(viewsets.ModelViewSet):
response['Location'] = constituenta.get_absolute_url()
return response
- @action(detail=True, methods=['post'], url_path='cst-multidelete')
+ @action(detail=True, methods=['patch'], url_path='cst-multidelete')
def cst_multidelete(self, request, pk):
''' Delete multiple constituents '''
schema: models.RSForm = self.get_object()
serializer = serializers.CstListSerlializer(data=request.data, context={'schema': schema})
serializer.is_valid(raise_exception=True)
schema.delete_cst(serializer.validated_data['constituents'])
- return Response(status=202)
+ schema.refresh_from_db()
+ outSerializer = serializers.RSFormDetailsSerlializer(schema)
+ return Response(status=202, data=outSerializer.data)
@action(detail=True, methods=['patch'], url_path='cst-moveto')
def cst_moveto(self, request, pk):
diff --git a/rsconcept/frontend/src/components/Common/Card.tsx b/rsconcept/frontend/src/components/Common/Card.tsx
index 33a89608..d49be38b 100644
--- a/rsconcept/frontend/src/components/Common/Card.tsx
+++ b/rsconcept/frontend/src/components/Common/Card.tsx
@@ -7,7 +7,7 @@ interface CardProps {
function Card({title, widthClass='min-w-fit', children}: CardProps) {
return (
- { title &&
{title}
}
+ { title && {title}
}
{children}
);
diff --git a/rsconcept/frontend/src/components/Common/DataTableThemed.tsx b/rsconcept/frontend/src/components/Common/DataTableThemed.tsx
index aa298bb5..3168c5e5 100644
--- a/rsconcept/frontend/src/components/Common/DataTableThemed.tsx
+++ b/rsconcept/frontend/src/components/Common/DataTableThemed.tsx
@@ -1,5 +1,5 @@
import DataTable, { createTheme, TableProps } from 'react-data-table-component';
-import { useTheme } from '../../context/ThemeContext';
+import { useConceptTheme } from '../../context/ThemeContext';
export interface SelectionInfo {
allSelected: boolean;
@@ -38,7 +38,7 @@ createTheme('customDark', {
}, 'dark');
function DataTableThemed({theme, ...props}: TableProps) {
- const { darkMode } = useTheme();
+ const { darkMode } = useConceptTheme();
return (
diff --git a/rsconcept/frontend/src/components/Navigation/Navigation.tsx b/rsconcept/frontend/src/components/Navigation/Navigation.tsx
index 69e4cc6e..b9b8108f 100644
--- a/rsconcept/frontend/src/components/Navigation/Navigation.tsx
+++ b/rsconcept/frontend/src/components/Navigation/Navigation.tsx
@@ -6,35 +6,35 @@ import UserMenu from './UserMenu';
import { useAuth } from '../../context/AuthContext';
import UserTools from './UserTools';
import Logo from './Logo';
-import { useState } from 'react';
+import { useConceptTheme } from '../../context/ThemeContext';
function Navigation() {
const {user} = useAuth();
const navigate = useNavigate();
- const [isActive, setActive] = useState(true);
+ const { noNavigation, toggleNoNavigation } = useConceptTheme();
const navigateCommon = () => navigate('/rsforms?filter=common');
const navigateHelp = () => navigate('/manuals');
return (