def user_activation_notify(user): current_site = Site.objects.get_current() peers = user.userprofile.peers.all() # Email subject *must not* contain newlines # TechCs will be notified about new users. # Platform admins will activate the users. subject = render_to_string( 'registration/activation_email_subject.txt', { 'site': current_site } ) subject = ''.join(subject.splitlines()) registration_profile = RegistrationProfile.objects.create_profile(user) message = render_to_string( 'registration/activation_email.txt', { 'activation_key': registration_profile.activation_key, 'expiration_days': settings.ACCOUNT_ACTIVATION_DAYS, 'site': current_site, 'user': user } ) if settings.NOTIFY_ADMIN_MAILS: admin_mails = settings.NOTIFY_ADMIN_MAILS send_new_mail( settings.EMAIL_SUBJECT_PREFIX + subject, message, settings.SERVER_EMAIL, admin_mails, [] ) for peer in peers: try: PeerNotify.objects.get(peer=peer, user=user) except: peer_notification = PeerNotify(peer=peer, user=user) peer_notification.save() # Mail to domain techCs plus platform admins (no activation hash sent) subject = render_to_string( 'registration/activation_email_peer_notify_subject.txt', { 'site': current_site, 'peer': peer } ) subject = ''.join(subject.splitlines()) message = render_to_string( 'registration/activation_email_peer_notify.txt', { 'user': user, 'peer': peer } ) send_new_mail( settings.EMAIL_SUBJECT_PREFIX + subject, message, settings.SERVER_EMAIL, get_peer_techc_mails(user, peer), [])
def commit_edit(self, *args, **kwargs): peers = self.applier.get_profile().peers.all() username = None for peer in peers: if username: break for network in peer.networks.all(): net = IPNetwork(network) if IPNetwork(self.destination) in net: username = peer break if username: peer = username.peer_tag else: peer = None send_message( '[%s] Editing rule %s. Please wait...' % ( self.applier.username, self.name ), peer ) response = edit.delay(self) logger.info('Got edit job id: %s' % response) fqdn = Site.objects.get_current().domain admin_url = 'https://%s%s' % ( fqdn, reverse( 'edit-route', kwargs={'route_slug': self.name} ) ) mail_body = render_to_string( 'rule_action.txt', { 'route': self, 'address': self.requesters_address, 'action': 'edit', 'url': admin_url, 'peer': username } ) user_mail = '%s' % self.applier.email user_mail = user_mail.split(';') send_new_mail( settings.EMAIL_SUBJECT_PREFIX + 'Rule %s edit request submitted by %s' % (self.name, self.applier.username), mail_body, settings.SERVER_EMAIL, user_mail, get_peer_techc_mails(self.applier, username) ) d = { 'clientip': self.requesters_address, 'user': self.applier.username } logger.info(mail_body, extra=d)
def commit_delete(self, *args, **kwargs): username = None reason_text = '' reason = '' if "reason" in kwargs: reason = kwargs['reason'] reason_text = 'Reason: %s.' % reason peers = self.applier.get_profile().peers.all() for peer in peers: if username: break for network in peer.networks.all(): net = IPNetwork(network) if IPNetwork(self.destination) in net: username = peer break if username: peer = username.peer_tag else: peer = None send_message( '[%s] Suspending rule %s. %sPlease wait...' % (self.applier.username, self.name, reason_text), peer) response = delete.delay(self, reason=reason) logger.info('Got delete job id: %s' % response) fqdn = Site.objects.get_current().domain admin_url = 'https://%s%s' % ( fqdn, reverse('edit-route', kwargs={'route_slug': self.name})) mail_body = render_to_string( 'rule_action.txt', { 'route': self, 'address': self.requesters_address, 'action': 'removal', 'url': admin_url, 'peer': username }) user_mail = '%s' % self.applier.email user_mail = user_mail.split(';') send_new_mail( settings.EMAIL_SUBJECT_PREFIX + 'Rule %s removal request submitted by %s' % (self.name, self.applier.username), mail_body, settings.SERVER_EMAIL, user_mail, get_peer_techc_mails(self.applier, username)) d = { 'clientip': self.requesters_address, 'user': self.applier.username } logger.info(mail_body, extra=d)