Example #1
0
 def handle_empty_list_request(self, request, *args, **kwargs):
     redirect_url = reverse('intake-app_index')
     alert_subject = \
         'Warning: "{}" ({}) accessed with no application IDs'.format(
             request.get_full_path(), self.__class__.__name__)
     alert_message = '{} <{}> was redirected to "{}"'.format(
         request.user.profile.name, request.user.email, redirect_url)
     alerts.send_email_to_admins(
         subject=alert_subject, message=alert_message)
     return redirect(reverse('intake-app_index'))
Example #2
0
def get_or_create_prebuilt_pdf_for_app_ids(app_ids):
    prebuilt = get_prebuilt_pdf_bundle_for_app_id_set(app_ids)
    if not prebuilt:
        subject = 'Missing Prebuilt PDF Bundle'
        message = \
            'Querying with ids \n{}\ndid not return a prebuilt pdf'.format(
                app_ids)
        alerts.send_email_to_admins(subject=subject, message=message)
        prebuilt = update_pdf_bundle_for_san_francisco()
    return prebuilt
Example #3
0
 def handle_empty_list_request(self, request, *args, **kwargs):
     redirect_url = reverse('intake-app_index')
     alert_subject = \
         'Warning: "{}" ({}) accessed with no application IDs'.format(
             request.get_full_path(), self.__class__.__name__)
     alert_message = '{} <{}> was redirected to "{}"'.format(
         request.user.profile.name, request.user.email, redirect_url)
     alerts.send_email_to_admins(subject=alert_subject,
                                 message=alert_message)
     return redirect(reverse('intake-app_index'))
Example #4
0
def not_allowed(
        request, redirect_view='user_accounts-profile', error_messages='None'):
    messages.error(request, NOT_ALLOWED_MESSAGE)
    alerts.send_email_to_admins(
        subject="A user attempted to access an unpermitted URL",
        message=NOT_ALLOWED_ADMIN_ALERT_MESSAGE.format(
            user_email=getattr(request.user, 'email', 'No email'),
            url=request.get_full_path(),
            redirect_view=redirect_view,
            flash_message=NOT_ALLOWED_MESSAGE,
            error_messages=error_messages))
    return redirect(redirect_view)
Example #5
0
def fill_any_unfilled_pdfs_for_app_ids(app_ids):
    apps_without_pdfs = models.Application.objects.annotate(
        filled_pdf_count=Count('form_submission__filled_pdfs')).filter(
            id__in=app_ids, filled_pdf_count=0)
    # build individual filled pdfs if necessary
    for app in apps_without_pdfs:
        fill_pdf_for_application(app.id)
    if apps_without_pdfs:
        message = '{} apps did not have PDFs:\n'.format(len(apps_without_pdfs))
        message += '\n'.join([str(app) for app in apps_without_pdfs])
        alerts.send_email_to_admins(subject='No FilledPDFs for Applications',
                                    message=message)
Example #6
0
def not_allowed(request,
                redirect_view='user_accounts-profile',
                error_messages='None'):
    messages.error(request, NOT_ALLOWED_MESSAGE)
    alerts.send_email_to_admins(
        subject="A user attempted to access an unpermitted URL",
        message=NOT_ALLOWED_ADMIN_ALERT_MESSAGE.format(
            user_email=getattr(request.user, 'email', 'No email'),
            url=request.get_full_path(),
            redirect_view=redirect_view,
            flash_message=NOT_ALLOWED_MESSAGE,
            error_messages=error_messages))
    return redirect(redirect_view)
Example #7
0
def mailgun_email_validator(value):
    message = _('The email address you entered does not appear to exist.')
    suggestion_template = ' Did you mean {}?'
    try:
        email_is_good, suggestion = validate_email_with_mailgun(value)
        if not email_is_good:
            if suggestion:
                message += suggestion_template.format(suggestion)
            raise ValidationError(message)
    except MailgunAPIError as err:
        send_email_to_admins(subject="Unexpected MailgunAPIError",
                             message="{}".format(err))
        format_and_log('mailgun_api_error', level='error', exception=str(err))
Example #8
0
def mailgun_email_validator(value):
    message = _('The email address you entered does not appear to exist.')
    suggestion_template = ' Did you mean {}?'
    try:
        email_is_good, suggestion = validate_email_with_mailgun(value)
        if not email_is_good:
            if suggestion:
                message += suggestion_template.format(suggestion)
            raise ValidationError(message)
    except MailgunAPIError as err:
        send_email_to_admins(
            subject="Unexpected MailgunAPIError",
            message="{}".format(err))
        format_and_log(
            'mailgun_api_error', level='error', exception=str(err))
    def handle(self, *args, **kwargs):
        now = timezone.now()
        oldest_allowed_submission_date = now - timedelta(days=30)
        for org in Organization.objects.all():
            latest_login = User.objects.filter(
                profile__organization__id=org.id,
                profile__organization__is_live=True,
                last_login__isnull=False).values_list('last_login',
                                                      flat=True).first()

            if not latest_login:
                continue

            unread_applications = Application.objects.filter(
                has_been_opened=False,
                was_transferred_out=False,
                organization__id=org.id,
                status_updates__isnull=True)
            unread_applications_count = unread_applications.count()

            if unread_applications_count <= 0:
                continue

            submission_dates = [
                app.form_submission.get_local_date_received()
                for app in unread_applications
            ]
            oldest_submission_date = min(submission_dates)

            if oldest_submission_date >= oldest_allowed_submission_date:
                continue

            subject = "Inactive organization on {}".format(
                settings.DEFAULT_HOST)
            msg = "{} has {} unopened applications, the oldest from" \
                  " {}. We should contact them.".format(
                        org.name, unread_applications_count,
                        oldest_submission_date.strftime('%-m/%-d/%y'))
            print(msg)
            send_email_to_admins(subject=subject, message=msg)
    def handle(self, *args, **kwargs):
        now = timezone.now()
        oldest_allowed_submission_date = now - timedelta(days=30)
        for org in Organization.objects.all():
            latest_login = User.objects.filter(
                profile__organization__id=org.id,
                profile__organization__is_live=True,
                last_login__isnull=False
            ).values_list('last_login', flat=True).first()

            if not latest_login:
                return

            unread_applications = Application.objects.filter(
                has_been_opened=False,
                was_transferred_out=False,
                organization__id=org.id)
            unread_applications_count = unread_applications.count()

            if unread_applications_count <= 0:
                return

            submission_dates = [
                app.form_submission.get_local_date_received()
                for app in unread_applications
            ]
            oldest_submission_date = min(submission_dates)

            if oldest_submission_date >= oldest_allowed_submission_date:
                return

            subject = "Inactive organization on {}".format(
                settings.DEFAULT_HOST)
            msg = "{} has {} unopened applications, the oldest from" \
                  " {}. We should contact them.".format(
                        org.name, unread_applications_count,
                        oldest_submission_date.strftime('%-m/%-d/%y'))
            print(msg)
            send_email_to_admins(subject=subject, message=msg)
Example #11
0
    def handle(self, *args, **kwargs):
        now = timezone.now()
        oldest_allowed_login_date = now - timedelta(days=20)
        for org in Organization.objects.all():
            latest_login = User.objects.filter(
                profile__organization__id=org.id,
                profile__organization__is_live=True,
                last_login__isnull=False).order_by("-last_login").values_list(
                    'last_login', flat=True).first()

            if latest_login and (latest_login < oldest_allowed_login_date):
                latest_login_string = latest_login.strftime("%a %b %-d %Y")

                unread_applications_count = Application.objects.filter(
                    has_been_opened=False, organization__id=org.id).count()
                subject = "Inactive organization on {}".format(
                    settings.DEFAULT_HOST)
                msg = "{} has not logged in since {} and has {} unopened " \
                      "applications. We should contact them.".format(
                        org.name, latest_login_string,
                        unread_applications_count)
                if unread_applications_count > 0:
                    send_email_to_admins(subject=subject, message=msg)