Commit 2307a494 authored by Frank Bergmann's avatar Frank Bergmann

- Fixed issues with DynFields not being taken

parent 8a803576
......@@ -732,42 +732,45 @@ ad_proc -public im_csv_import_guess_parser {
# There can be 0, 1 or multiple dynfields with the field_name,
# unfortunately.
set dynfield_sql "
select dw.widget as tcl_widget,
dw.parameters as tcl_widget_parameters,
substring(dw.parameters from 'category_type \"(.*)\"') as category_type,
aa.attribute_name
from acs_attributes aa,
im_dynfield_attributes da,
im_dynfield_widgets dw
where aa.object_type in ('[join $super_types "','"]') and
aa.attribute_id = da.acs_attribute_id and
da.widget_name = dw.widget_name and
(lower(aa.attribute_name) = lower(trim(:field_name)) OR
lower(aa.attribute_name) = lower(trim(:field_name))||'_id'
)
select dw.widget as tcl_widget,
dw.parameters as tcl_widget_parameters,
substring(dw.parameters from 'category_type \"(.*)\"') as category_type,
aa.attribute_name,
aa.datatype
from acs_attributes aa,
im_dynfield_attributes da,
im_dynfield_widgets dw
where aa.object_type in ('[join $super_types "','"]') and
aa.attribute_id = da.acs_attribute_id and
da.widget_name = dw.widget_name and
(lower(aa.attribute_name) = lower(trim(:field_name)) OR lower(aa.attribute_name) = lower(trim(:field_name))||'_id')
"
# ad_return_complaint 1 [im_ad_hoc_query -format html $dynfield_sql]
set result [list "" "" ""]
set ttt_widget ""
db_foreach dynfields $dynfield_sql {
set ttt_widget $tcl_widget
switch $datatype {
"float" {
set result [list "number" "" $attribute_name]
}
}
switch $tcl_widget {
"im_category_tree" {
set result [list "category" $category_type $attribute_name]
}
"im_cost_center_tree" {
set result [list "cost_center" "" $attribute_name]
}
"checkbox" {
set result [list "boolean" "" $attribute_name]
}
"date" {
set result [list "date" "" $attribute_name]
}
"im_category_tree" { set result [list "category" $category_type $attribute_name] }
"im_cost_center_tree" { set result [list "cost_center" "" $attribute_name] }
"checkbox" { set result [list "boolean" "" $attribute_name] }
"date" { set result [list "date" "" $attribute_name] }
default {
# Default: No specific parser
# text, richtext, textare -> no change (ToDo: quoting?)
# radio, select generic_sql -> custom
set result [list "" "" $attribute_name]
if {[list "" "" ""] eq $result} {
set result [list "" "" $attribute_name]
}
}
}
}
......
......@@ -120,7 +120,7 @@ lappend object_type_pairs "hard_coded" "Hard Coded Functionality"
set cnt 0
foreach header_name $headers {
ns_log Notice "import-2: otype=$object_type, field_name=$header_name"
ns_log Notice "import-2: header_name=$header_name: --------------------------------"
# Column - Name of the CSV colum
set column "<input type=hidden name=column.$cnt value=\"$header_name\">"
......@@ -136,7 +136,7 @@ foreach header_name $headers {
# Guess the object's field to which to map.
set object_field_best_guess [im_csv_import_guess_map -object_type $object_type -field_name $header_name -sample_values $parser_sample_values ]
ns_log Notice "import-2: im_csv_import_guess_map -object_type $object_type -field_name $header_name -sample_values {$parser_sample_values}"
ns_log Notice "import-2: => $object_field_best_guess"
ns_log Notice "import-2: header_name=$header_name: guess_map => $object_field_best_guess"
set guess_parser_field_name $header_name
if {"" != $object_field_best_guess} {
set guess_parser_field_name $object_field_best_guess
......@@ -145,7 +145,7 @@ foreach header_name $headers {
# Guess the parser how to convert the field values
set defs [im_csv_import_guess_parser -object_type $object_type -field_name $guess_parser_field_name -sample_values $parser_sample_values]
ns_log Notice "import-2: im_csv_import_guess_parser -object_type $object_type -field_name $guess_parser_field_name -sample_values {$parser_sample_values}"
ns_log Notice "import-2: => $defs"
ns_log Notice "import-2: header_name=$header_name: guess_parser => $defs"
set default_parser [lindex $defs 0]
set default_parser_args [lindex $defs 1]
set override_map [lindex $defs 2]
......
......@@ -171,8 +171,16 @@ foreach csv_line_fields $values_list_of_lists {
set var_name [im_mangle_unicode_accents $var_name]
set cmd "set $var_name \"$var_value\""
ns_log Notice "import-im_budget_item: cmd=$cmd"
ns_log Notice "import-im_budget_item: #$j: cmd=$cmd"
set result [eval $cmd]
set mapped_var_name $map($j)
if {"" ne $mapped_var_name} {
set cmd "set $mapped_var_name \"$var_value\""
ns_log Notice "import-im_budget_item: #$j: cmd=$cmd"
set result [eval $cmd]
}
}
# -------------------------------------------------------
......@@ -244,15 +252,15 @@ foreach csv_line_fields $values_list_of_lists {
# Status is a required field
set budget_item_status_id [im_id_from_category $budget_item_status "Intranet Budget Item Status"]
if {"" == $budget_item_status_id} {
if {$ns_write_p} { ns_write "<li><font color=brown>Warning: Didn't find budget_item status '$budget_item_status', using default status 'Open'</font>\n" }
set budget_item_status_id [im_budget_item_status_active]
if {$ns_write_p} { ns_write "<li><font color=brown>Warning: Didn't find budget_item status '$budget_item_status', using default status 'Approved'</font>\n" }
set budget_item_status_id [im_budget_item_status_approved]
}
# Type is a required field
set budget_item_type_id [im_id_from_category [list $budget_item_type] "Intranet Budget Item Type"]
if {"" == $budget_item_type_id} {
if {$ns_write_p} { ns_write "<li><font color=brown>Warning: Didn't find budget_item type '$budget_item_type', using default type 'Other'</font>\n" }
set budget_item_type_id [im_budget_item_type_software]
if {$ns_write_p} { ns_write "<li><font color=brown>Warning: Didn't find budget_item type '$budget_item_type', using default type 'Default'</font>\n" }
set budget_item_type_id [im_budget_item_type_default]
}
# -------------------------------------------------------
......@@ -353,7 +361,7 @@ foreach csv_line_fields $values_list_of_lists {
array unset attributes_hash
array set attributes_hash {}
db_foreach store_dynfiels $dynfield_sql {
ns_log Notice "import-im_budget_item: name=$attribute_name, otype=$object_type, table=$table_name"
ns_log Notice "import-im_budget_item: name=$attribute_name, otype=$object_type, table=$table_name, im_opt_val($attribute_name)=[im_opt_val $attribute_name]"
# Avoid storing attributes multipe times into the same table.
# Sub-types can have the same attribute defined as the main type, so duplicate
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment