Commit f8848943 authored by jago's avatar jago

- CSV Import:

  Fixed and improved project import functionality
parent 2bb0ca0b
......@@ -336,7 +336,7 @@ ad_proc -public im_csv_import_guess_parser {
im_project - im_timesheet_task - im_ticket {
switch $field_name {
parent_nrs { return [list "hard_coded" "" ""] }
customer_name { return [list "hard_coded" "" ""] }
customer_name { return [list "hard_coded" "" "company_id"] }
project_status { return [list "hard_coded" "" "project_status_id"] }
project_type { return [list "hard_coded" "" "project_type_id"] }
on_track_status { return [list "hard_coded" "" "on_track_status_id"] }
......
......@@ -49,8 +49,6 @@ if {"" == $return_url} {
}
}
# strip off the C:\directories... crud and just get the file name
if ![regexp {([^//\\]+)$} $upload_file match filename] {
# couldn't find a match
......@@ -146,7 +144,16 @@ foreach header_name $headers {
set val [lindex [set $row_name] $cnt]
if {"" != $val} { lappend parser_sample_values $val }
}
set defs [im_csv_import_guess_parser -object_type $object_type -field_name $header_name -sample_values $parser_sample_values]
# 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: otype=$object_type, field_name=$header_name => field=$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 }
# 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: otype=$object_type, field_name=$header_name => parser=$defs"
set default_parser [lindex $defs 0]
set default_parser_args [lindex $defs 1]
......@@ -155,7 +162,7 @@ foreach header_name $headers {
set args "<input type=text name=parser_args.$cnt value=\"$default_parser_args\">\n"
# Mapping - Map to which object field?
set default_map [im_csv_import_guess_map -object_type $object_type -field_name $header_name -sample_values $parser_sample_values]
set default_map $object_field_best_guess
if {"" != $override_map} { set default_map $override_map }
set map [im_select map.$cnt $object_type_pairs $default_map]
......
......@@ -21,6 +21,8 @@ ad_page_contract {
parser_args:array
}
# ad_return_complaint 1 "<pre>\n\n[array get column]\n\n[array get map]\n\n[array get parser]\n\n[array get parser_args]\n\n</pre>"
# ---------------------------------------------------------------------
# Default & Security
# ---------------------------------------------------------------------
......@@ -76,6 +78,7 @@ foreach k [array names map] {
lappend mapped_vars "'$map($k)'"
}
set dynfield_sql "
select distinct
aa.attribute_name,
......@@ -168,7 +171,7 @@ foreach csv_line_fields $values_list_of_lists {
set sort_order ""
foreach attribute_name $attribute_names {
set $attribute_name ""
set $attribute_name ""
}
# -------------------------------------------------------
......@@ -314,11 +317,8 @@ foreach csv_line_fields $values_list_of_lists {
set company_id $customer_id
if {"" == $customer_id } {
if {$ns_write_p} {
ns_write "<li><font color=red>Error: Didn't find customer for '$customer_name'.<br>
Every projects needs a valid customer. Please correct the CSV file.</font>\n"
}
continue
set customer_id [im_company_internal]
if {$ns_write_p} { ns_write "<li><font color=brown>Warning: Didn't find customer_name='$customer_name', using 'internal' customer</font>\n" }
}
set project_lead_id [im_id_from_user_name $project_manager]
......
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