def do(self): crons_to_check = [get_class(x) for x in settings.CRON_CLASSES] emails = [admin[1] for admin in settings.ADMINS] failed_runs_cronjob_email_prefix = getattr( settings, 'FAILED_RUNS_CRONJOB_EMAIL_PREFIX', '') for cron in crons_to_check: min_failures = getattr(cron, 'MIN_NUM_FAILURES', 10) jobs = CronJobLog.objects.filter( code=cron.code).order_by('-end_time')[:min_failures] failures = 0 message = '' for job in jobs: if not job.is_success: failures += 1 message += 'Job ran at %s : \n\n %s \n\n' % ( job.start_time, job.message) if failures >= min_failures: send_mail( '%s%s failed %s times in a row!' % ( failed_runs_cronjob_email_prefix, cron.code, min_failures, ), message, settings.DEFAULT_FROM_EMAIL, emails)
def do(self): CRONS_TO_CHECK = map(lambda x: get_class(x), settings.CRON_CLASSES) EMAILS = [admin[1] for admin in settings.ADMINS] try: FAILED_RUNS_CRONJOB_EMAIL_PREFIX = settings.FAILED_RUNS_CRONJOB_EMAIL_PREFIX except: FAILED_RUNS_CRONJOB_EMAIL_PREFIX = '' for cron in CRONS_TO_CHECK: try: min_failures = cron.MIN_NUM_FAILURES except AttributeError: min_failures = 10 failures = 0 jobs = CronJobLog.objects.filter(code=cron.code).order_by('-end_time')[:min_failures] message = '' for job in jobs: if not job.is_success: failures += 1 message += 'Job ran at %s : \n\n %s \n\n' % (job.start_time, job.message) if failures == min_failures: send_mail( '%s%s failed %s times in a row!' % (FAILED_RUNS_CRONJOB_EMAIL_PREFIX, cron.code, \ min_failures), message, settings.DEFAULT_FROM_EMAIL, EMAILS )
def do(self): crons_to_check = [get_class(x) for x in settings.CRON_CLASSES] emails = [admin[1] for admin in settings.ADMINS] failed_runs_cronjob_email_prefix = getattr(settings, 'FAILED_RUNS_CRONJOB_EMAIL_PREFIX', '') for cron in crons_to_check: min_failures = getattr(cron, 'MIN_NUM_FAILURES', 10) jobs = CronJobLog.objects.filter(code=cron.code).order_by('-end_time')[:min_failures] failures = 0 message = '' for job in jobs: if not job.is_success: failures += 1 message += 'Job ran at %s : \n\n %s \n\n' % (job.start_time, job.message) if failures >= min_failures: send_mail( '%s%s failed %s times in a row!' % ( failed_runs_cronjob_email_prefix, cron.code, min_failures, ), message, settings.DEFAULT_FROM_EMAIL, emails )
def client_status_toggle(request): """ Expects the following in a POST request: - 'uid': uid of the client - 'active': 0 or 1 Responds with Json success flag = True or False """ try: active = True if int(request.POST.get('active')) == 1 else False except: return JsonResponse(success=False) client_uid = request.POST.get('uid') if not client_uid: return JsonResponse(success=False) client = Client.find_uid_or_404(client_uid) client.active = active client.save() # email AM user = request.user email_subject = '[ALERT]: Client status change: %s' % client.name email_body = "Client '%s' has been %s by %s" % \ (client.name, 'activated' if client.active else 'deactivated', user.get_full_name() or user.username) send_mail(subject=email_subject, message=email_body, from_email=settings.DEFAULT_FROM_EMAIL, recipient_emails=[PV_AM_EMAIL]) return JsonResponse()
def do(self): message = 'Active users: %d' % User.objects.count() print(message) send_mail( '[django-cron demo] Active user count', message, '*****@*****.**', ['*****@*****.**'] )
def create_client(request, template='administration/create_client.html'): """ Renders the CreateClientForm and validate, create client """ user = request.user user_profile = user.get_profile() params = {} if request.method == 'POST': form = CreateClientForm(request.POST) if form.is_valid(): client = form.save(commit=False) client.created_by = user client.save() messages.success(request, MSG_SUCCESS_CLIENT_CREATED % form.cleaned_data['name']) # TODO: delete / since not needed ... person created is staff already! # Associate current user to client just created # user_profile.clients.add(client) # user_profile.save() # Send notification email email_subject = 'Povelli: New Company %s Created' % client.name email_body = render_to_string('administration/create_client_email.html', { 'client': client, 'creator_name': user.get_full_name() or user.username }) send_mail(subject=email_subject, message=email_body, from_email=PV_AM_EMAIL, recipient_emails=[PV_AM_EMAIL]) return redirect(reverse('dashboard_main', kwargs={'client_id':client.id})) else: form = CreateClientForm() params['form'] = form return render(request, template, params)
def report_failure(self, cron_cls, failed_jobs): """ Report the failed jobs by sending an email (using django-common). """ send_mail(**self.get_send_mail_kwargs(cron_cls, failed_jobs))
def do(self): message = 'Active users: %d' % User.objects.count() print(message) send_mail('[django-cron demo] Active user count', message, '*****@*****.**', ['*****@*****.**'])