コード例 #1
0
 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, {})
コード例 #2
0
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, {})
コード例 #3
0
 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.')})
コード例 #4
0
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
            })
コード例 #5
0
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()
コード例 #6
0
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})