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 { ...@@ -732,42 +732,45 @@ ad_proc -public im_csv_import_guess_parser {
# There can be 0, 1 or multiple dynfields with the field_name, # There can be 0, 1 or multiple dynfields with the field_name,
# unfortunately. # unfortunately.
set dynfield_sql " set dynfield_sql "
select dw.widget as tcl_widget, select dw.widget as tcl_widget,
dw.parameters as tcl_widget_parameters, dw.parameters as tcl_widget_parameters,
substring(dw.parameters from 'category_type \"(.*)\"') as category_type, substring(dw.parameters from 'category_type \"(.*)\"') as category_type,
aa.attribute_name aa.attribute_name,
from acs_attributes aa, aa.datatype
im_dynfield_attributes da, from acs_attributes aa,
im_dynfield_widgets dw im_dynfield_attributes da,
where aa.object_type in ('[join $super_types "','"]') and im_dynfield_widgets dw
aa.attribute_id = da.acs_attribute_id and where aa.object_type in ('[join $super_types "','"]') and
da.widget_name = dw.widget_name and aa.attribute_id = da.acs_attribute_id and
(lower(aa.attribute_name) = lower(trim(:field_name)) OR da.widget_name = dw.widget_name and
lower(aa.attribute_name) = lower(trim(:field_name))||'_id' (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 result [list "" "" ""]
set ttt_widget "" set ttt_widget ""
db_foreach dynfields $dynfield_sql { db_foreach dynfields $dynfield_sql {
set ttt_widget $tcl_widget set ttt_widget $tcl_widget
switch $datatype {
"float" {
set result [list "number" "" $attribute_name]
}
}
switch $tcl_widget { switch $tcl_widget {
"im_category_tree" { "im_category_tree" { set result [list "category" $category_type $attribute_name] }
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] }
"im_cost_center_tree" { "date" { set result [list "date" "" $attribute_name] }
set result [list "cost_center" "" $attribute_name]
}
"checkbox" {
set result [list "boolean" "" $attribute_name]
}
"date" {
set result [list "date" "" $attribute_name]
}
default { default {
# Default: No specific parser # Default: No specific parser
# text, richtext, textare -> no change (ToDo: quoting?) # text, richtext, textare -> no change (ToDo: quoting?)
# radio, select generic_sql -> custom # 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" ...@@ -120,7 +120,7 @@ lappend object_type_pairs "hard_coded" "Hard Coded Functionality"
set cnt 0 set cnt 0
foreach header_name $headers { 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 # Column - Name of the CSV colum
set column "<input type=hidden name=column.$cnt value=\"$header_name\">" set column "<input type=hidden name=column.$cnt value=\"$header_name\">"
...@@ -136,7 +136,7 @@ foreach header_name $headers { ...@@ -136,7 +136,7 @@ foreach header_name $headers {
# Guess the object's field to which to map. # 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 ] 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: 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 set guess_parser_field_name $header_name
if {"" != $object_field_best_guess} { if {"" != $object_field_best_guess} {
set guess_parser_field_name $object_field_best_guess set guess_parser_field_name $object_field_best_guess
...@@ -145,7 +145,7 @@ foreach header_name $headers { ...@@ -145,7 +145,7 @@ foreach header_name $headers {
# Guess the parser how to convert the field values # 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] 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: 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 [lindex $defs 0]
set default_parser_args [lindex $defs 1] set default_parser_args [lindex $defs 1]
set override_map [lindex $defs 2] set override_map [lindex $defs 2]
......
...@@ -171,8 +171,16 @@ foreach csv_line_fields $values_list_of_lists { ...@@ -171,8 +171,16 @@ foreach csv_line_fields $values_list_of_lists {
set var_name [im_mangle_unicode_accents $var_name] set var_name [im_mangle_unicode_accents $var_name]
set cmd "set $var_name \"$var_value\"" 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 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 { ...@@ -244,15 +252,15 @@ foreach csv_line_fields $values_list_of_lists {
# Status is a required field # Status is a required field
set budget_item_status_id [im_id_from_category $budget_item_status "Intranet Budget Item Status"] set budget_item_status_id [im_id_from_category $budget_item_status "Intranet Budget Item Status"]
if {"" == $budget_item_status_id} { 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" } 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_active] set budget_item_status_id [im_budget_item_status_approved]
} }
# Type is a required field # Type is a required field
set budget_item_type_id [im_id_from_category [list $budget_item_type] "Intranet Budget Item Type"] set budget_item_type_id [im_id_from_category [list $budget_item_type] "Intranet Budget Item Type"]
if {"" == $budget_item_type_id} { 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" } 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_software] set budget_item_type_id [im_budget_item_type_default]
} }
# ------------------------------------------------------- # -------------------------------------------------------
...@@ -353,7 +361,7 @@ foreach csv_line_fields $values_list_of_lists { ...@@ -353,7 +361,7 @@ foreach csv_line_fields $values_list_of_lists {
array unset attributes_hash array unset attributes_hash
array set attributes_hash {} array set attributes_hash {}
db_foreach store_dynfiels $dynfield_sql { 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. # Avoid storing attributes multipe times into the same table.
# Sub-types can have the same attribute defined as the main type, so duplicate # 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