- import Faults
[plcapi.git] / PLC / Persons.py
index 8b4b631..4261bfc 100644 (file)
@@ -4,7 +4,7 @@
 # Mark Huang <mlhuang@cs.princeton.edu>
 # Copyright (C) 2006 The Trustees of Princeton University
 #
-# $Id: Persons.py,v 1.26 2007/01/05 15:56:16 tmack Exp $
+# $Id: Persons.py,v 1.28 2007/01/05 19:50:20 tmack Exp $
 #
 
 from types import StringTypes
@@ -16,6 +16,7 @@ import re
 import crypt
 
 from PLC.Faults import *
+from PLC.Debug import log
 from PLC.Parameter import Parameter
 from PLC.Filter import Filter
 from PLC.Table import Row, Table
@@ -298,19 +299,62 @@ class Person(Row):
         from_addr = {}
         from_addr[self.api.config.PLC_MAIL_SUPPORT_ADDRESS] = \
         "%s %s" % ('Planetlab', 'Support')
-        messages = Messages(self.api, ['PASSWORD_RESET_INITIATE'])
+
+       # fill in template
+        messages = Messages(self.api, ['ASSWORD_RESET_INITIATE'])
         if not messages:
-                raise PLCAPIError, "Email template not found"
+            print >> log, "No such message template"
+           return 1
+
         message = messages[0]
         subject = message['subject']
         template = message['template'] % \
-                (self.api.config.PLC_WWW_HOST,
-                 self['verification_key'], self['person_id'],
-                 self.api.config.PLC_MAIL_SUPPORT_ADDRESS,
-                 self.api.config.PLC_WWW_HOST)
+            (self.api.config.PLC_WWW_HOST,
+             self['verification_key'], self['person_id'],
+             self.api.config.PLC_MAIL_SUPPORT_ADDRESS,
+             self.api.config.PLC_WWW_HOST)
 
         self.api.mailer.mail(to_addr, None, from_addr, subject, template)
+    
+    def send_account_registered_email(self, site):
+       
+       to_addr = {}
+       cc_addr = {}
+       from_addr = {}
+       from_addr[self.api.config.PLC_MAIL_SUPPORT_ADDRESS] = \
+        "%s %s" % ('Planetlab', 'Support')
 
+       # email user
+       user_full_name = "%s %s" % (self['first_name'], self['last_name'])
+       to_addr[self['email']] = "%s" % user_full_name
+
+       # if the account had a admin role or a pi role, email support.
+        if set(['admin', 'pi']).intersection(self['roles']):
+            to_addr[self.api.config.PLC_MAIL_SUPPORT_ADDRESS] = \
+                "%s %s" % ('Planetlab', 'Support')
+       
+       # cc site pi's
+       site_persons = Persons(self.api, site['person_ids'])
+        for person in site_persons:
+            if 'pi' in person['roles'] and not person['email'] in to_addr.keys():
+                cc_addr[person['email']] = "%s %s" % \
+               (person['first_name'], person['last_name'])
+
+       # fill in template
+       messages = Messages(self.api, ['ACCOUNT_REGISTERED'])
+        if not messages:
+           print >> log, "No such message template"
+            return 1
+
+        message = messages[0]
+        subject = message['subject'] % (user_full_name, site['name'])
+        template = message['template'] % \
+           (user_full_name, site['name'], ", ".join(self['roles']),
+            self.api.config.PLC_WWW_HOST, self['person_id'],
+             self.api.config.PLC_MAIL_SUPPORT_ADDRESS,
+             self.api.config.PLC_WWW_HOST)
+                               
+       self.api.mailer.mail(to_addr, cc_addr, from_addr, subject, template)
 
     def delete(self, commit = True):
         """