def register_object(content_type_id, object_id, field_id): transition_approvements = TransitionApprovement.objects.filter(content_type__pk=content_type_id, object_id=object_id, field__pk=field_id) if transition_approvements.count() == 0: ApprovementService.init_approvements(content_type_id, object_id, field_id) initial_state = StateService.get_init_state(content_type_id, field_id) obj = Object.objects.get(object_id=object_id) obj.state = initial_state obj.save() return {'state': initial_state.details()}
def init_approvements(content_type_id, obj_id, field_id): content_type = ExternalContentType.objects.get(pk=content_type_id) field = Field.objects.get(pk=field_id) for transition_approve_definition in TransitionApproveDefinition.objects.filter(transition__content_type__pk=content_type_id, transition__field__pk=field_id): TransitionApprovement.objects.update_or_create( approve_definition=transition_approve_definition, object_id=obj_id, content_type=content_type, field=field, defaults={ 'status': PENDING } ) init_state = StateService.get_init_state(content_type_id, field_id) Object.objects.update_or_create(object_id=obj_id, content_type=content_type, field=field, defaults={'state': init_state})
def test_init(self): test_obj = TestModel.objects.get(pk=5001) ct = ExternalContentType.objects.get(pk=1501) field = Field.objects.get(pk=3501) obj = Object.objects.get_object_or_None(object_id=test_obj.pk) self.assertIsNone(obj) ObjectService.register_object(ct.pk, 5001, field.pk) ObjectService.register_object(ct.pk, 5002, field.pk) obj = Object.objects.get_object_or_None(object_id=test_obj.pk) self.assertIsNotNone(obj) initial_state = StateService.get_init_state(ct.pk, field.pk) self.assertEqual(initial_state, obj.state) self.assertEqual(18, TransitionApprovement.objects.count())
def test_register_object(self): test_obj = TestModel.objects.get(pk=5001) ct = ExternalContentType.objects.get(pk=1501) field = Field.objects.get(pk=3501) obj = Object.objects.get_object_or_None(object_id=test_obj.pk) self.assertIsNone(obj) self.assertEqual(0, TransitionApprovement.objects.count()) result = self.client.post(reverse('riverio.apps.web.views.restful.register_object', args=[ct.pk, test_obj.pk, field.pk]), **{settings.TOKEN_KEY: Application.objects.get(pk=501).token}) obj = Object.objects.get_object_or_None(object_id=test_obj.pk) self.assertIsNotNone(obj) self.assertEqual(OK, result.status_code) initial_state = StateService.get_init_state(ct.pk, field.pk) self.assertEqual(initial_state, obj.state) self.assertEqual(9, TransitionApprovement.objects.count())