Exemplo n.º 1
0
def payment_completed(order_id):
    """
    Task to send an e-mail notification when an order is
    successfully created.
    """
    try:
        order = Order.objects.get(id=order_id)
        # create invoice e-mail
        subject = f'My Shop - EE Invoice no. {order.id}'
        message = 'Please, find attached the invoice for your recent purchase.'
        email = EmailMessage(subject, message,
                             settings.EMAIL_HOST_USER + '@gmail.com',
                             [order.email])
        # generate PDF
        html = render_to_string('orders/order/pdf.html', {'order': order})
        out = BytesIO()
        stylesheets = [weasyprint.CSS(settings.STATIC_ROOT + 'css/pdf.css')]
        weasyprint.HTML(string=html).write_pdf(out, stylesheets=stylesheets)
        # attach PDF file
        email.attach(f'order_{order.id}.pdf', out.getvalue(),
                     'application/pdf')
        # send e-mail
        email.send()
    except Exception as e:
        logger.error(
            f"payment_completed task send_mail failed: order_id={order_id}")
        raise e
Exemplo n.º 2
0
def ssh_execute(command):
    try:
        stdin, stdout, stderr = ssh.exec_command(command)
    except Exception as error:
        logger.error(error)
    return [out.replace("\n", '') for out in stdout.readlines()
            ], [err.replace("\n", '') for err in stderr.readlines()]
Exemplo n.º 3
0
def execute(cmd, shell=True):
    run = None
    try:
        run = subprocess.Popen(cmd,
                               shell=shell,
                               stdout=subprocess.PIPE,
                               stderr=subprocess.PIPE,
                               universal_newlines=True)
        output = run.stdout.read().rstrip().split("\n")
    except subprocess.CalledProcessError:
        error = run.stderr.read().rstrip().split("\n")
        logger.error(error)
        return error
    return output
Exemplo n.º 4
0
def order_created(order_id):
    """
    Task to send an e-mail notification when an order is
    successfully created.
    """
    try:
        order = Order.objects.get(id=order_id)
        subject = f'Order nr. {order.id}'
        message = f'Dear {order.first_name},\n\n' \
                f'You have successfully placed an order.' \
                f'Your order ID is {order.id}.'
        send_mail(subject, message, settings.EMAIL_HOST_USER + '@gmail.com',
                  [order.email])
    except Exception as e:
        logger.error(
            f"order_created task send_mail failed: order_id={order_id}")
        raise e
Exemplo n.º 5
0
def send_notification_to_followers_task(duration, obj_id):
    from blog.models import Post
    obj = Post.objects.get(id=int(obj_id))
    subject = f'New post in {obj.blog.title}'
    message = f'Hello new post link:{domain}{obj.get_absolute_url()}'
    is_task_completed = False
    error = ''
    receivers = []
    for follower in obj.blog.follower_set.all():
        receivers.append(follower.user.email)
    try:
        time.sleep(duration)
        is_task_completed = True
    except Exception as err:
        error = str(err)
        logger.error(error)
    if is_task_completed:
        send_mail_to(subject, message, receivers)
    else:
        send_mail_to(subject, error, receivers)
    return ('send_notification_to_followers_task done')
Exemplo n.º 6
0
def ssh_connect(host, user, key):
    private_key = paramiko.RSAKey.from_private_key(io.StringIO(key))
    try:
        ssh.connect(host, username=user, pkey=private_key)
    except Exception as error:
        logger.error(error)