def give_awards(): import re from r2.models import Account, Subreddit, Award from r2.lib import utils from datetime import datetime, timedelta q = Account._query(Account.c._spam == False, Account.c._deleted == False, sort = asc('_date'), #Account.c.link_karma>-1, limit = 1000, data = True) i=0 ctime = datetime.now(g.tz) for account in utils.fetch_things2(q): prev_visit = last_visit(account) if not prev_visit: print "%s hasn't logged in for a long time" % account.name continue if (ctime - prev_visit).days > 90: print "%s hasn't logged in for %d days" % (account.name,(ctime-prev_visit).days) continue tsince = ctime - account._date if tsince.days < 30: Award.give_if_needed("newbie", account) elif tsince.days >= 30: Award.take_away("newbie", account) if tsince.days >= 365 and tsince.days < 365*2: Award.give_if_needed("1year", account) elif tsince.days >= 365*2: Award.take_away("1year", account) Award.give_if_needed("2years", account) if account.email_verified: print "%s has verified email: %s" % (account.name,account.email) Award.give_if_needed("verified_email", account)
def engolden(self, account, days): from r2.models import Award account.gold = True now = datetime.now(g.display_tz) existing_expiration = getattr(account, "gold_expiration", None) if existing_expiration is None or existing_expiration < now: existing_expiration = now account.gold_expiration = existing_expiration + timedelta(days) description = "Since " + now.strftime("%B %Y") trophy = Award.give_if_needed("reddit_gold", account, description=description, url="/gold/about") if trophy and trophy.description.endswith("Member Emeritus"): trophy.description = description trophy._commit() account._commit() account.friend_rels_cache(_update=True)