52 lines
		
	
	
	
		
			1.5 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
		
		
			
		
	
	
			52 lines
		
	
	
	
		
			1.5 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| 
								 | 
							
								import six
							 | 
						||
| 
								 | 
							
								from django.core.mail import send_mail
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								from django.conf import settings
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class BaseMailer(object):
							 | 
						||
| 
								 | 
							
								    def __init__(self):
							 | 
						||
| 
								 | 
							
								        self._slug = None
							 | 
						||
| 
								 | 
							
								        self.no_replay_mail = 'no-replay@ungleich.ch'
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        if not hasattr(self, '_to'):
							 | 
						||
| 
								 | 
							
								            self._to = None
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    @property
							 | 
						||
| 
								 | 
							
								    def slug(self):
							 | 
						||
| 
								 | 
							
								        return self._slug
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    @slug.setter
							 | 
						||
| 
								 | 
							
								    def slug(self, val):
							 | 
						||
| 
								 | 
							
								        assert isinstance(val, six.string_types), "slug is not string: %r" % val
							 | 
						||
| 
								 | 
							
								        self._slug = val
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    @property
							 | 
						||
| 
								 | 
							
								    def registration(self):
							 | 
						||
| 
								 | 
							
								        return self.message
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    @registration.setter
							 | 
						||
| 
								 | 
							
								    def registration(self, val):
							 | 
						||
| 
								 | 
							
								        msg = "registration is not dict with fields subject,message"
							 | 
						||
| 
								 | 
							
								        assert type(val) is dict, msg
							 | 
						||
| 
								 | 
							
								        assert val.get('subject') and val.get('message'), msg
							 | 
						||
| 
								 | 
							
								        self._message, self._subject, self._from = (
							 | 
						||
| 
								 | 
							
								            val.get('message'), val.get('subject'), val.get('from'))
							 | 
						||
| 
								 | 
							
								        assert isinstance(self.slug, six.string_types), 'slug not set'
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    def send_mail(self, to=None):
							 | 
						||
| 
								 | 
							
								        if not to:
							 | 
						||
| 
								 | 
							
								            to = self._to
							 | 
						||
| 
								 | 
							
								        if not self.message:
							 | 
						||
| 
								 | 
							
								            raise NotImplementedError
							 | 
						||
| 
								 | 
							
								        send_mail(self._subject, self._message, self.no_replay_mail, [to])
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class DigitalGlarusRegistrationMailer(BaseMailer):
							 | 
						||
| 
								 | 
							
								    message = settings.REGISTRATION_MESSAGE
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    def __init__(self, slug):
							 | 
						||
| 
								 | 
							
								        self.slug = slug
							 | 
						||
| 
								 | 
							
								        self.registration = self.message
							 | 
						||
| 
								 | 
							
								        self._message = self._message.format(slug=self._slug)
							 | 
						||
| 
								 | 
							
								        super().__init__()
							 |