Sha256: cca069e455d1cf3949301010271f5a7deff68e3bf95d61206e3962a5d97f74fe

Contents?: true

Size: 1.63 KB

Versions: 30

Compression:

Stored size: 1.63 KB

Contents

# TODO Add base settings to validation
# model = window.model

  # TODO implement method
# model[resource].validators_on 'field' # Get all validators related to this field

root  = exports ? window

validations = require '../validatable'
rest        = require '../rest'
stampit     = require '../../../vendor/stampit'

remoteable = stampit
  validate_each: (record, attribute, value) ->
    data = @json record

    # TODO best partial application
    # @post(data).done(_.partial @succeeded, record)
    @post(data).done((json) => @succeeded(json, record))

  json: (record) ->
    param = @resource.param_name || @resource.toString()

    data = {}
    data[param] = record.json()

    # TODO stop renaming id field, lol
    data[param].id ||= data[param]._id
    delete data[param]._id

    data

  # TODO Use rest.post
  post: (data) ->

    jQuery.ajax
      url     : @route
      data    : data
      type    : 'post'
      dataType: 'json'
      context : @

  succeeded: (json, record) ->
    error_messages = json[@attribute_name]

    return unless error_messages

    for error_message in error_messages
      record.errors.add @attribute_name, 'server', server_message: error_message
,
  message: "Remote validation failed"
  route: null
, ->
  # TODO discover why @model.route is coming null!
  # Desglobalize model constant
  pluralized_resource  = model.pluralize @model.resource.toString()
  @resource            = @model.resource
  @route             ||= "/#{pluralized_resource}/validate"
  @


composed = stampit.compose(validations.validatable, remoteable)
composed.definition_key = 'validates_remotely'

validations.manager.validators.remote = composed

Version data entries

30 entries across 30 versions & 1 rubygems

Version Path
ende-0.3.13 vendor/components/indefinido-indemma/src/lib/record/validations/remote.coffee
ende-0.3.12 vendor/components/indefinido-indemma/src/lib/record/validations/remote.coffee
ende-0.3.11 vendor/components/indefinido-indemma/src/lib/record/validations/remote.coffee
ende-0.3.10 vendor/components/indefinido-indemma/src/lib/record/validations/remote.coffee
ende-0.3.9 vendor/components/indefinido-indemma/src/lib/record/validations/remote.coffee
ende-0.3.8 vendor/components/indefinido-indemma/src/lib/record/validations/remote.coffee
ende-0.3.7 vendor/components/indefinido-indemma/src/lib/record/validations/remote.coffee
ende-0.3.6 vendor/components/indefinido-indemma/src/lib/record/validations/remote.coffee
ende-0.3.5 vendor/components/indefinido-indemma/src/lib/record/validations/remote.coffee
ende-0.3.4 vendor/components/indefinido-indemma/src/lib/record/validations/remote.coffee
ende-0.3.3 vendor/components/indefinido-indemma/src/lib/record/validations/remote.coffee
ende-0.3.2 vendor/components/indefinido-indemma/src/lib/record/validations/remote.coffee
ende-0.3.1 vendor/components/indefinido-indemma/src/lib/record/validations/remote.coffee
ende-0.3.0 vendor/components/indefinido-indemma/src/lib/record/validations/remote.coffee
ende-0.2.21 vendor/components/indefinido-indemma/src/lib/record/validations/remote.coffee
ende-0.2.20 vendor/components/indefinido-indemma/src/lib/record/validations/remote.coffee
ende-0.2.19 vendor/components/indefinido-indemma/src/lib/record/validations/remote.coffee
ende-0.2.18 vendor/components/indefinido-indemma/src/lib/record/validations/remote.coffee
ende-0.2.17 vendor/components/indefinido-indemma/src/lib/record/validations/remote.coffee
ende-0.2.16 vendor/components/indefinido-indemma/src/lib/record/validations/remote.coffee