示例#1
0
    def clean(self):
        try:
            _select_lock(self.instance, self.cleaned_data[self.instance.RevisionMetaInfo.field.name])
        except RecordModifiedError:
            self._update_errors({NON_FIELD_ERRORS: self.error_class([_('Record Modified')])})

        return super(ConcurrentForm, self).clean()
示例#2
0
def concurrency_check(model_instance,
                      force_insert=False,
                      force_update=False,
                      using=None,
                      **kwargs):
    if not force_insert:
        _select_lock(model_instance)
    def clean(self):
        try:
            if self.instance.pk:
                _select_lock(self.instance, self.cleaned_data[self.instance._concurrencymeta.field.name])

        except RecordModifiedError:
                self._update_errors(ValidationError({NON_FIELD_ERRORS: self.error_class([_('Record Modified')])}))

        return super(ConcurrentForm, self).clean()
def test_select_lock(settings):
    s1 = SimpleConcurrentModel.objects.create()
    s2 = refetch(s1)
    assert s1.version == s2.version
    s2.save()
    with pytest.raises(RecordModifiedError):
        _select_lock(s1)

    settings.CONCURRENCY_ENABLED = False
    _select_lock(s1)
示例#5
0
    def clean(self):
        try:
            _select_lock(
                self.instance,
                self.cleaned_data[self.instance.RevisionMetaInfo.field.name])
        except RecordModifiedError:
            self._update_errors(
                {NON_FIELD_ERRORS: self.error_class([_('Record Modified')])})

        return super(ConcurrentForm, self).clean()
示例#6
0
def concurrency_check(model_instance, force_insert=False, force_update=False, using=None, **kwargs):
    if not force_insert:
        _select_lock(model_instance)