66from ninja_extra .shortcuts import get_object_or_none
77
88from easy .exception import BaseAPIException
9- from easy .response import BaseApiResponse
109
1110logger = logging .getLogger (__name__ )
1211
@@ -37,37 +36,35 @@ def _separate_payload(self, payload: Dict) -> Tuple[Dict, Dict]:
3736 return local_fields , m2m_fields
3837
3938 @staticmethod
40- def _crud_set_m2m_obj (obj : models .Model , m2m_fields : Dict ) -> bool :
39+ def _crud_set_m2m_obj (obj : models .Model , m2m_fields : Dict ) -> None :
4140 if obj and m2m_fields :
4241 for _field , _value in m2m_fields .items ():
4342 if _value and isinstance (_value , List ):
4443 m2m_f = getattr (obj , _field )
4544 m2m_f .set (_value )
46- return True
4745
4846 # Define BASE CRUD
4947 @transaction .atomic ()
5048 def _crud_add_obj (self , ** payload : Dict ) -> Any :
5149 local_f_payload , m2m_f_payload = self ._separate_payload (payload )
5250
53- # Create obj with local_fields payload
54- obj = self .model .objects .create (** local_f_payload )
55-
56- # Save obj with m2m_fields payload
57- set_m2m_status = self ._crud_set_m2m_obj (obj , m2m_f_payload )
58-
59- if obj and set_m2m_status :
51+ try :
52+ # Create obj with local_fields payload
53+ obj = self .model .objects .create (** local_f_payload )
54+ # Save obj with m2m_fields payload
55+ self ._crud_set_m2m_obj (obj , m2m_f_payload )
56+ except Exception as e : # pragma: no cover
57+ raise BaseAPIException (f"Create Error - { e } " )
58+ if obj :
6059 return obj .id
61- else :
62- return None
6360
64- def _crud_del_obj (self , pk : int ) -> "BaseApiResponse" :
61+ def _crud_del_obj (self , pk : int ) -> bool :
6562 obj = get_object_or_none (self .model , pk = pk )
6663 if obj :
6764 self .model .objects .filter (pk = pk ).delete ()
68- return BaseApiResponse ( "Deleted." , errno = 204 )
65+ return True
6966 else :
70- return BaseApiResponse ( "Not Found." , errno = 404 )
67+ return False
7168
7269 @transaction .atomic ()
7370 def _crud_update_obj (self , pk : int , payload : Dict ) -> bool :
@@ -76,11 +73,10 @@ def _crud_update_obj(self, pk: int, payload: Dict) -> bool:
7673 return False
7774 try :
7875 obj , _ = self .model .objects .update_or_create (pk = pk , defaults = local_fields )
76+ self ._crud_set_m2m_obj (obj , m2m_fields )
7977 except Exception as e : # pragma: no cover
8078 raise BaseAPIException (f"Update Error - { e } " )
81-
82- set_m2m_status = self ._crud_set_m2m_obj (obj , m2m_fields )
83- return bool (set_m2m_status and obj )
79+ return bool (obj )
8480
8581 def _crud_get_obj (self , pk : int ) -> Any :
8682 if self .m2m_fields_list :
0 commit comments