def check_award(self,award, profile): give_sponsorship = {} # check for targetted sponsorships - not in use right now """ for pledge in award.winner.sponsorships_pledged_to_me: # eventually allow for corporate sponsor checks. # This should use zip(). if award.winner.unique_identifier == pledge.sponsor.unique_identifier: continue #can't sponsor yourself. TODO: this should be done before now! give_sponsorship[pledge] = True # check to make sure it hasn't been awarded yet. existing_sponsorships = pledge.sponsorships.fetch(1000) if existing_sponsorships: if award.winner in existing_sponsorships: give_sponsorship[pledge] = False if give_sponsorship[pledge] == True: self.give_sponsorship(pledge, award) # not using these yet! Personal sponsorships. """ # check for business sponsorship from model.employer import AutoPledge auto_pledges = AutoPledge.gql("WHERE proficiency = :1", award.proficiency).fetch(1000) #untargetted sponsorships logging.info('checking %d sponsor autopledges for quiz subject %s awarded to user %s' % ( len(auto_pledges), award.proficiency.name, profile.unique_identifier)) # maybe randomize sponsor selection already_biz_sponsors = [s.sponsor.unique_identifier for s in award.winner.sponsorships] biz_sponsor_profiles = [] # TODO: Make sure that users aren't getting sponsored twice for one award, on subsequent sessions for pledge in auto_pledges: biz_profile = Profile.get_by_key_name(pledge.employer.unique_identifier) if not biz_profile: continue #old references were causing Attribute Error if biz_profile.unique_identifier in already_biz_sponsors: continue # don't let business sponsor user twice if biz_profile.unique_identifier in biz_sponsor_profiles: continue # catch unsaved business sponsors if biz_profile.fullname.lower() == "plopquiz": continue # plopquiz shouldn't sponsor a student twice. TODO: better solution self.give_biz_sponsorship(pledge, award, biz_profile) biz_sponsor_profiles.append(biz_profile.unique_identifier) pledge.count -= 1 if pledge.count == 0: pledge.delete() else: self.save_sponsorships.append(pledge) break # only give one sponsorship per award return
def add_auto_pledge(self, *args): if not args: return "Specify A Business Identifier, Proficiency Name, and Number of Pledges." if len(args) > 3: return "Specify A Business Identifier, Proficiency Name, and Number of Pledges." business_name = args[0] from model.employer import Employer this_employer = Employer.get_by_key_name(business_name) if not this_employer: return "employer does not exist" proficiency_name = args[1] from model.proficiency import Proficiency #import string -- Capwords sucks, darnit. #this_proficiency = Proficiency.get_by_key_name(string.capwords(proficiency_name)) this_proficiency = Proficiency.get_by_key_name(proficiency_name) pledge_num = int(args[2]) from model.employer import AutoPledge new_pledge = AutoPledge(employer = this_employer, proficiency = this_proficiency, count = pledge_num) new_pledge.put() return encode(new_pledge)