예제 #1
0
 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
예제 #2
0
 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
예제 #3
0
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()
예제 #4
0
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()