Пример #1
0
    def get(self, emails):
        response = {'found': [], 'notFound': []}

        if (emails == 'feeling_lucky'):
            #I'm feeling lucky!
            luckyHacker = Hacker.query().get()
            response['found'].append({
                'email': luckyHacker.email,
                'secret': luckyHacker.secret
            })
            return self.response.write(json.dumps(response))

        emails = emails.split(',')

        for email in emails:
            hacker = Hacker.query(Hacker.email == email).fetch(
                projection=Hacker.secret)
            if len(hacker) > 0:
                response['found'].append({
                    'email': email,
                    'secret': hacker[0].secret
                })
            else:
                response['notFound'].append(email)

        self.response.write(json.dumps(response))
Пример #2
0
  def get(self):
    data = {}
    data['Signed Up'] = EmailListEntry.query().count()
    data['Registered'] = Hacker.query().count()
    data['Accepted'] = Hacker.query(Hacker.admitted_email_sent_date != None).count()
    data['Confirmed'] = Hacker.query(Hacker.rsvpd == True).count()
    data['Waitlisted'] = Hacker.query(Hacker.waitlist_email_sent_date != None).count()
    data['Declined'] = deletedHacker.DeletedHacker.query(deletedHacker.DeletedHacker.admitted_email_sent_date != None).count()

    self.response.write(json.dumps(data))
Пример #3
0
    def get(self):
        data = {}
        data['Signed Up'] = EmailListEntry.query().count()
        data['Registered'] = Hacker.query().count()
        data['Accepted'] = Hacker.query(
            Hacker.admitted_email_sent_date != None).count()
        data['Confirmed'] = Hacker.query(Hacker.rsvpd == True).count()
        data['Waitlisted'] = Hacker.query(
            Hacker.waitlist_email_sent_date != None).count()
        data['Declined'] = deletedHacker.DeletedHacker.query(
            deletedHacker.DeletedHacker.admitted_email_sent_date != None
        ).count()

        self.response.write(json.dumps(data))
Пример #4
0
def getAllHackers(projection=[], accepted=False):
    memcachedKey = memcachedBase + str(projection) + str(accepted)
    hackers = memcache.get(memcachedKey)
    if hackers is None:
        if projection:
            hackers = Hacker.query(projection=projection)
        else:
            hackers = Hacker.query()
        if accepted:
            hackers = hackers.filter(Hacker.admitted_email_sent_date != None)

        hackers = hackers.fetch()
        if not memcache.set(memcachedKey, hackers, cacheTime):
            logging.error("Memcache set failed")

    return hackers
Пример #5
0
    def get(self):
        if not onTeam(): return self.redirect('/')

        user = users.get_current_user()
        if not user:
          self.redirect(users.create_login_url(self.request.uri))
          return

        def formatter(person):
            JSON = {}
            key = getattr(person, 'key')
            JSON['id'] = key.urlsafe()
            JSON['kind'] = key.kind()
            JSON.update(person.asDict(['email', 'name', 'checked_in']))
            return JSON

        from models import Volunteer, Rep

        source = map(formatter, Hacker.query(Hacker.checked_in == False).fetch())
        source += map(formatter, Rep.query(Rep.checked_in == False).fetch())
        source += map(formatter, Volunteer.query(Volunteer.checked_in == False).fetch())

        total_checked_in = getTotal()

        session = models.CheckInSession()
        session.user = user.email()

        session.put()
        token = channel.create_channel(session.key.urlsafe())

        self.response.write(template("checkin.html", {"source" : json.dumps(source), 'total_checked_in' : total_checked_in, 'token' : token}))
Пример #6
0
def getAllHackers(projection=[], accepted=False):
    memcachedKey = memcachedBase + str(projection) + str(accepted)
    hackers = memcache.get(memcachedKey)
    if hackers is None:
        if projection:
            hackers = Hacker.query(projection=projection)
        else:
            hackers = Hacker.query()
        if accepted:
            hackers = hackers.filter(Hacker.admitted_email_sent_date != None)

        hackers = hackers.fetch()
        if not memcache.set(memcachedKey, hackers, cacheTime):
            logging.error("Memcache set failed")

    return hackers
Пример #7
0
	def post(self):
		to_put = []
		for h in itertools.chain(Hacker.query(), EmailListEntry.query()):
			if h.email != h.email.lower():
				h.email = h.email.lower()
				to_put.append(h)
		ndb.put_multi(to_put)
		self.response.write("Well, it seemed to work...")
Пример #8
0
 def post(self):
     to_put = []
     for h in itertools.chain(Hacker.query(), EmailListEntry.query()):
         if h.email != h.email.lower():
             h.email = h.email.lower()
             to_put.append(h)
     ndb.put_multi(to_put)
     self.response.write("Well, it seemed to work...")
Пример #9
0
    def get(self, number):
        if not isAdmin(): return self.redirect('/')

        if isMasterDB():
            return self.redirect('/')

        number = int(number)

        ndb.delete_multi(Hacker.query().fetch(limit=number, keys_only=True))
        self.response.write("Eliminated {0} hackers.".format(number))
Пример #10
0
    def get(self, number):
        if not isAdmin():
            return self.redirect("/")

        if isMasterDB():
            return self.redirect("/")

        number = int(number)

        ndb.delete_multi(Hacker.query().fetch(limit=number, keys_only=True))
        self.response.write("Eliminated {0} hackers.".format(number))
Пример #11
0
    def get(self):
        if not onTeam(): return self.redirect('/')

        keys = list(set(list(hacker_keys) + list(personal_info_keys) + list(non_required_keys) + ['status', 'admit_priority', 'rsvpd', 'checked_in', 'has_resume', 'secret', 'address1', 'address2', 'city', 'state', 'country', 'zip']))
        if (not self.request.get('include_personally_identifiable_info')) or not isAdmin():
            for key in personal_info_keys:
                keys.remove(key)
        self.response.headers['Content-Type'] = 'text/csv; charset=utf-8'
        writer = csv.DictWriter(self.response, fieldnames=keys)
        writer.writeheader()
        for hacker in Hacker.query():
          writer.writerow({key: unicode(val).encode('utf-8') for key, val in hacker.asDict(keys).iteritems()})
Пример #12
0
    def get(self, emails):
        response = {'found' : [], 'notFound' : []}

        if (emails == 'feeling_lucky'):
            #I'm feeling lucky!
            luckyHacker = Hacker.query().get()
            response['found'].append({'email': luckyHacker.email, 'secret' : luckyHacker.secret})
            return self.response.write(json.dumps(response))

        emails = emails.split(',')



        for email in emails:
            hacker = Hacker.query(Hacker.email == email).fetch(projection=Hacker.secret)
            if len(hacker) > 0:
                response['found'].append({'email' : email, 'secret' : hacker[0].secret})
            else:
                response['notFound'].append(email)

        self.response.write(json.dumps(response))
Пример #13
0
def getHackersToBeChecked():
    # Cache this value, results don't need to be updated quickly.
    toCheckIn = 'hackers_to_be_checked'
    data = memcache.get(toCheckIn)
    if data is not None:
        logging.debug("Used cache")
        return data
    else:
        data = Hacker.query(ndb.AND(Hacker.rsvpd == True, Hacker.checked_in != True)).fetch(projection=[Hacker.name, Hacker.email])
        logging.debug("Could not use cache")
        if not memcache.add(toCheckIn, data, cacheTime):
            logging.error('Memcache set failed')
    return data
Пример #14
0
		def post(self):
				hackers = Hacker.query(Hacker.phone_number == self.request.get('phone')).fetch(keys_only=True)

				request = MentorRequest()
				request.location = self.request.get('location')
				request.issue = self.request.get('issue')
				request.tags = self.request.get('tags').split(', ')
				if len(hackers):
					request.requester = hackers[0]
				request.requester_phone = self.request.get('phone')
				request.put()

				self.redirect('/?dayof=1#mrc') # #mrc: mentor-request-confirm (we don't want that showing up in URLs)
Пример #15
0
def getHackersToBeChecked():
    # Cache this value, results don't need to be updated quickly.
    toCheckIn = 'hackers_to_be_checked'
    data = memcache.get(toCheckIn)
    if data is not None:
        logging.debug("Used cache")
        return data
    else:
        data = Hacker.query(
            ndb.AND(Hacker.rsvpd == True, Hacker.checked_in != True)).fetch(
                projection=[Hacker.name, Hacker.email])
        logging.debug("Could not use cache")
        if not memcache.add(toCheckIn, data, cacheTime):
            logging.error('Memcache set failed')
    return data
Пример #16
0
def cleanup(property, jsonKeys):
    hackers = Hacker.query().filter(Hacker._properties[property].IN(jsonKeys.keys()))
    changed = []
    for hacker in hackers:
        newProp = jsonKeys.get(getattr(hacker, property, None), None)
        print(newProp)
        if newProp:
            setattr(hacker, property, newProp)
            changed.append(hacker)

    try:
        ndb.put_multi(changed)
    except Exception as err:
        return {"success": False, "msg": str(err.args[0])}

    successMsg = "Changed the " + property + " of " + str(len(changed)) + " hackers."
    return {"success": True, "msg": successMsg}
Пример #17
0
    def post(self):
        hackers = Hacker.query(
            Hacker.phone_number == self.request.get('phone')).fetch(
                keys_only=True)

        request = MentorRequest()
        request.location = self.request.get('location')
        request.issue = self.request.get('issue')
        request.tags = self.request.get('tags').split(', ')
        if len(hackers):
            request.requester = hackers[0]
        request.requester_phone = self.request.get('phone')
        request.put()

        self.redirect(
            '/?dayof=1#mrc'
        )  # #mrc: mentor-request-confirm (we don't want that showing up in URLs)
Пример #18
0
    def post(self):
        if not isAdmin(): return self.redirect('/')
        parsed_request = json.loads(self.request.body) # Angular apparently only sends json as text not as 'JSON'
        emails = parsed_request.get('emails')
        for address in emails:
            hacker = Hacker.query(Hacker.email == address).fetch()
            if hacker:
                for h in hacker: # should only be one
                    if parsed_request.get('change') == "Accept":
                        if h.admitted_email_sent_date == None:
                            accept_hacker(h)

                    if parsed_request.get('change') == "Remove":
                        deletedHacker.createDeletedHacker(h, "manual")
                        h.key.delete()

                    if parsed_request.get('change') == 'Waitlist':
                        if h.admitted_email_sent_date == None:
                            waitlist_hacker(h)
Пример #19
0
def cleanup(property, jsonKeys):
    hackers = Hacker.query().filter(Hacker._properties[property].IN(
        jsonKeys.keys()))
    changed = []
    for hacker in hackers:
        newProp = jsonKeys.get(getattr(hacker, property, None), None)
        print(newProp)
        if newProp:
            setattr(hacker, property, newProp)
            changed.append(hacker)

    try:
        ndb.put_multi(changed)
    except Exception as err:
        return {"success": False, "msg": str(err.args[0])}

    successMsg = "Changed the " + property + " of " + str(
        len(changed)) + " hackers."
    return {"success": True, "msg": successMsg}
Пример #20
0
def updateSchema(cursor=None, num_updated=0):
    to_put = []

    hackers, next_curs, more = Hacker.query().fetch_page(BATCH_SIZE,
                                                         start_cursor=cursor)

    for hacker in hackers:
        append = False

        #Making sure nobody is admitted
        hacker.admitted_email_sent_date = None

        #Changing receipts to a repeated property
        if hacker.receipts is None or hacker.receipts == [None]:
            hacker.receipts = []
            append = True
        elif isinstance(hacker.receipts, ndb.BlobKeyProperty):
            receipt = hacker.receipts
            hacker.receipts = [receipt]
            append = True

        #Removing schools with whitespace around them.
        if hacker.school.strip() != hacker.school:
            hacker.school = hacker.school.strip()
            append = True

        #Creating the reimbursement max field
        if hacker.rmax == 0 or hacker.rmax is None:
            hacker.rmax = reimbursement.getMax(hacker.school)
            append = True

        if append:
            to_put.append(hacker)

    if to_put:
        ndb.put_multi(to_put)
        num_updated += len(to_put)
        logging.debug('Put %d entities to Datastore for a total of %d',
                      len(to_put), num_updated)
        deferred.defer(updateSchema, cursor=next_curs, num_updated=num_updated)
    else:
        logging.debug('updateSchema complete with %d updates!', num_updated)
Пример #21
0
    def post(self):
        if not isAdmin(): return self.redirect('/')
        parsed_request = json.loads(
            self.request.body
        )  # Angular apparently only sends json as text not as 'JSON'
        emails = parsed_request.get('emails')
        for address in emails:
            hacker = Hacker.query(Hacker.email == address).fetch()
            if hacker:
                for h in hacker:  # should only be one
                    if parsed_request.get('change') == "Accept":
                        if h.admitted_email_sent_date == None:
                            accept_hacker(h)

                    if parsed_request.get('change') == "Remove":
                        deletedHacker.createDeletedHacker(h, "manual")
                        h.key.delete()

                    if parsed_request.get('change') == 'Waitlist':
                        if h.admitted_email_sent_date == None:
                            waitlist_hacker(h)
def updateSchema(cursor=None, num_updated=0):
    to_put = []

    hackers, next_curs, more = Hacker.query().fetch_page(BATCH_SIZE, start_cursor=cursor)

    for hacker in hackers:
        append = False

        # Making sure nobody is admitted
        hacker.admitted_email_sent_date = None

        # Changing receipts to a repeated property
        if hacker.receipts is None or hacker.receipts == [None]:
            hacker.receipts = []
            append = True
        elif isinstance(hacker.receipts, ndb.BlobKeyProperty):
            receipt = hacker.receipts
            hacker.receipts = [receipt]
            append = True

        # Removing schools with whitespace around them.
        if hacker.school.strip() != hacker.school:
            hacker.school = hacker.school.strip()
            append = True

        # Creating the reimbursement max field
        if hacker.rmax == 0 or hacker.rmax is None:
            hacker.rmax = reimbursement.getMax(hacker.school)
            append = True

        if append:
            to_put.append(hacker)

    if to_put:
        ndb.put_multi(to_put)
        num_updated += len(to_put)
        logging.debug("Put %d entities to Datastore for a total of %d", len(to_put), num_updated)
        deferred.defer(updateSchema, cursor=next_curs, num_updated=num_updated)
    else:
        logging.debug("updateSchema complete with %d updates!", num_updated)
Пример #23
0
    def get(self):
        if not onTeam(): return self.redirect('/')

        user = users.get_current_user()
        if not user:
            self.redirect(users.create_login_url(self.request.uri))
            return

        def formatter(person):
            JSON = {}
            key = getattr(person, 'key')
            JSON['id'] = key.urlsafe()
            JSON['kind'] = key.kind()
            JSON.update(person.asDict(['email', 'name', 'checked_in']))
            return JSON

        from models import Volunteer, Rep

        source = map(formatter,
                     Hacker.query(Hacker.checked_in == False).fetch())
        source += map(formatter, Rep.query(Rep.checked_in == False).fetch())
        source += map(formatter,
                      Volunteer.query(Volunteer.checked_in == False).fetch())

        total_checked_in = getTotal()

        session = models.CheckInSession()
        session.user = user.email()

        session.put()
        token = channel.create_channel(session.key.urlsafe())

        self.response.write(
            template(
                "checkin.html", {
                    "source": json.dumps(source),
                    'total_checked_in': total_checked_in,
                    'token': token
                }))
Пример #24
0
	def get_query(self):
		if self.audience == 'registered':
			return Hacker.query()
		elif self.audience == 'accepted':
			return Hacker.query(Hacker.admitted_email_sent_date != None)
		elif self.audience == 'accepted-non-local':
			return Hacker.query(Hacker.admitted_email_sent_date != None)
		elif self.audience == 'invited-friends':
			return Hacker.query(Hacker.teammates != None)
		elif self.audience == 'mailing-list-unregistered':
			return EmailListEntry.query()
		elif self.audience == 'waitlisted':
			print "sending waitlisted emails: " + str(Hacker.query(Hacker.admitted_email_sent_date == None).count())
			return Hacker.query(Hacker.admitted_email_sent_date == None)
		elif self.audience == 'hardware-hackers':
			print "sending emails to admitted hardware-hackers: " +  str(Hacker.query(Hacker.admitted_email_sent_date != None, Hacker.hardware_hack == 'yes').count())
			return Hacker.query(Hacker.admitted_email_sent_date != None, Hacker.hardware_hack == 'yes')
		elif self.audience == 'accepted-highschool-freshmen':
			print "sending emails to accepted highschool and freshman hackers"
			return Hacker.query(ndb.AND(Hacker.admitted_email_sent_date != None, ndb.OR(Hacker.year == 'highschool', Hacker.year == 'freshman')))
		elif self.audience == 'local-waitlisted':
			print "sending emails to local waitlisted hackers: "
			return Hacker.query(Hacker.admitted_email_sent_date == None)
		elif self.audience == 'rsvped-first-time':
			print "sending emails to rsvped-first-time hackers"
			return Hacker.query(ndb.AND(Hacker.rsvpd == True, Hacker.first_hackathon =='yes'))
		elif self.audience == 'checked-in':
			print 'sending emails to checked-in hackers: ' + str(Hacker.query(Hacker.checked_in == True).count())
			return Hacker.query(Hacker.checked_in == True)
		elif self.audience == 'accepted-local':
			print "sending emails to accepted-local"
			return Hacker.query(Hacker.admitted_email_sent_date != None)
		elif self.audience == None:
			return None
		else:
			assert 0, "Unknown audience"
Пример #25
0
	def send_to_entity_async(self, entity):
		try:
			if self.audience == 'invited-friends':
				# don't actually send to the hacker -- send to their friends
				hacker = entity
				if hacker.teammates:
					emails = [email.lower() for email in hacker.teammates.split(',')]
					matching_hackers = yield Hacker.query(Hacker.email.IN(emails)).fetch_async()
					emails_already_registered = [h.email for h in matching_hackers]
					for email in emails:
						if email not in emails_already_registered:
							self.send_to_email(email, {"invited_by": hacker})
			elif self.audience == 'registered': # send emails directly to hackers
				hacker = entity
				if hacker.email and self.email_subject:
					self.send_to_email(hacker.email, {"hacker": hacker})
				if hacker.phone_number and self.sms_text:
					self.send_to_phone(hacker.phone_number)
			elif self.audience == 'mailing-list-unregistered':
				email = entity.email
				is_registered = (yield Hacker.query(Hacker.email == email).count_async()) > 0
				if not is_registered:
					self.send_to_email(email, {})
			elif self.audience == 'waitlisted':
				hacker = entity
				hacker.waitlist_email_sent_date = datetime.datetime.now()
				self.send_to_email(hacker.email, {"hacker": hacker, "name":hacker.name.split(" ")[0]})
				hacker.put()
			elif self.audience == 'hardware-hackers': #also send directly to hackers
				hacker = entity
				if hacker.email and self.email_subject:
					self.send_to_email(hacker.email, {"hacker": hacker, "name":hacker.name.split(" ")[0]})
				if hacker.phone_number and self.sms_text:
					self.send_to_phone(hacker.phone_number)
			elif self.audience == 'accepted':
				hacker = entity
				if hacker.email and self.email_subject:
					self.send_to_email(hacker.email, {"hacker": hacker, "name":hacker.name.split(" ")[0]})
				if hacker.phone_number and self.sms_text:
					self.send_to_phone(hacker.phone_number)
			elif self.audience == 'accepted-non-local':
				hacker = entity
				if hacker.school == "Brown University" or hacker.school == "Rhode Island School of Design":
					return
				if hacker.email and self.email_subject:
					self.send_to_email(hacker.email, {"hacker": hacker, "name":hacker.name.split(" ")[0]})
				if hacker.phone_number and self.sms_text:	
					self.send_to_phone(hacker.phone_number)
			elif self.audience == 'local-waitlisted':
				hacker = entity
				print hacker.school
				if hacker.school != "Brown University" and hacker.school != "Rhode Island School of Design":
					return
				if hacker.email and self.email_subject:
					self.send_to_email(hacker.email, {"hacker": hacker, "name":hacker.name.split(" ")[0]})
				if hacker.phone_number and self.sms_text:
					self.send_to_phone(hacker.phone_number)
			elif self.audience == 'accepted-highschool-freshmen':
				hacker = entity
				if hacker.email and self.email_subject:
					self.send_to_email(hacker.email, {"hacker": hacker, "name":hacker.name.split(" ")[0]})
				if hacker.phone_number and self.sms_text:
					self.send_to_phone(hacker.phone_number)
			elif self.audience == 'rsvped-first-time':
				hacker = entity
				if hacker.email and self.email_subject:
					self.send_to_email(hacker.email, {"hacker": hacker, "name":hacker.name.split(" ")[0]})
				if hacker.phone_number and self.sms_text:
					self.send_to_phone(hacker.phone_number)
			elif self.audience == 'checked-in':
				hacker = entity
				if hacker.email and self.email_subject:
					self.send_to_email(hacker.email, {"hacker": hacker, "name":hacker.name.split(" ")[0]})
				if hacker.phone_number and self.sms_text:
					self.send_to_phone(hacker.phone_number)
			elif self.audience == 'accepted-local':
				hacker = entity
				print hacker.school
				if hacker.school != "Brown University" and hacker.school != "Rhode Island School of Design":
					return
				if hacker.email and self.email_subject:
					self.send_to_email(hacker.email, {"hacker": hacker, "name":hacker.name.split(" ")[0]})
				if hacker.phone_number and self.sms_text:
					self.send_to_phone(hacker.phone_number)

		except Exception as e:
			print "Failed to send email '{0}' to '{1} because {2}'".format(self.email_subject, entity.email, e)
Пример #26
0
def getTotalFromDB():
    from models import Volunteer, Rep
    total_checked_in = Hacker.query(Hacker.checked_in == True).count()
    total_checked_in += Rep.query(Rep.checked_in == True).count()
    total_checked_in += Volunteer.query(Volunteer.checked_in == True).count()
    return total_checked_in
Пример #27
0
def createTestHacker(number):

    shirts = ['XS', 'S', 'M', 'L', 'XL', 'XXL']

    def prob():
        return random.uniform(0.0, 10.0)

    hacker = Hacker()
    hacker.name = "Hacker {0}".format(number)
    hacker.school = "Brown University" if prob() < 3 else "Another University"

    hacker.year = "freshman"
    if prob() < 3:
        hacker.year = "sophomore"
    elif prob() < 3:
        hacker.year = "junior"
    elif prob() < 3:
        hacker.year = "senior"

    hacker.email = "hacker_{0}@{1}.edu".format(
        number,
        hacker.school.lower().split(" ")[0])
    hacker.secret = generate_secret_for_hacker_with_email(hacker.email)

    hacker.shirt_gen = "M" if prob() < 5 else "W"
    hacker.shirt_size = random.choice(shirts)

    rawDiet = [
        "Vegetarian", "Vegan", "Gluten Free", "Kosher", "Lactose Intolerant",
        "Nuts Allergy", "Treenuts Allergy", "Soy Allergy", "Shellfish Allergy",
        "Corn Allergy", "No Pork", "No Ham", "No Beef", "No Mutton", "Halal",
        "No Red Meat", "None"
    ]
    drs = []
    while prob() < 2:
        item = random.choice(rawDiet)
        rawDiet.remove(item)
        drs.append(item)

    hacker.dietary_restrictions = ','.join(drs)

    tms = []
    while prob() < 2:
        tms.append("hacker_{0}@another.edu".format(random.randint(0, number)))

    hacker.teammates = ','.join(tms)

    hacker.hardware_hack = "yes" if prob() > 8 else "no"
    hacker.first_hackathon = "yes" if prob() > 7 else "no"

    def numberString(length):
        return ''.join(
            map(lambda x: str(random.randint(0, 9)), range(0, length)))

    if prob() < 1:
        hacker.phone_number = numberString(10)

    #MOst will be confirmed, some will be waitlisted.
    if prob() < 8:
        hacker.rsvpd = True
    elif prob() < 3:
        hacker.waitlist_email_sent_date = datetime.datetime.now()

    states = [
        "AL", "AK", "AZ", "AR", "CA", "CO", "CT", "DE", "FL", "GA", "HI", "ID",
        "IL", "IN", "IA", "KS", "KY", "LA", "ME", "MD", "MA", "MI", "MN", "MS",
        "MO", "MT", "NE", "NV", "NH", "NJ", "NM", "NY", "NC", "ND", "OH", "OK",
        "OR", "PA", "RI", "SC", "SD", "TN", "TX", "UT", "VT", "VA", "WA", "WV",
        "WI", "WY"
    ]

    hacker.address1 = "Creative"
    hacker.address2 = "Address"
    hacker.city = "City"
    hacker.country = "Country"
    hacker.state = random.choice(states)
    hacker.zip = numberString(5)

    if hacker.school == "Another University":
        hacker.rmax = 1000
    else:
        hacker.rmax = 0

    hacker.rtotal = random.randint(0, hacker.rmax)

    return hacker
Пример #28
0
def getTotalFromDB():
    from models import Volunteer, Rep
    total_checked_in = Hacker.query(Hacker.checked_in == True).count()
    total_checked_in += Rep.query(Rep.checked_in == True).count()
    total_checked_in += Volunteer.query(Volunteer.checked_in == True).count()
    return total_checked_in
Пример #29
0
def createTestHacker(number):

    shirts = ["XS", "S", "M", "L", "XL", "XXL"]

    def prob():
        return random.uniform(0.0, 10.0)

    hacker = Hacker()
    hacker.name = "Hacker {0}".format(number)
    hacker.school = "Brown University" if prob() < 3 else "Another University"

    hacker.year = "freshman"
    if prob() < 3:
        hacker.year = "sophomore"
    elif prob() < 3:
        hacker.year = "junior"
    elif prob() < 3:
        hacker.year = "senior"

    hacker.email = "hacker_{0}@{1}.edu".format(number, hacker.school.lower().split(" ")[0])
    hacker.secret = generate_secret_for_hacker_with_email(hacker.email)

    hacker.shirt_gen = "M" if prob() < 5 else "W"
    hacker.shirt_size = random.choice(shirts)

    rawDiet = [
        "Vegetarian",
        "Vegan",
        "Gluten Free",
        "Kosher",
        "Lactose Intolerant",
        "Nuts Allergy",
        "Treenuts Allergy",
        "Soy Allergy",
        "Shellfish Allergy",
        "Corn Allergy",
        "No Pork",
        "No Ham",
        "No Beef",
        "No Mutton",
        "Halal",
        "No Red Meat",
        "None",
    ]
    drs = []
    while prob() < 2:
        item = random.choice(rawDiet)
        rawDiet.remove(item)
        drs.append(item)

    hacker.dietary_restrictions = ",".join(drs)

    tms = []
    while prob() < 2:
        tms.append("hacker_{0}@another.edu".format(random.randint(0, number)))

    hacker.teammates = ",".join(tms)

    hacker.hardware_hack = "yes" if prob() > 8 else "no"
    hacker.first_hackathon = "yes" if prob() > 7 else "no"

    def numberString(length):
        return "".join(map(lambda x: str(random.randint(0, 9)), range(0, length)))

    if prob() < 1:
        hacker.phone_number = numberString(10)

    # MOst will be confirmed, some will be waitlisted.
    if prob() < 8:
        hacker.rsvpd = True
    elif prob() < 3:
        hacker.waitlist_email_sent_date = datetime.datetime.now()

    states = [
        "AL",
        "AK",
        "AZ",
        "AR",
        "CA",
        "CO",
        "CT",
        "DE",
        "FL",
        "GA",
        "HI",
        "ID",
        "IL",
        "IN",
        "IA",
        "KS",
        "KY",
        "LA",
        "ME",
        "MD",
        "MA",
        "MI",
        "MN",
        "MS",
        "MO",
        "MT",
        "NE",
        "NV",
        "NH",
        "NJ",
        "NM",
        "NY",
        "NC",
        "ND",
        "OH",
        "OK",
        "OR",
        "PA",
        "RI",
        "SC",
        "SD",
        "TN",
        "TX",
        "UT",
        "VT",
        "VA",
        "WA",
        "WV",
        "WI",
        "WY",
    ]

    hacker.address1 = "Creative"
    hacker.address2 = "Address"
    hacker.city = "City"
    hacker.country = "Country"
    hacker.state = random.choice(states)
    hacker.zip = numberString(5)

    if hacker.school == "Another University":
        hacker.rmax = 1000
    else:
        hacker.rmax = 0

    hacker.rtotal = random.randint(0, hacker.rmax)

    return hacker