Fixed validation that was causing add existing series to fail
This commit is contained in:
parent
ddbcb883ca
commit
519b6debfb
|
@ -10,17 +10,13 @@ namespace NzbDrone.Integration.Test
|
||||||
[Test]
|
[Test]
|
||||||
public void should_only_have_unknown_series_releases()
|
public void should_only_have_unknown_series_releases()
|
||||||
{
|
{
|
||||||
|
|
||||||
var releases = Releases.All();
|
var releases = Releases.All();
|
||||||
var indexers = Indexers.All();
|
var indexers = Indexers.All();
|
||||||
|
|
||||||
|
|
||||||
releases.Should().OnlyContain(c => c.Rejections.Contains("Unknown Series"));
|
releases.Should().OnlyContain(c => c.Rejections.Contains("Unknown Series"));
|
||||||
releases.Should().OnlyContain(c => BeValidRelease(c));
|
releases.Should().OnlyContain(c => BeValidRelease(c));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private bool BeValidRelease(ReleaseResource releaseResource)
|
private bool BeValidRelease(ReleaseResource releaseResource)
|
||||||
{
|
{
|
||||||
releaseResource.Age.Should().BeGreaterOrEqualTo(-1);
|
releaseResource.Age.Should().BeGreaterOrEqualTo(-1);
|
||||||
|
@ -33,6 +29,5 @@ namespace NzbDrone.Integration.Test
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -8,14 +8,16 @@
|
||||||
<div class="validation-errors"></div>
|
<div class="validation-errors"></div>
|
||||||
<div class="alert alert-info">Enter the path that contains some or all of your TV series, you will be able to choose which series you want to import<button type="button" class="close" data-dismiss="alert">×</button></div>
|
<div class="alert alert-info">Enter the path that contains some or all of your TV series, you will be able to choose which series you want to import<button type="button" class="close" data-dismiss="alert">×</button></div>
|
||||||
|
|
||||||
<div class="input-group x-path form-group">
|
<div class="form-group">
|
||||||
<span class="input-group-addon"> <i class="icon-folder-open"></i></span>
|
<div class="input-group x-path">
|
||||||
<input class="col-md-9 form-control" type="text" validation-name="path" placeholder="Enter path to folder that contains your shows">
|
<span class="input-group-addon"> <i class="icon-folder-open"></i></span>
|
||||||
<span class="input-group-btn ">
|
<input class="col-md-9 form-control" type="text" validation-name="path" placeholder="Enter path to folder that contains your shows">
|
||||||
<button class="btn btn-success x-add">
|
<span class="input-group-btn ">
|
||||||
<i class="icon-ok"/>
|
<button class="btn btn-success x-add">
|
||||||
</button>
|
<i class="icon-ok"/>
|
||||||
</span>
|
</button>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{{#if items}}
|
{{#if items}}
|
||||||
|
|
|
@ -130,4 +130,8 @@ li.add-new:hover {
|
||||||
overflow: auto;
|
overflow: auto;
|
||||||
max-height: 300px;
|
max-height: 300px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.validation-errors {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,12 +12,18 @@ define(
|
||||||
var originalBeforeClose = this.prototype.onBeforeClose;
|
var originalBeforeClose = this.prototype.onBeforeClose;
|
||||||
|
|
||||||
var errorHandler = function (response) {
|
var errorHandler = function (response) {
|
||||||
this.model.trigger('validation:failed', response);
|
if (this.model) {
|
||||||
|
this.model.trigger('validation:failed', response);
|
||||||
|
}
|
||||||
|
|
||||||
|
else {
|
||||||
|
this.trigger('validation:failed', response);
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
var validatedSync = function (method, model, options) {
|
var validatedSync = function (method, model, options) {
|
||||||
model.trigger('validation:sync');
|
model.trigger('validation:sync');
|
||||||
// this.$el.removeAllErrors();
|
|
||||||
arguments[2].isValidatedCall = true;
|
arguments[2].isValidatedCall = true;
|
||||||
return model._originalSync.apply(this, arguments).fail(errorHandler.bind(this));
|
return model._originalSync.apply(this, arguments).fail(errorHandler.bind(this));
|
||||||
};
|
};
|
||||||
|
@ -30,22 +36,34 @@ define(
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
var validationFailed = function (response) {
|
||||||
|
if (response.status === 400) {
|
||||||
|
|
||||||
|
var view = this;
|
||||||
|
var validationErrors = JSON.parse(response.responseText);
|
||||||
|
_.each(validationErrors, function (error) {
|
||||||
|
view.$el.processServerError(error);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
this.prototype.onRender = function () {
|
this.prototype.onRender = function () {
|
||||||
|
|
||||||
this.listenTo(this.model, 'validation:sync', function () {
|
if (this.model) {
|
||||||
this.$el.removeAllErrors();
|
this.listenTo(this.model, 'validation:sync', function () {
|
||||||
});
|
this.$el.removeAllErrors();
|
||||||
|
});
|
||||||
|
|
||||||
this.listenTo(this.model, 'validation:failed', function (response) {
|
this.listenTo(this.model, 'validation:failed', validationFailed);
|
||||||
if (response.status === 400) {
|
}
|
||||||
|
|
||||||
var view = this;
|
else {
|
||||||
var validationErrors = JSON.parse(response.responseText);
|
this.listenTo(this, 'validation:sync', function () {
|
||||||
_.each(validationErrors, function (error) {
|
this.$el.removeAllErrors();
|
||||||
view.$el.processServerError(error);
|
});
|
||||||
});
|
|
||||||
}
|
this.listenTo(this, 'validation:failed', validationFailed);
|
||||||
});
|
}
|
||||||
|
|
||||||
Validation.bind(this);
|
Validation.bind(this);
|
||||||
this.bindToModelValidation = bindToModel.bind(this);
|
this.bindToModelValidation = bindToModel.bind(this);
|
||||||
|
|
|
@ -30,10 +30,6 @@ define([
|
||||||
this.targetCollection = options.targetCollection;
|
this.targetCollection = options.targetCollection;
|
||||||
},
|
},
|
||||||
|
|
||||||
onBeforeClose: function () {
|
|
||||||
window.alert('closing down!');
|
|
||||||
},
|
|
||||||
|
|
||||||
_save: function () {
|
_save: function () {
|
||||||
var self = this;
|
var self = this;
|
||||||
var promise = this.model.save();
|
var promise = this.model.save();
|
||||||
|
|
|
@ -9,7 +9,7 @@ define(
|
||||||
var validationName = error.propertyName.toLowerCase();
|
var validationName = error.propertyName.toLowerCase();
|
||||||
|
|
||||||
this.find('.validation-errors')
|
this.find('.validation-errors')
|
||||||
.addClass('alert alert-error')
|
.addClass('alert alert-danger')
|
||||||
.append('<div><i class="icon-exclamation-sign"></i>' + error.errorMessage + '</div>');
|
.append('<div><i class="icon-exclamation-sign"></i>' + error.errorMessage + '</div>');
|
||||||
|
|
||||||
var input = this.find('[name]').filter(function () {
|
var input = this.find('[name]').filter(function () {
|
||||||
|
@ -65,7 +65,7 @@ define(
|
||||||
|
|
||||||
$.fn.removeAllErrors = function () {
|
$.fn.removeAllErrors = function () {
|
||||||
this.find('.error').removeClass('error');
|
this.find('.error').removeClass('error');
|
||||||
this.find('.validation-errors').removeClass('alert').removeClass('alert-error').html('');
|
this.find('.validation-errors').removeClass('alert').removeClass('alert-danger').html('');
|
||||||
this.find('.validation-error').remove();
|
this.find('.validation-error').remove();
|
||||||
return this.find('.help-inline.error-message').remove();
|
return this.find('.help-inline.error-message').remove();
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue