Esempio n. 1
0
def send_payment_mail(member, amount):
    msg = MIMEMultipart()
    msg['From'] = '*****@*****.**'
    msg['To'] = member.email
    msg['Subject'] = 'Stregsystem payment'

    formatted_amount = money(amount)

    html = f"""
    <html>
        <head></head>
        <body>
            <p>Hej {member.firstname}!<br><br>
               Vi har indsat {formatted_amount} stregdollars på din konto: "{member.username}". <br><br>
               Hvis du ikke ønsker at modtage flere mails som denne kan du skrive en mail til: <a href="mailto:[email protected]?Subject=Klage" target="_top">[email protected]</a><br><br>
               Mvh,<br>
               TREOen<br>
               ====================================================================<br>
               Hello {member.firstname}!<br><br>
               We've inserted {formatted_amount} stregdollars on your account: "{member.username}". <br><br>
               If you do not desire to receive any more mails of this sort, please file a complaint to: <a href="mailto:[email protected]?Subject=Klage" target="_top">[email protected]</a><br><br>
               Kind regards,<br>
               TREOen
        </body>
    </html>
    """

    msg.attach(MIMEText(html, 'html'))

    try:
        smtpObj = smtplib.SMTP('localhost', 25)
        smtpObj.sendmail('*****@*****.**', member.email, msg.as_string())
    except Exception as e:
        logger.error(str(e))
Esempio n. 2
0
def sales_api(request):
    startTime_month = timezone.now() - datetime.timedelta(days=30)
    qs = (Sale.objects.filter(timestamp__gt=startTime_month).annotate(
        day=TruncDay('timestamp')).values('day').annotate(
            c=Count('*')).annotate(r=Sum('price')))
    db_sales = {i["day"].date(): (i["c"], money(i["r"])) for i in qs}
    base = timezone.now().date()
    date_list = [base - datetime.timedelta(days=x) for x in range(0, 30)]

    sales_list = []
    revenue_list = []
    for date in date_list:
        if date in db_sales:
            sales, revenue = db_sales[date]
            sales_list.append(sales)
            revenue_list.append(revenue)
        else:
            sales_list.append(0)
            revenue_list.append(0)

    items = {
        "day": date_list,
        "sales": sales_list,
        "revenue": revenue_list,
    }
    return JsonResponse(items)
Esempio n. 3
0
def sale_money_rank(from_time, to_time, rank_limit=10):
    stat_list = Member.objects.filter(active=True, sale__timestamp__gt=from_time,
                                      sale__timestamp__lte=to_time).annotate(Sum('sale__price')).order_by(
        '-sale__price__sum', 'username')[:rank_limit]
    for member in stat_list:
        member.sale__price__sum__formatted = money(member.sale__price__sum)
    return stat_list
Esempio n. 4
0
def sales_product(request, ids, from_time, to_time, error=None):
    date_format = '%Y-%m-%d'

    if error is not None:
        return render(request,
                      'admin/stregsystem/report/error_invalidsalefetch.html',
                      {'error': error})

    try:
        from_time_date = datetime.datetime.strptime(from_time, date_format)
        from_date_time_tz_aware = timezone.datetime(from_time_date.year,
                                                    from_time_date.month,
                                                    from_time_date.day,
                                                    tzinfo=pytz.UTC)
    except (ValueError, TypeError):
        from_date_time_tz_aware = first_of_month(timezone.now())
    from_time = from_date_time_tz_aware.strftime(date_format)

    try:
        to_date_time = late(timezone.datetime.strptime(to_time, date_format))
        to_date_time_tz_aware = timezone.datetime(to_date_time.year,
                                                  to_date_time.month,
                                                  to_date_time.day,
                                                  tzinfo=pytz.UTC)
    except (ValueError, TypeError):
        to_date_time = timezone.now()
    to_time = to_date_time.strftime(date_format)
    sales = []
    if ids is not None and len(ids) > 0:
        products = reduce(lambda a, b: a + str(b) + ' ', ids, '')
        query = reduce(lambda x, y: x | y, [Q(id=z) for z in ids])
        query &= Q(sale__timestamp__gt=from_date_time_tz_aware)
        query &= Q(sale__timestamp__lte=to_date_time_tz_aware)
        result = Product.objects.filter(query).annotate(
            Count('sale'), Sum('sale__price'))

        count = 0
        sum = 0
        for r in result:
            sales.append(
                (r.pk, r.name, r.sale__count, money(r.sale__price__sum)))
            count = count + r.sale__count
            sum = sum + r.sale__price__sum

        sales.append(('', 'TOTAL', count, money(sum)))

    return render(request, 'admin/stregsystem/report/sales.html', locals())
Esempio n. 5
0
 def __unicode__(self):
     return self.member.username + " " + self.product.name + " (" + money(
         self.price) + ") " + str(self.timestamp)
Esempio n. 6
0
 def price_display(self):
     return money(self.price) + " kr."
Esempio n. 7
0
 def __unicode__(self):
     return self.product.name + ": " + money(self.price) + " (" + str(
         self.changed_on) + ")"
Esempio n. 8
0
 def __unicode__(self):
     return active_str(self.active) + " " + self.name + " (" + money(
         self.price) + ")"
Esempio n. 9
0
 def __unicode__(self):
     return self.member.username + " " + str(self.timestamp) + ": " + money(
         self.amount)
Esempio n. 10
0
 def amount_display(self):
     return money(self.amount) + " kr."
Esempio n. 11
0
 def __unicode__(self):
     return self.username + active_str(
         self.active) + ": " + self.email + " " + money(self.balance)
Esempio n. 12
0
 def balance_display(self):
     return money(self.balance) + " kr."
Esempio n. 13
0
def price_display(value):
    return money(value) + " kr."
Esempio n. 14
0
 def __str__(self):
     return active_str(
         self.active
     ) + " " + self.username + ": " + self.firstname + " " + self.lastname + " | " + self.email + " (" + money(
         self.balance) + ")"
Esempio n. 15
0
 def get_amount_display(self, obj):
     return money(obj.amount)