def on_cannot_refund_email(sender, **kwargs): userfund = kwargs["userfund"] today = datetime.datetime.now().date() if userfund.remind_date: # user was reminded previously delay = 2 ** userfund.remind_count # exponential backoff avoid spamming next_remind_date = userfund.remind_date + datetime.timedelta(days=delay) if today < next_remind_date: return # to soon to remind user emails = [email.get_emailaddress_or_404(userfund.user)] subject = "userfund/email/cannot_refund_subject.txt" message = "userfund/email/cannot_refund_message.txt" email.send(emails, subject, message, kwargs) userfund.remind_count = userfund.remind_count + 1 userfund.remind_date = today userfund.save()
def on_cannot_refund_email(sender, **kwargs): userfund = kwargs["userfund"] today = datetime.datetime.now().date() if userfund.remind_date: # user was reminded previously delay = 2**userfund.remind_count # exponential backoff avoid spamming next_remind_date = userfund.remind_date + datetime.timedelta( days=delay) if today < next_remind_date: return # to soon to remind user emails = [email.get_emailaddress_or_404(userfund.user)] subject = "userfund/email/cannot_refund_subject.txt" message = "userfund/email/cannot_refund_message.txt" email.send(emails, subject, message, kwargs) userfund.remind_count = userfund.remind_count + 1 userfund.remind_date = today userfund.save()
def dashboard(request): user = request.user ongoing = ['PENDING', 'ACTIVE', 'MEDIATION'] archived = ['FINISHED', 'CANCELLED', 'DELETED'] invested = UserFund.objects.filter(user=user) invested = invested.exclude(cashed_funds_received=Decimal("0.0")) filters = Q(created_by=user) | Q(userfunds__in=invested) bounties = set(Bounty.objects.filter(filters).order_by('-deadline')) # XXX set claims = user.claims.select_related("bounty").all().order_by('-created_on') args = { "primary_email" : email.get_emailaddress_or_404(user), "bounties_ongoing" : filter(lambda b: b.state in ongoing, bounties), "bounties_archived" : filter(lambda b: b.state in archived, bounties), "claims_ongoing" : filter(lambda c: c.bounty.state in ongoing, claims), "claims_archived" : filter(lambda c: c.bounty.state in archived, claims), } return render_response(request, 'accounts/dashboard.html', args)
def dashboard(request): user = request.user ongoing = ['PENDING', 'ACTIVE', 'MEDIATION'] archived = ['FINISHED', 'CANCELLED', 'DELETED'] invested = UserFund.objects.filter(user=user) invested = invested.exclude(cashed_funds_received=Decimal("0.0")) filters = Q(created_by=user) | Q(userfunds__in=invested) bounties = set( Bounty.objects.filter(filters).order_by('-deadline')) # XXX set claims = user.claims.select_related("bounty").all().order_by('-created_on') args = { "primary_email": email.get_emailaddress_or_404(user), "bounties_ongoing": filter(lambda b: b.state in ongoing, bounties), "bounties_archived": filter(lambda b: b.state in archived, bounties), "claims_ongoing": filter(lambda c: c.bounty.state in ongoing, claims), "claims_archived": filter(lambda c: c.bounty.state in archived, claims), } return render_response(request, 'accounts/dashboard.html', args)
def on_refunded_email(sender, **kwargs): emails = [email.get_emailaddress_or_404(kwargs["userfund"].user)] subject = "userfund/email/refunded_subject.txt" message = "userfund/email/refunded_message.txt" email.send(emails, subject, message, kwargs)
def on_payout_email(sender, **kwargs): emails = [email.get_emailaddress_or_404(kwargs["claim"].user)] subject = "claim/email/payout_subject.txt" message = "claim/email/payout_message.txt" email.send(emails, subject, message, kwargs)
def on_successful_email_winning_claimant(sender, **kwargs): emails = [email.get_emailaddress_or_404(kwargs["claim"].user)] subject = "claim/email/winning_claimant_subject.txt" message = "claim/email/winning_claimant_message.txt" email.send(emails, subject, message, kwargs)
def _investor_emails(claim): is_investor = lambda uf: uf.user == claim.bounty.created_by or uf.received userfunds = filter(is_investor, claim.bounty.userfunds.all()) return map(lambda uf: email.get_emailaddress_or_404(uf.user), userfunds)