Django Report Summary Email Function

  • Share this:

Code introduction


This function is used to send an email summary to the user containing the summary of their report, using Django's email sending capabilities and database querying.


Technology Stack : Django, Django.core.mail, Django.db.models, Django.utils.timezone, send_mail, aggregate, Sum, timezone.now, Report, Report.objects, get, items, quantity, user, username, report_date

Code Type : The type of code

Code Difficulty : Advanced


                
                    
import random
from django.core.mail import send_mail
from django.db.models import Sum
from django.utils.timezone import now

def send_summary_email(report_id, user_email):
    """
    This function sends a summary email to the user containing the summary of their report.
    It uses Django's email sending capabilities and database querying.
    """
    # Fetch the report data from the database using the report_id
    report = Report.objects.get(id=report_id)
    
    # Calculate the total number of items in the report
    total_items = report.items.aggregate(Sum('quantity'))
    
    # Prepare the email message
    message = f"Hello, {report.user.username}!\n\nYour report summary for {report.report_date} is as follows:\nTotal items: {total_items['items__sum'] or 0}\n"
    
    # Send the email
    send_mail(
        'Report Summary',
        message,
        'from@example.com',
        [user_email],
        fail_silently=False,
    )