<< 20160714-fix-encoding-issue-sandoz-bbmb-ch | Index | 20160712-migrate-davaz-com-dojo-widgets >>
Current progress is below. Today I would like to migrate EditWidget and some other widgets for admin page.
This error is cased by new mysql2 gem, it parse already date automatically.
Then I've avoided this error with using date value directly.
error in SBSM::Session#http_headers: /en/gallery/art_object/artgroup_id/DRA/artobject_id/48 TypeError no implicit conversion of Date into String /path/to/davaz.com/src/view/art_object.rb:612:in `parse' /path/to/davaz.com/src/view/art_object.rb:612:in `date' /path/to/davaz.com/.bundle/gems/ruby/2.3.0/gems/htmlgrid-1.1.1/lib/htmlgrid/composite.rb:68:in `create' /path/to/davaz.com/.bundle/gems/ruby/2.3.0/gems/htmlgrid-1.1.1/lib/htmlgrid/composite.rb:282:in `compose_component' /path/to/davaz.com/.bundle/gems/ruby/2.3.0/gems/htmlgrid-1.1.1/lib/htmlgrid/composite.rb:211:in `block in compose'
Commit:Fix gallery art object error
When user is logged in as admin, then at following url, error is caused:
/en/gallery/art_object/artgroup_id/DRA/artobject_id/48
NameError undefined local variable or method `artgroup_id' for #<DAVAZ::View::AdminArtobjectDetails:0x0056339b5d6c70>
Commit:Fix artobject group_id error
First, I have to fix some javascript functions on davaz.js with dojo 1.7 and ajax responses, before to use edit widget.
Commit: Fix checkRemovalStatus function
Following url (api for ajax function) does not return JSON. /en/gallery/ajax_check_removal_status/artobject_id/48/select_name/material_id/selected_id/
Fix removal state checking.
Commit: Fix admin ajax form update for art object
Following ajax requests return valid HTML result, but its do not show.
I have to fix these javascript behaviors, as next
/en/gallery/ajax_add_form/artobject_id/48/name/serie
Add New Serie
/en/gallery/ajax_all_tags/
Show All Tags
/en/gallery/ajax_add_form/artobject_id/48/name/tool
Add New Tool
/en/gallery/ajax_add_form/artobject_id/48/name/material
Add New Material
Login does not work.
I've found a problem in login form.
This action is strange. It must be /de
(only language parameter).
What is this sbsm
?
<form action="/de/sbsm" ...>
This was FLAVOR comes from This line (session.rb#L42) (sbsm).
And I've asked Zeno-san, Which is best to fix this (SBSM or Application(sandoz.xmlconv.bbmb.ch)).
Finally, I've fixed this issue on lookandfeel.rb
(in application)
Lookandfeel class has base_url
method. In current newest sbsm, base_url expects @flavor
in its URL.
This was problem for old application (like davaz.com, sandoz.xmlconv.bbmb.ch)
Newest SBSM does not have already these non-flavoerd URL support (See also TransHandler)
I've created a small pull request to support this.
Pull request: Fix flavored `base_url` issue
This is also same issue with sandoz.xmlconv.bbmb.ch.
Pull Requst: Fix flavored `base_url` issue
Where did this strange characters come from?
# How to boot bin/admin for sandoz.bbmb.ch (ruby 2.3.1) % sudo -u bbmb /usr/local/bin/ruby \ -I/var/www/sandoz.bbmb.ch/lib \ -rydim/invoice \ /path/to/bbmb_admin config=/var/www/sandoz.bbmb.ch/etc/config.yml
So, I've checked directly data via this bin/admin
.
I seems that these strange characters come from database...
# Input (via bin/admin) ch.bbmb.sandoz> puts BBMB::Model::Customer.find_by_customer_id('4100609297').organisation -> true ch.bbmb.sandoz> puts BBMB::Model::Customer.find_by_customer_id('4100609297').organisation.encoding -> true # Output (server process) @40000000578696d11b9a3efc E, [2016-07-13T21:30:15.462950 #31846] ERROR -- admin: AH Pharmacie Dr Thiémard SA @40000000578697e033595ce4 E, [2016-07-13T21:34:46.861377 #31846] ERROR -- admin: #<Encoding:UTF-8>
These text has encoding as UTF-8
# Input (via bin/admin) ch.bbmb.sandoz> puts BBMB::Model::Customer.find_by_customer_id('4100609297').organisation -> true # Output (server process) @40000000578697391a0faf2c E, [2016-07-13T21:31:59.437120 #31846] ERROR -- admin: Thiémard
I've tried convert (back) as Encoding::ISO_8859_1
.
Then, I could get valid text!
# Input (via bin/admin) ch.bbmb.sandoz> puts BBMB::Model::Customer.find_by_customer_id('4100609297').organisation.encode(Encoding::ISO_8859_1) -> true @4000000057869870116fd824 E, [2016-07-13T21:37:10.292431 #31846] ERROR -- admin: AH Pharmacie Dr Thiémard SA
There are some possibilities:
ISO-8859-1
, but code reads as already UTF-8
.
UTF-8
, but encoded as wrong character.
I've tried manually encode
as experiment. Then it seems that this works as expectedly.
# Input (via bin/admin) ch.bbmb.sandoz> puts BBMB::Model::Customer.find_by_customer_id('4100609297') \ .lastname.encode(Encoding::ISO_8859_1).force_encoding(Encoding::UTF_8) -> true ch.bbmb.sandoz> puts BBMB::Model::Customer.find_by_customer_id('4100609297') \ .lastname.encode(Encoding::ISO_8859_1).force_encoding(Encoding::UTF_8).encoding -> true # Output @4000000057869b0d2fbdc764 E, [2016-07-13T21:48:19.800822 #31846] ERROR -- admin: Thiémard @4000000057869b1604186c7c E, [2016-07-13T21:48:28.068590 #31846] ERROR -- admin: #<Encoding:UTF-8>
And it has valid encdoing.
# Input (via bin/admin) ch.bbmb.sandoz> puts BBMB::Model::Customer.find_by_customer_id('4100609297').lastname.valid_encoding? -> true # Output @4000000057869d051fe2394c E, [2016-07-13T21:56:43.534799 #31846] ERROR -- admin: true
So, I've written a oneliner to change text encoding for a customer. (e.g. customer_id: 4100609297)
This force_encoding
is key.
This does not save (odba_store
) in database yet.
# Input (via bin/admin) ch.bbmb.sandoz> c = BBMB::Model::Customer.find_by_customer_id('4100609297'); \ puts c.instance_variables.map {|var| [var, c.instance_variable_get(var)] }.select { \ |k, v| v.is_a?(String) ? [k, v] : nil }.compact.map { \ |k, t| [k, t.force_encode(Encoding::ISO_8859_1).encode(Encoding::UTF_8)] } # Output @400000005786a1782c77cfdc E, [2016-07-13T22:15:42.745874 #31846] ERROR -- admin: \ [[:@ean13, "7601001392335"], [:@firstname, "Christian"], [:@fax, "026 321 12 12"], \ [:@city, "Fribourg"], [:@address1, "Boulevard de Pérolles 6"], [:@title, "Docteur"], \ [:@organisation, "AH Pharmacie Dr Thiémard SA"], [:@plz, "1700"], \ [:@phone_business, "026 321 50 00"], [:@customer_id, "4100609297"], [:@lastname, "Thiémard"]]
This is updater with odba_store
# Input (via bin/admin) ch.bbmb.sandoz> c = BBMB::Model::Customer.find_by_customer_id('4100609297'); \ c.instance_variables.map {|var| [var, c.instance_variable_get(var)] }.select { \ |k, v| v.is_a?(String) ? [k, v] : nil }.compact.map { \ |k, t| [k, t.force_encoding(Encoding::ISO_8859_1).encode(Encoding::UTF_8)] }.map { \ |var, val| c.instance_variable_set(var, val) }; c.odba_store -> #<BBMB::Model::Customer:0x007f8d8ab8a848>
Then It works.
Continue tomorrow.
I will write updater script (or update bbmb_migrate_to_utf8
script)