[Yapcom checkin] rev 63 - / lib/YAPC t t/lib/YAPC/Test templates

[prev] [thread] [next] [lurker] [Date index for 2003/11/26]

From: svn
Subject: [Yapcom checkin] rev 63 - / lib/YAPC t t/lib/YAPC/Test templates
Date: 15:40 on 26 Nov 2003
Author: gabor
Date: 2003-11-26 15:40:05 +0200 (Wed, 26 Nov 2003)
New Revision: 63

Modified:
   README
   lib/YAPC/Organizer.pm
   t/07-web-change-data.t
   t/lib/YAPC/Test/Data.pm
   templates/message.tmpl
   templates/personal_info.tmpl
   templates/user_account.tmpl
Log:
logged in people can now change their personal information

Modified: README
===================================================================
--- README	2003-11-26 13:35:25 UTC (rev 62)
+++ README	2003-11-26 13:40:05 UTC (rev 63)
@@ -54,7 +54,7 @@
 CHANGES
 ---------
 0.08_01  2003.11.
-    -
+    - logged in users can change their personal information
 
 
 0.08  2003.11.25
@@ -212,6 +212,10 @@
     - separate the code (with simple templates) and the templates needed for
       YAPC::Israel::2004. Put the former in  the distribution, move the
       latter to manual change and upload.
+      This will also bear the advantage that we don't have to deal with the
+      question, where to put the image files and the css files as the simple
+      template version will not have any.
+     
 
     - indicate on the navigation bar who is logged in
 

Modified: lib/YAPC/Organizer.pm
===================================================================
--- lib/YAPC/Organizer.pm	2003-11-26 13:35:25 UTC (rev 62)
+++ lib/YAPC/Organizer.pm	2003-11-26 13:40:05 UTC (rev 63)
@@ -569,7 +569,43 @@
 }
             
 
+sub personal_info {
+    my $self = shift;
+    my $q = $self->query;
 
+    my $id = $self->is_logged_in;
+    my ($person) = YAPC::Person->search(id => $id);
+
+    my @fields = qw(fname lname phone company country state city street zip pauseid url mongers bio);
+
+    my $t = $self->_server_page('personal_info');
+    if (not $q->param('submit')) {
+       foreach my $field (@fields) {
+          my $v = $person->get($field) or next;
+          $t->param($field => $v) 
+       }
+       return $t->output;
+    } 
+
+    # are the password good and equal ?
+    my %args;
+    foreach my $f (@fields)  {
+       $args{$f} = $q->param($f) || '';
+    }
+
+    if ($args{fname} and $args{lname} and $args{phone} ){
+        $person->set($_ => $args{$_}) foreach @fields;
+        $person->update;
+
+        my $t = $self->_server_page('message');
+        $t->param(personal_info_changed => 1);
+        return $t->output;
+    } else {
+        $t->param(message => "Error");
+        return $t->output;
+    }
+}
+
 1;
 
 

Modified: t/07-web-change-data.t
===================================================================
--- t/07-web-change-data.t	2003-11-26 13:35:25 UTC (rev 62)
+++ t/07-web-change-data.t	2003-11-26 13:40:05 UTC (rev 63)
@@ -39,3 +39,108 @@
 isnt($cookies[1], $cookies[2], 'cookies are different');
 
 
+# access the change personal_info page fails if not authenticated
+{
+   local $ENV{REQUEST_URI}   = '/personal_info.html';
+   #local $ENV{HTTP_COOKIE} = "Yapcom=$cookies[0]";
+   my $q = CGI->new();
+   my $webapp = YAPC::Organizer->new;
+   $webapp->query($q);
+   my $result = $webapp->run();
+   like($result, qr@<h2>Login</h2>@, 'Redirected to login page');
+}
+
+# update personal_information fails if not authenticated
+{
+   local $ENV{REQUEST_URI}   = '/personal_info.html';
+   #local $ENV{HTTP_COOKIE} = "Yapcom=$cookies[0]";
+   my $q = CGI->new();
+   my $webapp = YAPC::Organizer->new;
+   $webapp->query($q);
+   my $result = $webapp->run();
+   like($result, qr@<h2>Login</h2>@, 'Redirected to login page');
+}
+
+# access to personl_info page is successful when authenticated
+{
+   local $ENV{REQUEST_URI}   = '/personal_info.html';
+   local $ENV{HTTP_COOKIE} = "Yapcom=$cookies[0]";
+   my $q = CGI->new();
+   my $webapp = YAPC::Organizer->new;
+   $webapp->query($q);
+   my $result = $webapp->run();
+   like($result, qr@<h2>Change Personal Information</h2>@, 'personal_info page accessed');
+   like($result, qr@\Q<tr><td>First Name:</td><td><input size=40 name="fname" value="$people[0]{fname}" /> *</td></tr>@, 'old fname filled in correclty');
+   like($result, qr@\Q<tr><td>Last Name:</td><td><input size=40 name="lname" value="$people[0]{lname}" /> *</td></tr>@, 'old lname filled in correclty');
+   like($result, qr@\Q<tr><td>Phone:</td><td><input  size=40 name="phone" value="$people[0]{phone}" /> *</td></tr>@, 'old phone filled in correclty');
+   like($result, qr@\Q<tr><td>Company:</td><td><input  size=40 name="company" value="" /></td></tr>@, 'old company filled in correclty');
+             # $people[0]{company}
+}
+
+
+# submit change to personl_info page when not authenticated
+# no value submitted:
+{
+   local $ENV{REQUEST_URI}   = '/personal_info.html';
+#   local $ENV{HTTP_COOKIE} = "Yapcom=$cookies[0]";
+   my $q = CGI->new({submit => 1});
+   my $webapp = YAPC::Organizer->new;
+   $webapp->query($q);
+   my $result = $webapp->run();
+   like($result, qr@<h2>Login</h2>@, 'Redirected to login page');
+}
+
+
+#   like($result, qr@<h2>Change Personal Information</h2>@, 'personal_info page accessed');
+
+# submit change to personl_info page gives error when authenticated but not enough data provided.
+{
+   local $ENV{REQUEST_URI}   = '/personal_info.html';
+   local $ENV{HTTP_COOKIE} = "Yapcom=$cookies[0]";
+   my $q = CGI->new({submit => 1});
+   my $webapp = YAPC::Organizer->new;
+   $webapp->query($q);
+   my $result = $webapp->run();
+   like($result, qr@Error@, 'Error');
+   like($result, qr@<h2>Change Personal Information</h2>@, 'personal_info page accessed');
+   like($result, qr@\Q<tr><td>First Name:</td><td><input size=40 name="fname" value="" /> *</td></tr>@, 'old fname filled in correclty');
+   like($result, qr@\Q<tr><td>Last Name:</td><td><input size=40 name="lname" value="" /> *</td></tr>@, 'old lname filled in correclty');
+   like($result, qr@\Q<tr><td>Phone:</td><td><input  size=40 name="phone" value="" /> *</td></tr>@, 'old phone filled in correclty');
+   like($result, qr@\Q<tr><td>Company:</td><td><input  size=40 name="company" value="" /></td></tr>@, 'old company filled in correclty');
+}
+{
+   local $ENV{REQUEST_URI}   = '/personal_info.html';
+   local $ENV{HTTP_COOKIE} = "Yapcom=$cookies[0]";
+   my $q = CGI->new({submit => 1, fname => $people[3]{fname}, lname => $people[3]{lname}, company=>$people[3]{company}});
+   my $webapp = YAPC::Organizer->new;
+   $webapp->query($q);
+   my $result = $webapp->run();
+   like($result, qr@Error@, 'Error');
+   like($result, qr@<h2>Change Personal Information</h2>@, 'personal_info page accessed');
+   like($result, qr@\Q<tr><td>First Name:</td><td><input size=40 name="fname" value="$people[3]{fname}" /> *</td></tr>@, 'old fname filled in correclty');
+   like($result, qr@\Q<tr><td>Last Name:</td><td><input size=40 name="lname" value="$people[3]{lname}" /> *</td></tr>@, 'old lname filled in correclty');
+   like($result, qr@\Q<tr><td>Phone:</td><td><input  size=40 name="phone" value="" /> *</td></tr>@, 'old phone filled in correclty');
+   like($result, qr@\Q<tr><td>Company:</td><td><input  size=40 name="company" value="$people[3]{company}" /></td></tr>@, 'old company filled in correclty');
+}
+
+##### submitted data gets updated in the database
+{
+   local $ENV{REQUEST_URI}   = '/personal_info.html';
+   local $ENV{HTTP_COOKIE} = "Yapcom=$cookies[0]";
+   my $q = CGI->new({submit => 1, fname => $people[3]{fname}, lname => $people[3]{lname}, phone => $people[3]{phone}, company=>$people[3]{company}});
+   my $webapp = YAPC::Organizer->new;
+   $webapp->query($q);
+   my $result = $webapp->run();
+   like($result, qr@Your personal information has been successfully updated.@, 'updated');
+
+   # check data in database
+   my ($p) = YAPC::Person->search(email => $people[0]->{email});  # we did not change the e-mail so it is still the same e-mail address 
+   is($p->get('fname'), $people[3]{fname}, 'fname was updated correctly');
+}
+
+
+
+
+
+
+

Modified: t/lib/YAPC/Test/Data.pm
===================================================================
--- t/lib/YAPC/Test/Data.pm	2003-11-26 13:35:25 UTC (rev 62)
+++ t/lib/YAPC/Test/Data.pm	2003-11-26 13:40:05 UTC (rev 63)
@@ -31,6 +31,16 @@
        password => 'nopassword',
        password2 => 'nopassword',
     },
+    {
+       fname => 'asldhsaldj',
+       lname => 'skdh asda 8dl',
+       email => 'aksdahsdk@xxxxxxxx.xxxxxxxxxxxx.xxx',
+       phone => 'aduaofuo la8',
+       company => 'aklsjd asdoi934285wefl @$@#',
+       password => 'wertyu',
+       password2 => 'wertyu',
+    },
+
 );
 
 our @talks = (

Modified: templates/message.tmpl
===================================================================
--- templates/message.tmpl	2003-11-26 13:35:25 UTC (rev 62)
+++ templates/message.tmpl	2003-11-26 13:40:05 UTC (rev 63)
@@ -9,7 +9,11 @@
 <TMPL_IF NAME="admins_only">
 Access to administrators only
 </TMPL_IF>
+<TMPL_IF NAME="personal_info_changed">
+Your personal information has been successfully updated.
+</TMPL_IF>
 
+
          <br />&nbsp;<br /><br />&nbsp;<br /><br />&nbsp;<br /><br />&nbsp;<br /><br />&nbsp;<br />
          <hr />
 

Modified: templates/personal_info.tmpl
===================================================================
--- templates/personal_info.tmpl	2003-11-26 13:35:25 UTC (rev 62)
+++ templates/personal_info.tmpl	2003-11-26 13:40:05 UTC (rev 63)
@@ -1,39 +1,33 @@
-<TMPL_VALUE NAME="title" VALUE="Registration Form">
-<TMPL_INCLUDE NAME="header.tmpl">
-     <td valign="top">
-
-Registration to the second Perl conference in Israel is open.<br>
-Payment is not yet required at this moment.<br>
-We'll update you by-email when the payments can be made.
-<p>
-<font color="red"><TMPL_VAR NAME="MESSAGE"></font>
-<p>
-<form method="post">
-<input type="hidden" name="submit" value="Register">
-<table>
-<tr><td>First Name:</td><td><input size=40 name="fname" value="<TMPL_VAR NAME=fname>" /> *</td></tr>
-<tr><td>Last Name:</td><td><input size=40 name="lname" value="<TMPL_VAR NAME=lname>" /> *</td></tr>
-<tr><td>Email:</td><td><input  size=40 name="email" value="<TMPL_VAR NAME=email>" /> *</td></tr>
-<tr><td>Phone:</td><td><input  size=40 name="phone" value="<TMPL_VAR NAME=phone>" /> *</td></tr>
-<tr><td>Password:</td><td><input  size=40 name="password" type="password" /> *</td></tr>
-<tr><td>Retype Password:</td><td><input  size=40 name="password2" type="password" /> *</td></tr>
-<tr><td>Company:</td><td><input  size=40 name="company" value="<TMPL_VAR NAME=company>" /></td></tr>
-<tr><td>PAUSE ID:</td><td><input size=40  name="pauseid" value="<TMPL_VAR NAME=pauseid>" /></td></tr>
-<tr><td>Home page:</td><td><input  size=40 name="url" value="<TMPL_VAR NAME=url>" /></td></tr>
-<tr><td>Mongers Group:</td><td><input size=40  name="mongers" value="<TMPL_VAR NAME=mongers>" /></td></tr>
-<tr><td>Bio:</td><td><textarea cols=40 rows=10 name="bio"><TMPL_VAR NAME=bio></textarea></td></tr>
-<tr><td></td><td><input type="submit" name="submitbtn" value="Register"></td></tr>
-</table>
-</form>
-
-         <br />&nbsp;<br /><br />&nbsp;<br /><br />&nbsp;<br /><br />&nbsp;<br /><br />&nbsp;<br />
-         <hr />
-
-         <p class="bottomtext">
-            Please send comments, questions etc. to
-            <a href="mailto:yapc-organizers@xxxx.xxx.xx">yapc-organizers@xxxx.xxx.xx</a>;
-         </p>
-
-      </td>
-<TMPL_INCLUDE NAME="footer.tmpl">
-
+<TMPL_VALUE NAME="title" VALUE="Change Personal Information">
+<TMPL_INCLUDE NAME="header.tmpl">
+     <td valign="top">
+
+<p>
+<font color="red"><TMPL_VAR NAME="MESSAGE"></font>
+<p>
+<form method="post">
+<input type="hidden" name="submit" value="Register">
+<table>
+<tr><td>First Name:</td><td><input size=40 name="fname" value="<TMPL_VAR NAME=fname>" /> *</td></tr>
+<tr><td>Last Name:</td><td><input size=40 name="lname" value="<TMPL_VAR NAME=lname>" /> *</td></tr>
+<tr><td>Phone:</td><td><input  size=40 name="phone" value="<TMPL_VAR NAME=phone>" /> *</td></tr>
+<tr><td>Company:</td><td><input  size=40 name="company" value="<TMPL_VAR NAME=company>" /></td></tr>
+<tr><td>PAUSE ID:</td><td><input size=40  name="pauseid" value="<TMPL_VAR NAME=pauseid>" /></td></tr>
+<tr><td>Home page:</td><td><input  size=40 name="url" value="<TMPL_VAR NAME=url>" /></td></tr>
+<tr><td>Mongers Group:</td><td><input size=40  name="mongers" value="<TMPL_VAR NAME=mongers>" /></td></tr>
+<tr><td>Bio:</td><td><textarea cols=40 rows=10 name="bio"><TMPL_VAR NAME=bio></textarea></td></tr>
+<tr><td></td><td><input type="submit" name="submitbtn" value="Register"></td></tr>
+</table>
+</form>
+
+         <br />&nbsp;<br /><br />&nbsp;<br /><br />&nbsp;<br /><br />&nbsp;<br /><br />&nbsp;<br />
+         <hr />
+
+         <p class="bottomtext">
+            Please send comments, questions etc. to
+            <a href="mailto:yapc-organizers@xxxx.xxx.xx">yapc-organizers@xxxx.xxx.xx</a>;
+         </p>
+
+      </td>
+<TMPL_INCLUDE NAME="footer.tmpl">
+

Modified: templates/user_account.tmpl
===================================================================
--- templates/user_account.tmpl	2003-11-26 13:35:25 UTC (rev 62)
+++ templates/user_account.tmpl	2003-11-26 13:40:05 UTC (rev 63)
@@ -6,6 +6,7 @@
 <p>
 <a href=proposal.html>Submit a proposal</a><br>
 <a href=change_password.html>Change password</a><br>
+<a href=personal_info.html>Change personal information</a><br>
 <a href=logout.html>Logout</a><br>
 
          <br />&nbsp;<br /><br />&nbsp;<br /><br />&nbsp;<br /><br />&nbsp;<br /><br />&nbsp;<br />

Generated at 17:06 on 26 Nov 2003 by mariachi 0.51