def POST_unnominate(self, form, jquery, organization): if not feature.is_enabled('reddit_donate'): return self.abort404() if form.has_errors("organization", errors.DONATE_UNKNOWN_ORGANIZATION): return DonationNominationsByAccount.unnominate( c.user, organization, )
def GET_nominations(self, responder): if not feature.is_enabled('reddit_donate'): return self.abort404() nominated_org_ids = DonationNominationsByAccount.get_for(c.user) orgs = DonationOrganization.byEIN(nominated_org_ids) wrapped = inject_nomination_status(orgs, assume_nominated=True) return wrapped
def POST_nominate(self, form, jquery, organization): if not feature.is_enabled('reddit_donate'): return self.abort404() if form.has_errors("organization", errors.DONATE_UNKNOWN_ORGANIZATION): return if form.has_errors("eligible", errors.DONATE_ACCOUNT_NOT_ELIGIBLE): return if form.has_errors("ratelimit", errors.RATELIMIT): return else: VRatelimit.ratelimit( rate_user=True, prefix="donate_nominate_", seconds=NOMINATION_COOLDOWN, ) DonationNominationsByAccount.nominate( c.user, organization, )
def inject_nomination_status(organizations, assume_nominated=False): nominations = {} if c.user_is_loggedin: if not assume_nominated: nominations = DonationNominationsByAccount.fast_query( c.user, organizations) else: nominations = {(c.user, org): True for org in organizations} wrapped = [] for org in organizations: data = org.data.copy() data["Nominated"] = (c.user, org) in nominations wrapped.append(data) return wrapped
def GET_landing(self, eligible, organization): if not feature.is_enabled('reddit_donate'): return self.abort404() if c.user_is_loggedin: nomination_count = DonationNominationsByAccount.count(c.user) else: nomination_count = None if organization: wrapped_organization = inject_nomination_status([organization]) else: wrapped_organization = None content = pages.DonateLanding( eligible=eligible, ) og_data = { "site_name": "reddit.com", } if organization: og_data["title"] = "reddit donate: vote for %s" % organization.data["DisplayName"] og_data["url"] = join_urls(g.origin, "donate?organization=%s" % organization.data["EIN"]) else: og_data["title"] = "reddit donate: giving 10% back" og_data["url"] = join_urls(g.origin, "donate") return pages.DonatePage( title=_("reddit donate"), content=content, og_data=og_data, extra_js_config={ "unloadedNominations": nomination_count, "accountIsEligible": eligible, "organization": wrapped_organization, }, ).render()
def GET_landing(self, eligible, organization): if not feature.is_enabled('reddit_donate'): return self.abort404() if c.user_is_loggedin: nomination_count = DonationNominationsByAccount.count(c.user) else: nomination_count = None if organization: wrapped_organization = inject_nomination_status([organization]) else: wrapped_organization = None content = pages.DonateLanding(eligible=eligible, ) og_data = { "site_name": "reddit.com", } if organization: og_data[ "title"] = "reddit donate: vote for %s" % organization.data[ "DisplayName"] og_data["url"] = join_urls( g.origin, "donate?organization=%s" % organization.data["EIN"]) else: og_data["title"] = "reddit donate: giving 10% back" og_data["url"] = join_urls(g.origin, "donate") return pages.DonatePage( title=_("reddit donate"), content=content, og_data=og_data, extra_js_config={ "unloadedNominations": nomination_count, "accountIsEligible": eligible, "organization": wrapped_organization, }, ).render()