def send_emails(self, instance): users = User.objects.filter(role=Reviwers.SUPER_ADMIN) for user in users: Notification(initiative=instance, type=NotificationType.NEW, for_user=user).save() if instance.area: Notification(initiative=instance, type=NotificationType.NEW, for_area=instance.area).save() send_email_task.delay( f'#{instance.id} {instance.title}', settings.LOG_EMAIL, 'emails/new_initiative_log.html', { 'name': instance.title, 'id': instance.id, 'area': instance.area.name, 'address': instance.address, 'location_x': instance.location.x if instance.location else '', 'location_y': instance.location.y if instance.location else '', 'description': instance.description_property, 'admin_url': instance.get_super_admin_url, 'author': instance.author.username, 'email': instance.author.email, }) if instance.type == InitiativeType.BOTHERS_ME: template = 'emails/bothers.html' elif instance.type == InitiativeType.HAVE_IDEA: template = 'emails/idea.html' elif instance.type == InitiativeType.INTERESTED_IN: template = 'emails/interested.html' send_email_task.delay(f'#{instance.id} {instance.title}', instance.author.email, template, {})
def send_email_after_initiative_created(sender, instance, created, **kwargs): if created: if instance.type == InitiativeType.BOTHERS_ME: template = 'emails/bothers.html' elif instance.type == InitiativeType.HAVE_IDEA: template = 'emails/idea.html' elif instance.type == InitiativeType.INTERESTED_IN: template = 'emails/interested.html' send_email_task.delay(f'#{instance.id} {instance.title}', instance.author.email, template, {})
def patch(self, request, key): restore_password = get_object_or_404(RestorePassword, key=key) password = request.data.get('new_password') try: validate_password(password, user=None, password_validators=None) except ValidationError as e: return Response({'detail': e}, status=status.HTTP_409_CONFLICT) user = restore_password.user user.set_password(password) user.save() restore_password.delete() send_email_task.delay( _('Sprememba gesla za dostop do platforme Izboljšajmo Maribor'), user.email, 'emails/restore_password_done.html', {}) return Response({'status': _('Password has been set.')})
def check_is_blocked(sender, instance, created, **kwargs): if instance.blocked and not instance.blocked_email_sent: send_email_task.delay(f'Blokada elektronskega naslova', instance.email, 'emails/blocked.html', {'user': instance}) instance.blocked_email_sent = True instance.is_active = False instance.save() logger.warning(f'{instance.note}{instance._old_note}') if instance.note != instance._old_note: logger.warning(f'SEND EMAIL') send_email_task.delay( f'{_("Opis uporabnika je bil spremenjen: ")} {instance.username}', settings.EMAIL_FOR_NEW_NOTIFICATIONS, 'emails/user_note.html', { 'username': instance.username, 'note': instance.note })
def send_status_initiative_response(sender, instance, created, **kwargs): if instance.publication_status == Published.PUBLISHED and not instance.is_email_sent: # send email to initiator initiative = instance.initiative send_email_task.delay( f'#{initiative.id} {initiative.title}', initiative.author.email, 'emails/response_for_user.html', { 'content': mark_safe( instance.email_content.replace('\n', '</br>')) }) instance.is_email_sent = True instance.save() # create notification for admins if initiative.reviewer == Reviwers.AREA_ADMIN: Notification(for_area=initiative.area, initiative=initiative, type=NotificationType.UPDATED).save() elif initiative.reviewer in [ Reviwers.AREA_APPRAISER, Reviwers.CONTRACTOR_APPRAISER ]: Notification(for_user=initiative.reviewer_user, initiative=initiative, type=NotificationType.UPDATED).save()
def set_key(sender, instance, created, **kwargs): if created: key = id_generator(size=32) not_unique = True while not_unique: key_gen = id_generator(size=32) not_unique = sender.objects.filter(key=key_gen) instance.key = key_gen instance.save() if sender == RestorePassword: subject = _( 'Ponastavitev gesla za dostop do platforme Izboljšajmo Maribor' ) template = 'emails/restore_password.html' url = f'{settings.FRONT_URL}pozabljeno-geslo/{instance.key}/' elif sender == ConfirmEmail: subject = _( 'Potrditev registracije na platformi Izboljšajmo Maribor') template = 'emails/confirm_email.html' url = f'{settings.FRONT_URL}potrdi-racun/{instance.key}/' send_email_task.delay(subject, instance.user.email, template, {'url': url})