Example #1
0
	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
Example #2
0
File: rpc.py Project: jamslevy/PQ
 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)