Esempio n. 1
0
    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 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
Esempio n. 4
0
 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,
        )
Esempio n. 6
0
    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
Esempio n. 8
0
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()
Esempio n. 10
0
    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()