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'))
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
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'))
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)
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)
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)
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 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)
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)