Index: openacs-4/packages/assessment/tcl/as-session-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/assessment/tcl/as-session-procs.tcl,v diff -u -r1.3 -r1.4 --- openacs-4/packages/assessment/tcl/as-session-procs.tcl 22 Nov 2004 11:59:23 -0000 1.3 +++ openacs-4/packages/assessment/tcl/as-session-procs.tcl 12 Jun 2006 02:49:50 -0000 1.4 @@ -31,21 +31,31 @@ # db_0or1row as_session_last {SELECT session_id AS as_session_id FROM as_sessionsx WHERE subject_id = :subject_id AND assessment_id = :assessment_id} # if { ! [info exists as_session_id] } { # Insert as_session in the CR (and as_sessions table) getting the revision_id (session_id) - set session_id [content::item::new -parent_id $folder_id -content_type {as_sessions} -name "$subject_id-$assessment_id-[exec uuidgen]" -title "$subject_id-$assessment_id-[exec uuidgen]" ] - set as_session_id [content::revision::new \ - -item_id $session_id \ - -content_type {as_sessions} \ - -title "$subject_id-$assessment_id-[exec uuidgen]" \ - -attributes [list [list assessment_id $assessment_id] \ - [list subject_id $subject_id] \ - [list staff_id $staff_id] \ - [list target_datetime $target_datetime] \ - [list creation_datetime $creation_datetime] \ - [list first_mod_datetime $first_mod_datetime] \ - [list last_mod_datetime $last_mod_datetime] \ - [list completed_datetime $completed_datetime] \ - [list percent_score $percent_score] \ - [list consent_timestamp $consent_timestamp] ] ] + + set transaction_successful_p 0 + + while { ! $transaction_successful_p } { + db_transaction { + set session_id [content::item::new -parent_id $folder_id -content_type {as_sessions} -name "$subject_id-$assessment_id-[as::item::generate_unique_name]" -title "$subject_id-$assessment_id-[as::item::generate_unique_name]" ] + set as_session_id [content::revision::new \ + -item_id $session_id \ + -content_type {as_sessions} \ + -title "$subject_id-$assessment_id-[as::item::generate_unique_name]" \ + -attributes [list [list assessment_id $assessment_id] \ + [list subject_id $subject_id] \ + [list staff_id $staff_id] \ + [list target_datetime $target_datetime] \ + [list creation_datetime $creation_datetime] \ + [list first_mod_datetime $first_mod_datetime] \ + [list last_mod_datetime $last_mod_datetime] \ + [list completed_datetime $completed_datetime] \ + [list percent_score $percent_score] \ + [list consent_timestamp $consent_timestamp] ] ] + set transaction_successful_p 1 + } on_error { + ns_log notice "as::session::new: Transaction Error: $errmsg" + } + } # } return $as_session_id }