Project

General

Profile

Custom field date format in JSON API

Added by Ondrej Galbavý over 11 years ago

Hello,

I am integrating Redmine with other PHP based website via JSON API. I have problem with sending date into custom field when creating new issue. I have no idea, what date format it accepts or if it even works.

I have found this validation code in app/models/custom_field.rb:

errs << ::I18n.t('activerecord.errors.messages.not_a_date') unless value.to_s =~ /^\d{4}-\d{2}-\d{2}$/ && begin; value.to_date; rescue; false end

For example '2012-05-06', which matches that regexp, doesn't work. I have tested regexp in irb, and it doesn't work with Date class. If I do value.to_s =~ /.../, then the it passes validation. But then I get another error:

ActionView::TemplateError (undefined method `empty?' for Sun, 06 May 2012:Date) on line #10 of app/views/mailer/_issue.text.erb:
7: <%=l(:field_assigned_to)%>: <%= issue.assigned_to %>
8: <%=l(:field_category)%>: <%= issue.category %>
9: <%=l(:field_fixed_version)%>: <%= issue.fixed_version %>
10: <% issue.custom_field_values.each do |c| %><%= c.custom_field.name %>: <%= show_value(c) %>
11: <% end %>
12:
13: <%= issue.description %>

    lib/redmine/custom_field_format.rb:94:in `format_value'
    app/helpers/custom_fields_helper.rb:123:in `format_value'
    app/helpers/custom_fields_helper.rb:115:in `show_value'
    app/views/mailer/_issue.text.erb:10
    app/views/mailer/_issue.text.erb:10:in `each'
    app/views/mailer/_issue.text.erb:10
    app/views/mailer/issue_add.text.erb:4
    app/models/mailer.rb:475:in `render_multipart'
    app/models/mailer.rb:50:in `issue_add'
    app/models/issue_observer.rb:20:in `after_create'
    /usr/lib64/ruby/1.8/observer.rb:185:in `notify_observers'
    /usr/lib64/ruby/1.8/observer.rb:184:in `each'
    /usr/lib64/ruby/1.8/observer.rb:184:in `notify_observers'
    app/controllers/issues_controller.rb:162:in `create'

Not sure what now... Implement empty? for Date class and see what's next error? Am I doing something wrong? Adding issue through web interface works.

I am using redmine 1.4.3 with some minor not related modifications.

Thanks

Edit:
I can create new issue with filled Date custom field with this:

  <?xml version="1.0"?>
  <issue>
    <subject>Example</subject>
    <project_id>4</project_id>
    <tracker_id>12</tracker_id>
  <custom_fields type="array">
    <custom_field id="17">
      <value>2012-05-06</value>
    </custom_field>
  </custom_fields>
  </issue>

Replies (1)

RE: Custom field date format in JSON API - Added by Cheyenne Wills about 11 years ago

I've run into the exact same problem. Upgraded from Redmine 1.3.2 to Redmine 1.4.5 and some of our scripts died because they errored out on a custom date field.

I created a real ugly patch to fix it, I removed the regular expression test in app/models/custom_field.rb just as you did, but I also added a little bit of code to lib/redmine/custom_field_format.rb to test to see if the format type is 'date' before doing the ?empty test.

I'm going to report this as a bug.

    (1-1/1)