Join script should rule out retired usernames
[bpt/portal.git] / users.mlt
index a4a8cb3..2135308 100644 (file)
--- a/users.mlt
+++ b/users.mlt
@@ -27,12 +27,19 @@ if $"cmd" = "Create" then
                                Money.applyCharges trn
                        end;
 
+                       App.add ap;
+
                        if $"subscribe" = "on" then
                                if not (Pref.subscribe ("hcoop-announce", $"name" ^ Init.emailSuffix)) then
                                        %><h3>Error subscribing to hcoop-announce</h3><%
                                end
-                       end %>
-                       <h3>Member added</h3>
+                       end;
+
+                       if $"nomail" = "" then
+                               App.welcome ap
+                       end
+
+                       %><h3>Member added</h3>
 <%             end
        end
 elseif $"mod" <> "" then
@@ -70,7 +77,24 @@ elseif $"mod" <> "" then
        Init.deleteUser (Web.stoi ($"del2")) %>
        <h3><% #name user %> deleted!</h3>
 
-<% elseif $"cmd" = "grandfather" then
+<% elseif $"retire" <> "" then
+       showNormal := false;
+       val user = Init.lookupUser (Web.stoi ($"retire")) %>
+       <h3>Are you sure you want to retire member <a href="user?id=<% #id user %>"><% #name user %></a>?</h3>
+       <a href="users?retire2=<% $"retire" %>">Yes, retire <% #name user %>!</a>
+
+<% elseif $"retire2" <> "" then
+        val usr = Web.stoi ($"retire2");
+       val user = Init.lookupUser usr;
+       switch (Group.groupNameToId "paying", Group.groupNameToId "retired") of
+         (SOME paying, SOME retired) =>
+               Group.removeFromGroup {usr = usr, grp = paying};
+               Group.addToGroup {usr = usr, grp = retired} %>
+               <h3><% #name user %> retired!</h3><%
+       | _ => %><h3>Couldn't find "paying" or "retired" group by name!</h3><%
+       end
+
+elseif $"cmd" = "grandfather" then
        Init.grandfatherUsers()
        %><h3>Grandfathered</h3>
 
@@ -124,6 +148,31 @@ end %>
 
 <p><% negative %> have negative balances.</p>
 
+<% elseif $"cmd" = "diff" then
+   showNormal := false;
+
+   val against = (case $"against" of
+                              "" => Init.usersInAfs ()
+                    | x => String.tokens Char.isSpace x);
+
+   val diff = Init.usersDiff (Init.listUsernames (), against) %>
+
+<h3>User diff</h3>
+
+<h4>Only on the portal:</h4>
+<ul>
+<% foreach user in #onlyInFirst diff do %>
+   <li> <a href="user?id=<% valOf (Init.userNameToId user) %>"><% Web.html user %></a></li>
+<% end %>
+</ul>
+
+<h4>Only in AFS:</h4>
+<ul>
+<% foreach user in #onlyInSecond diff do %>
+   <li> <% Web.html user %></li>
+<% end %>
+</ul>
+
 <% end %>
 
 <% if showNormal then %>
@@ -139,12 +188,14 @@ end %>
 if #name bal <> #name user then %>
 <i><% Web.html (#name bal) %></i>
 <% end %>
-       </td><td><a href="users?mod=<% #id user %>">[Modify]</a> <a href="users?del=<% #id user %>">[Delete]</a></td> </tr>
+       </td><td><a href="users?mod=<% #id user %>">[Modify]</a> <a href="users?del=<% #id user %>">[Delete]</a>
+       <a href="users?retire=<% #id user %>">[Retire]</a></td> </tr>
 <% end %>
 </table>
 
 <br><a href="users?cmd=grandfather">Grandfather old users to have applications</a><br>
 <a href="users?cmd=unmigrated">Who hasn't migrated yet?</a><br>
+<a href="users?cmd=diff">How does the set of users in AFS compare with the set of active portal users?</a><br>
 
 <% end %>