Example #1
0
    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)
Example #2
0
    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
                )
Example #3
0
    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
                )
Example #4
0
    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
                )
Example #5
0
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()
Example #6
0
 def do(self):
     message = 'Active users: %d' % User.objects.count()
     print(message)
     send_mail(
         '[django-cron demo] Active user count',
         message,
         '*****@*****.**',
         ['*****@*****.**']
     )
Example #7
0
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)
Example #8
0
 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))
Example #9
0
 def do(self):
     message = 'Active users: %d' % User.objects.count()
     print(message)
     send_mail('[django-cron demo] Active user count', message,
               '*****@*****.**',
               ['*****@*****.**'])