def save_model(self, request, obj, form, change): try: if change: version = request.POST.get('_concurrency_version_{0.pk}'.format(obj), None) if version: core._set_version(obj, version) super(ConcurrencyListEditableMixin, self).save_model(request, obj, form, change) except RecordModifiedError: self._add_conflict(request, obj) # If policy is set to 'silent' the user will be informed using message_user # raise Exception if not silent. # NOTE: # list_editable_policy MUST have the LIST_EDITABLE_POLICY_ABORT_ALL # set to work properly if self.list_editable_policy == CONCURRENCY_LIST_EDITABLE_POLICY_ABORT_ALL: raise
def save_model(self, request, obj, form, change): try: if change: version = request.POST.get('_concurrency_version_{0.pk}'.format(obj), None) if version: core._set_version(obj, version) super(ConcurrencyListEditableMixin, self).save_model(request, obj, form, change) except RecordModifiedError: self._add_conflict(request, obj) # If policy is set to 'silent' the user will be informed using message_user # raise Exception if not silent. # NOTE: # list_editable_policy MUST have the LIST_EDITABLE_POLICY_ABORT_ALL # set to work properly if not self.list_editable_policy == CONCURRENCY_LIST_EDITABLE_POLICY_SILENT: raise
def test_do_not_check_if_no_version(model_class): id = next(unique_id) instance, __ = model_class.objects.get_or_create(pk=id) instance.save() copy = refetch(instance) copy.save() with pytest.raises(RecordModifiedError): _set_version(instance, 1) instance.version = 1 instance.save() _set_version(instance, 0) instance.save() assert instance.get_concurrency_version() > 0 assert instance.get_concurrency_version() != copy.get_concurrency_version()
def test_do_not_check_if_no_version(model_class): with override_settings(CONCURRENCY_VERSION_FIELD_REQUIRED=False): id = next(unique_id) instance, __ = model_class.objects.get_or_create(pk=id) instance.save() copy = refetch(instance) copy.save() with pytest.raises(RecordModifiedError): _set_version(instance, 1) instance.version = 1 instance.save() _set_version(instance, 0) instance.save() assert instance.get_concurrency_version() > 0 assert instance.get_concurrency_version() != copy.get_concurrency_version()
def test_do_not_check_if_no_version(model_class): with override_settings(CONCURRENCY_VERSION_FIELD_REQUIRED=False): id = next(unique_id) instance, __ = model_class.objects.get_or_create(pk=id) instance.save() copy = refetch(instance) copy.save() with pytest.raises(RecordModifiedError): _set_version(instance, 1) instance.version = 1 instance.save() _set_version(instance, 0) instance.save() assert instance.get_concurrency_version() > 0 assert instance.get_concurrency_version( ) != copy.get_concurrency_version()