# -*- coding: UTF-8 -*- # # Copyright (C) 2007 by Jan Dittberner. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, # USA. # # Version: $Id$ from gnuviechadmin.exceptions import * from settings import config from BackendTo import * from BackendEntity import * from BackendEntityHandler import * class ClientEntity(BackendEntity): """Entity class for clients.""" def __init__(self, delegate, verbose = False, **kwargs): BackendEntity.__init__(self, delegate, verbose) for (key, value) in kwargs.items(): self.__setattr__(key, value) if not self.delegateto.country: self.delegateto.country = self._get_default_country() self.validate() def _client_mail(self): text = get_template(config.get('common', 'mailtemplates'), config.get('client', 'create.mail')).substitute({ 'firstname' : self.delegateto.firstname, 'lastname' : self.delegateto.lastname, 'email' : self.delegateto.email, 'address1' : self.delegateto.address1, 'zipcode' : self.delegateto.zip, 'city' : self.delegateto.city, 'phone' : self.delegateto.phone}) subject = get_template_string( config.get('client', 'create_subject')).substitute({ 'firstname' : self.delegateto.firstname, 'lastname' : self.delegateto.lastname}) self.send_mail(subject, text) def create_hook(self, session): """Actions to perform when a client is created.""" self._client_mail() def delete_hook(self, session): """Actions to perform when a client is deleted.""" if self.delegateto.sysusers: raise CannotDeleteError( self.delegateto, "it still has the following system users assigned: %s" % ( ", ".join([sysuser.username for sysuser in \ self.delegateto.sysusers]))) def _get_default_country(self): """Gets the default country.""" return config.get('common', 'defaultcountry') class ClientHandler(BackendEntityHandler): """BackendEntityHandler for Client entities.""" def __init__(self, verbose = False): BackendEntityHandler.__init__(self, ClientEntity, Client, verbose)