Index: openacs-4/packages/oct-election/oct-election.info =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/oct-election/oct-election.info,v diff -u -N -r1.3.2.1 -r1.3.2.2 --- openacs-4/packages/oct-election/oct-election.info 7 Nov 2005 19:51:49 -0000 1.3.2.1 +++ openacs-4/packages/oct-election/oct-election.info 17 Nov 2006 15:10:27 -0000 1.3.2.2 @@ -8,12 +8,15 @@ f oct-election - + Joel Aufrecht Web app for voting in OCT elections. + + + Index: openacs-4/packages/oct-election/sql/postgresql/oct-election-create.sql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/oct-election/sql/postgresql/oct-election-create.sql,v diff -u -N -r1.1.1.1 -r1.1.1.1.4.1 --- openacs-4/packages/oct-election/sql/postgresql/oct-election-create.sql 14 May 2005 19:49:49 -0000 1.1.1.1 +++ openacs-4/packages/oct-election/sql/postgresql/oct-election-create.sql 17 Nov 2006 15:10:27 -0000 1.1.1.1.4.1 @@ -5,7 +5,8 @@ end_time timestamptz, vote_forum_cutoff timestamptz, number_of_candidates integer, - label varchar(100) + label varchar(100), + cvs_history_days integer ); create table oct_candidate ( Index: openacs-4/packages/oct-election/sql/postgresql/upgrade/upgrade-1.0.1-1.0.2.sql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/oct-election/sql/postgresql/upgrade/upgrade-1.0.1-1.0.2.sql,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/oct-election/sql/postgresql/upgrade/upgrade-1.0.1-1.0.2.sql 17 Nov 2006 15:10:27 -0000 1.1.2.1 @@ -0,0 +1,11 @@ +-- +-- +-- +-- @author Victor Guerra (guerra@galileo.edu) +-- @creation-date 2006-10-03 +-- @arch-tag: 56805ca6-5f68-4ef7-883f-9026e46fcfa1 +-- @cvs-id $Id: upgrade-1.0.1-1.0.2.sql,v 1.1.2.1 2006/11/17 15:10:27 victorg Exp $ +-- + +alter table oct_election add column cvs_history_days integer; +update oct_election set cvs_history_days = 0; Index: openacs-4/packages/oct-election/tcl/oct-election-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/oct-election/tcl/oct-election-procs.tcl,v diff -u -N -r1.1.1.1.4.1 -r1.1.1.1.4.2 --- openacs-4/packages/oct-election/tcl/oct-election-procs.tcl 7 Nov 2005 19:51:49 -0000 1.1.1.1.4.1 +++ openacs-4/packages/oct-election/tcl/oct-election-procs.tcl 17 Nov 2006 15:10:28 -0000 1.1.1.1.4.2 @@ -54,13 +54,40 @@ set text "You are not a valid voter for this election because you have not posted at least twice in the OpenACS forums since $pretty_vote_forum_cutoff. See OpenACS Governance" return [list $status $text] } - + + #Checking CVS commit history + set cvs_user [acs_user::get_element -user_id $user_id -element username] + set cvs_history_days [db_string get_cvs_days { + select cvs_history_days + from oct_election + where election_id = :election_id + } ] + if {$cvs_history_days eq 0} { + set cvs_history_days "all" + } + set service_url "http://xarg.net/tools/cvs/rss/?user=$cvs_user&days=$days" + if {![catch { + set commit_info [ns_httpget $service_url] + } errmsg] } { + set doc [dom parse $commit_info] + set root_node [$doc documentElement] + set commits [llength [$root_node selectNodes /rss/channel/item]] + if {!$commits} { + set status 0 + set text "You are not a valid voter for this election because you have not committed in the CVS Repository in the last $cvs_history_days. See OpenACS Governance" + return [list $status $text] + } + } else { + set status 0 + set text "We can not confirm your commit history in our CVS Repository, so you can not vote at this moment." + return [list $status $text] + } + if {!$past_start_p} { set status 0 set text "The election will not begin until [lc_time_fmt $start_time %c]" return [list $status $text] } - if {$past_end_p} { set status 0 set text "The election ended at [lc_time_fmt $end_time %c]" Index: openacs-4/packages/oct-election/www/election-edit.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/oct-election/www/election-edit.tcl,v diff -u -N -r1.2.2.1 -r1.2.2.2 --- openacs-4/packages/oct-election/www/election-edit.tcl 7 Nov 2005 19:51:49 -0000 1.2.2.1 +++ openacs-4/packages/oct-election/www/election-edit.tcl 17 Nov 2006 15:10:29 -0000 1.2.2.2 @@ -15,6 +15,7 @@ {start_time:text {label "Start Time (2005-04-01 10:00PST)"}} {end_time:text {label "End Time"}} {vote_forum_cutoff:text {label "Forum Posting cutoff date (2005-04-01 10:00PST)"}} + {cvs_history_days:text {label "Number of days for checking Commit History"}} {number_of_candidates:integer {label "Number of Candidates"}} } -new_request { auth::require_login @@ -31,6 +32,7 @@ end_time, label, vote_forum_cutoff, + cvs_history_days, number_of_candidates from oct_election where election_id = :election_id; @@ -40,17 +42,18 @@ } -new_data { db_dml create_election { insert into oct_election - (start_time, end_time, number_of_candidates, vote_forum_cutoff, label) - values (:start_time, :end_time, :number_of_candidates, :vote_forum_cutoff, :label); + (start_time, end_time, number_of_candidates, vote_forum_cutoff, label, cvs_history_days) + values (:start_time, :end_time, :number_of_candidates, :vote_forum_cutoff, :label, :cvs_history_days); } } -edit_data { db_dml update_election { update oct_election set start_time = :start_time, end_time = :end_time, vote_forum_cutoff = :vote_forum_cutoff, + cvs_history_days = :cvs_history_days, number_of_candidates = :number_of_candidates, - label = :label + label = :label where election_id = :election_id} ad_returnredirect [export_vars -base election {election_id}] } Index: openacs-4/packages/oct-election/www/election.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/oct-election/www/election.adp,v diff -u -N -r1.2.2.1 -r1.2.2.2 --- openacs-4/packages/oct-election/www/election.adp 7 Nov 2005 19:51:49 -0000 1.2.2.1 +++ openacs-4/packages/oct-election/www/election.adp 17 Nov 2006 15:10:29 -0000 1.2.2.2 @@ -7,6 +7,7 @@

Start time: @pretty_start_time@

End time: @pretty_end_time@

Forum cutoff date: @pretty_vote_forum_cutoff@ +

Check CVS Commit History for the las @cvs_history_days@ days

Ballots: @ballot_count@

Edit

Index: openacs-4/packages/oct-election/www/election.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/oct-election/www/election.tcl,v diff -u -N -r1.3.2.2 -r1.3.2.3 --- openacs-4/packages/oct-election/www/election.tcl 16 May 2006 04:14:55 -0000 1.3.2.2 +++ openacs-4/packages/oct-election/www/election.tcl 17 Nov 2006 15:10:29 -0000 1.3.2.3 @@ -16,6 +16,7 @@ vote_forum_cutoff, number_of_candidates, label, + cvs_history_days, (case when now() > start_time then 1 else 0 end) as past_start_p, (case when now() > end_time then 1 else 0 end) as past_end_p from oct_election Index: openacs-4/packages/oct-election/www/find-match-cvs-users-2.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/oct-election/www/find-match-cvs-users-2.adp,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/oct-election/www/find-match-cvs-users-2.adp 17 Nov 2006 15:10:29 -0000 1.1.2.1 @@ -0,0 +1,14 @@ + + @title@ + @context@ + + + + +
  • @users.last_name@, @users.first_names@ (@users.email@) - CVS user: @users.username@
  • +
    + +
  • @users.last_name@, @users.first_names@ (@users.email@)
  • +
    +
    + Index: openacs-4/packages/oct-election/www/find-match-cvs-users-2.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/oct-election/www/find-match-cvs-users-2.tcl,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/oct-election/www/find-match-cvs-users-2.tcl 17 Nov 2006 15:10:29 -0000 1.1.2.1 @@ -0,0 +1,42 @@ +# + +ad_page_contract { + + + + @author Victor Guerra (guerra@galileo.edu) + @creation-date 2006-11-17 + @arch-tag: e71ac791-82c4-4e2d-9bc6-9d773c882bd3 + @cvs-id $Id: find-match-cvs-users-2.tcl,v 1.1.2.1 2006/11/17 15:10:29 victorg Exp $ +} { + search_text + cvs_user:notnull +} -properties { +} -validate { +} -errors { +} + +if {![acs_user::site_wide_admin_p]} { + ad_return_complaint 1 "You have no permission to manage cvs users!" +} + +set search_text [string trim $search_text] +set title "Searching user" +set context [list $title] + +db_multirow users select_users { + select pe.person_id, + pe.first_names, + pe.last_name, + pa.email, + us.username + from persons pe, parties pa, users us + where pe.person_id = pa.party_id + and pe.person_id = us.user_id + and (lower(last_name) like lower('%' || :search_text || '%') + or lower(first_names) like lower('%' || :search_text || '%') + or lower(email) like lower('%' || :search_text || '%')) +} { +} + +ad_return_template Index: openacs-4/packages/oct-election/www/find-match-cvs-users.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/oct-election/www/find-match-cvs-users.adp,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/oct-election/www/find-match-cvs-users.adp 17 Nov 2006 15:10:29 -0000 1.1.2.1 @@ -0,0 +1,8 @@ + + @title@ + @context@ + +
    + Find a user match for cvs user: @cvs_user@ + +
    Index: openacs-4/packages/oct-election/www/find-match-cvs-users.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/oct-election/www/find-match-cvs-users.tcl,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/oct-election/www/find-match-cvs-users.tcl 17 Nov 2006 15:10:29 -0000 1.1.2.1 @@ -0,0 +1,23 @@ +# + +ad_page_contract { + + Matchs a openacs.org user with a given cvs user. + + @author Victor Guerra (guerra@galileo.edu) + @creation-date 2006-11-17 + @arch-tag: bb0f9ebe-7f89-4e2c-a40e-e0086ff80d70 + @cvs-id $Id: find-match-cvs-users.tcl,v 1.1.2.1 2006/11/17 15:10:29 victorg Exp $ + } { + cvs_user:notnull +} -properties { +} -validate { +} -errors { +} + +if {![acs_user::site_wide_admin_p]} { + ad_return_complaint 1 "You have no permission to manage cvs users!" +} + +set title "Searching user" +set context [list $title] Index: openacs-4/packages/oct-election/www/match-cvs-users-2.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/oct-election/www/match-cvs-users-2.tcl,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/oct-election/www/match-cvs-users-2.tcl 17 Nov 2006 15:10:29 -0000 1.1.2.1 @@ -0,0 +1,26 @@ +# + +ad_page_contract { + + Assigns a given cvs user ( useranem ) for a given user + + @author Victor Guerra (guerra@galileo.edu) + @creation-date 2006-11-17 + @arch-tag: ba6f1ea5-8703-4ff3-8f17-9e0b5f3aeae3 + @cvs-id $Id: match-cvs-users-2.tcl,v 1.1.2.1 2006/11/17 15:10:29 victorg Exp $ +} { + user_id:integer,notnull + cvs_user:notnull +} -properties { +} -validate { +} -errors { +} + +if {![acs_user::site_wide_admin_p]} { + ad_return_complaint 1 "You have no permission to manage cvs users!" +} + +acs_user::update -user_id $user_id \ + -username $cvs_user + +ad_returnredirect match-cvs-users \ No newline at end of file Index: openacs-4/packages/oct-election/www/match-cvs-users.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/oct-election/www/match-cvs-users.adp,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/oct-election/www/match-cvs-users.adp 17 Nov 2006 15:10:29 -0000 1.1.2.1 @@ -0,0 +1,5 @@ + + @title@ + @context@ + + Index: openacs-4/packages/oct-election/www/match-cvs-users.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/oct-election/www/match-cvs-users.tcl,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/oct-election/www/match-cvs-users.tcl 17 Nov 2006 15:10:29 -0000 1.1.2.1 @@ -0,0 +1,97 @@ +# + +ad_page_contract { + + This script tries to match the cvs accounts with the openacs.org accounts + + @author Victor Guerra (guerra@galileo.edu) + @creation-date 2006-11-13 + @arch-tag: 868cdf88-cbc4-4e37-8f6c-ba7caab5d2cd + @cvs-id $Id: match-cvs-users.tcl,v 1.1.2.1 2006/11/17 15:10:29 victorg Exp $ +} { + +} -properties { +} -validate { +} -errors { +} + +if {![acs_user::site_wide_admin_p]} { + ad_return_complaint 1 "You have no permission to manage cvs users!" +} + +set title "CVS Users Sync" +set context [list $title] +set cvs_users_file "[acs_root_dir]/cvs_users.txt" + +if {![file exists $cvs_users_file]} { + ad_return_complaint 1 "file cvs_users.txt not found!!, it should be under [acs_root_dir]" +} + +set fp [open $cvs_users_file r] +set cvs_users [read $fp] +close $fp + +template::list::create \ + -name users_info \ + -multirow users_info \ + -key line_id \ + -elements { + line_id { + label "Line \#" + html { align center } + } + cvs_user { + label "CVS User" + display_template { @users_info.cvs_user@ } + html { align center} + } + associated_user { + label "openacs.org user" + html { align center } + } + possible_user { + label "Possible openacs.org user" + display_template { @users_info.possible_user;noquote@ } + html { align center} + } + actions { + label "Actions" + display_template { @users_info.actions;noquote@} + html { align center } + } + } + +multirow create users_info line_id cvs_user associated_user possible_user actions + +set line_number 0 +foreach line [split $cvs_users "\n"] { + set actions "-" + set associated_user "" + set possible_user "" + incr line_number + set line_splitted [split $line ":"] + set cvs_user [lindex $line_splitted 0] + + if {$cvs_user ne ""} { + set user_names [lindex $line_splitted 4] + set user_id [acs_user::get_by_username -username $cvs_user] + if {$user_id ne ""} { + acs_user::get -user_id $user_id -array user_info + set associated_user "$user_info(name) ($user_info(email))" + } else { + regsub " " [string tolower $user_names] "" lower_user_names + foreach person_id [db_list get_persons { + select person_id from persons + where lower(replace(first_names || last_name, ' ', '')) = :lower_user_names + }] { + acs_user::get -user_id $person_id -array user_info + append possible_user "$user_info(name) ($user_info(email)) match
    " + } + } + if {$associated_user eq "" && $possible_user eq ""} { + set actions "Find a match" + } + multirow append users_info $line_number "$user_names ($cvs_user)" $associated_user $possible_user $actions + } +} +