From: Tim Pope Date: Thu, 9 Sep 2004 02:58:19 +0000 (+0000) Subject: Basic instructor email support X-Git-Url: http://git.tpope.net/?p=tpope-extra.git;a=commitdiff_plain;h=bf1948f7d63c5283cc80dbe4acef6712bb169101 Basic instructor email support --- diff --git a/perl/sctweb b/perl/sctweb index 274252d..06ff3a9 100755 --- a/perl/sctweb +++ b/perl/sctweb @@ -13,10 +13,9 @@ use HTML::TableExtract; use Date::Calc::Object qw(Day_of_Week Decode_Day_of_Week Week_of_Year Monday_of_Week Day_of_Week_Abbreviation Delta_Days Add_Delta_Days Gmtime Mktime); use Date::Calendar::Profiles qw($Profiles); use Date::Calendar::Year; -use vars qw($ua %opts); +use vars qw($ua %opts %faculty); -my ($ts, $row, $response); -my $url="https://sctweb.accd.edu/ia-bin4/tsrvweb.exe?WID=W&tserve_tip_read_destroy&tserve_host_code=4&tserve_tiphost_code=0"; +my ($response); if (-r $ENV{HOME} . "/.sctwebrc") { open CONFIG, $ENV{HOME} . "/.sctwebrc"; @@ -27,6 +26,8 @@ if (-r $ENV{HOME} . "/.sctwebrc") { } close CONFIG; } +my $domain = $opts{'domain'} || "sctweb.accd.edu"; +my $url = "https://$domain/ia-bin4/tsrvweb.exe?WID=W&tserve_tip_read_destroy&tserve_host_code=4&tserve_tiphost_code=0"; $url = $opts{'url'} if(defined($opts{'url'})); $ua = LWP::UserAgent->new; @@ -124,6 +125,7 @@ sub off_for_exams { sub capitalize { local $_ = shift; + s/ +$//; s/\b([A-Z])([A-Z]*)\b/$1\L$2/g; s/\b(I)(i*)\b/$1\U$2/g; s/\bUs\b/US/g; @@ -211,6 +213,28 @@ sub get_schedule { return @schedule; } +sub get_faculty_email { + my ($name, $school, $email); + if((-f $ENV{'HOME'} . "/public_html/faculty.csv") && ! %faculty) { + open INS, $ENV{'HOME'} . "/public_html/faculty.csv"; + while($_ = ) { + chomp; + m/"([^"]*)",([^,]*),([^,]*)/; + ($name, $school, $email) = ($1, $2, $3); + $name =~ s/^([^,]*), ([^,]*)(.*)$/$2 $1$3/; + $name =~ s/ [A-Z]\.//g; + $name = lc $name; + $name =~ s/\W//g; + $faculty{$name} = $email; + } + } + $name = shift; + $name =~ s/ [A-Z]r?\.//g; + $name = lc $name; + $name =~ s/\W//g; + return $faculty{$name}; +} + sub get_mhc_header { return ( "X-SC-Subject: New Years Day\nX-SC-Category: Holiday\nX-SC-Cond: 1 Jan\nX-SC-Duration: 00010101-\nX-SC-Record-Id: \n", @@ -230,7 +254,7 @@ sub do_mhc_schedule { $| = 1; my %days = (M => "Mon", T => "Tue", W => "Wed", R => "Thu", F => "Fri", S => "Sat", U => "SU"); my @mon = qw(Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec); - my (@terms, $file, $current, @mhc, @schedule); + my ($file, $current, @mhc, @schedule); $file = shift unless (!defined $_[0] or $_[0] =~ /^\d/); @schedule = get_schedule(@_); @mhc = get_mhc_header; @@ -260,10 +284,12 @@ sub do_mhc_schedule { $current .= "X-SC-Time: ".$row->{'begin'}."-".$row->{'end'}."\n"; $current .= "X-SC-Duration: " . $row->{'duration'} . "\n"; $current .= "X-SC-Day: @day\n" if(exists $day[0]); - $current .= "X-SC-Alarm: 20 minutes\n"; + $current .= "X-SC-Alarm: 15 minutes\n"; $current .= "X-SC-Record-Id: <".$row->{'id'}."\@from.sctweb>\n"; if(defined($file) && (-d $file)) { - $row->{'instructor'} =~ s/(.*), (.*)/"$2 $1" <$1\@from.sctweb>/; + $row->{'instructor'} =~ s/^([^,]*), ([^,]*)(.*)/$2 $1$3/; + my $email = get_faculty_email $row->{'instructor'}; + $row->{'instructor'} = '"' . $row->{'instructor'} . '" <'. ($email || "$1\@from.sctweb" . ">"); $row->{'duration'} =~ /^(\d\d\d\d)(\d\d)(\d\d)-\d{8}$/; $row->{'begin'} =~ /^(\d\d):(\d\d)$/; my $next = next_class(%$row); @@ -305,21 +331,21 @@ sub do_csv_schedule { my %days = (M => "Mon", T => "Tue", W => "Wed", R => "Thu", F => "Fri", S => "Sat", U => "SU"); my @mon = qw(Jan. Feb. Mar. Apr. May June July Aug. Sept. Oct. Nov. Dec.); my (@terms, $file, $current, @mhc, @schedule); - @schedule = get_schedule(@_); $file = shift unless (!defined $_[0] or $_[0] =~ /^\d/); + @schedule = get_schedule(@_); open(STDOUT, ">" . $file) if(defined($file)); foreach my $row (@schedule) { map {s/\n/-/g if defined; $_} %$row; my $id=generate_id($row->{'id'}); $row->{'days'} =~ s/([MTWRFS])/ $days{$1}/g; $row->{'days'} =~ s/^ //; - $row->{'instructor'} =~ s/(.*), (.*)/$2 $1/; + $row->{'instructor'} =~ s/^([^,]*), ([^,]*)/$2 $1/; my $next = next_class(%$row); $current = ""; #print "# $id\n"; $current .= $row->{'id'} . ","; $current .= $row->{'title'} . ","; - $current .= $row->{'instructor'} . ","; + $current .= '"' . $row->{'instructor'} . '",'; $next =~ /^(\d\d\d\d)(\d\d)(\d\d)$/; $current .= $1 . "-". $2 ."-" . $3 . "\n"; print $current; @@ -336,7 +362,7 @@ sub do_vcalendar_schedule { print "BEGIN:VCALENDAR\r\nVERSION:1.0\r\n"; foreach my $row (@schedule) { map { s/\n/-/g; $_} %$row; - $row->{'instructor'} =~ s/(.*), (.*)/$2 $1/; + $row->{'instructor'} =~ s/^([^,]*), ([^,]*)/$2 $1/; $row->{'days'} =~ s/([MTWRFS])/ $days{$1}/g; $row->{'days'} =~ s/^ //; #$row->{'duration'} =~ s/(\d\d)-(\d\d)-(\d\d)/20$3$1$2/g; @@ -365,7 +391,7 @@ sub do_vcalendar_schedule { print "RRULE:W1 ", $row->{'days'} . " $stopdate", "T000000\r\n"; print("EXDATE:$day\r\n") if($day); print "ATTENDEE;ROLE=OWNER;STATUS=CONFIRMED:", $opts{NAME}, "\r\n" if(defined($opts{NAME})); - print "ATTENDEE;ROLE=ORGANIZER;STATUS=CONFIRMED:", $row->{'instructor'}, "\n"; + print "ATTENDEE;ROLE=ORGANIZER;STATUS=CONFIRMED:", $row->{'instructor'}, " <" . (get_faculty_email($row->{'instructor'}) || "fake\@ddress"), ">\n"; print "END:VEVENT\r\n"; if(defined($file) && (-d $file)) { print "END:VCALENDAR\r\n"; @@ -406,7 +432,7 @@ sub do_html_grades { my $response = $ua->get("$url&tserve_tip_write=||WID|SID|PIN|Term&tserve_trans_config=rgrdterm.cfg"); # Valid grading terms die $response->status_line unless $response->is_success; my @terms = grep {s/^