def post(self): post = self.request.POST if post['kind'] == 'badge': badge = Badge(name=post['name'], description=post['description'], category=post['category'], image=post['image'], value=int(post['value'])) badge.save() elif post['kind'] == 'article': date = datetime.datetime.strptime(post['date'], '%Y-%m-%d').date() article = NewsArticle(title=post['title'], author=post['author'], body=post['body'], date=date) article.save() elif post['kind'] == 'award': badge = Badge.get_by_id(int(post['badge'])) for member in post.getall('members'): member = Member.get_by_id(int(member)) award = Award(member=member, badge=badge, date=datetime.date.today(), proof=post['proof']) award.save() elif post['kind'] == 'talk': talk = Talk(title=post['title'], date=datetime.datetime.strptime( post['date'], '%Y-%m-%d').date(), description=post['description'], member=Member.get_by_id(int(post['member'])), video=post['video']) talk.put() self.get()
def dashboard(request): ''' This function shows the lastgame events and the user private messages. If is the users first time, it appends to his account the inicial credits. ''' #requests user credits total_credits=UserCredit.objects.filter(user=request.user) #if is the first time adds the credits if len(total_credits) == 0: inicial_credits=UserCredit(user=request.user, current_credits=DEFAULT_CREDITS) inicial_credits.save() total_credits=inicial_credits badge=Award(title="Tester", winner=request.user, creation_date=datetime.date.today(), badge="firstbadge.png") badge.save() else: total_credits=total_credits[0] #gets the menu elements and game events from the database menu_items=MenuItem.objects.all() last_events=GEvent.objects.all()[:20] #gets users private messagens and send form private_messages=PrivateMessage.objects.filter(receiver=request.user) form=MessageForm() #render page and reply to user return render_to_response('dash.html',{'user':request.user.username, 'name':request.user.first_name,'menu_items':menu_items, 'credits':total_credits.current_credits, 'last_events':last_events, 'private_messages':private_messages, 'form':form}, RequestContext(request))
def add_award(request): if request.method == 'POST': form = AwardForm(request.POST) if form.is_valid(): user = request.user title = form.cleaned_data['title'] date = form.cleaned_data['date'] description = form.cleaned_data['description'] award = Award(member=user, title=title, date=date, description=description) award.save() return redirect('member:profile') else: return render_to_response('member/add_award.html', { 'form': form, }, RequestContext(request)) else: form = AwardForm() return render_to_response('member/add_award.html', { 'form': form, }, RequestContext(request))
def post(self): post = self.request.POST if post['kind'] == 'badge': b = Badge(name=post['name'], description=post['description'], category=post['category'], image=post['image'], value=int(post['value'])) b.save() elif post['kind'] == 'article': a = NewsArticle(title=post['title'], author=post['author'], body=post['body'], date=datetime.date.today()) a.save() elif post['kind'] == 'award': badge = Badge.gql('WHERE name = :1', post['badge']).get() for h in post.getall('hackers'): hacker = Hacker.gql('WHERE handle = :1', h).get() a = Award(hacker=hacker, badge=badge, date=datetime.date.today(), proof=post['proof']) a.save() hacker.score_cache = hacker.score + badge.value hacker.save() self.get()
def load_awards(cls, soup, event): sections = soup.find_all( class_="sites-embed-border-on sites-embed sites-embed-full-width") awards = [] for s in sections: title = s.find("h4").text if "Award" in title: text = cls.AWARD_FILTER.sub("", s.get_text()) # replacing Place and Winner: with Team compensates for lack of prefixing in some # ftcpenn pages text = re.sub(r"Place:?", "Team ", text) text = re.sub(r"Winner:?", "Team ", text) # there's a case in 1415pacmp that fools our award detector. # oops! text = re.sub(r"Teal\s+Team\s+6", "", text) title = re.sub(r"Award.*$", "Award", title) winners = cls.TEAM_AWARD.findall(text) award_type = AwardType.get_type(title) for i, t in enumerate(winners, 1): a = Award(name=title, award_type=award_type, event_key=event.key, team_key='ftc' + t, award_place=i) if i == 1: a.name += " Winner" else: a.name += " Finalist" awards.append(a) return awards
def init_awards(): db.session.query(Nomination).delete() db.session.query(Award).delete() award_order = [ "Best Director", "Best Production Manager", "Best Stage Manager", "Best Technical Director", "Best Music Director", "Best Choreography", "Best Actress in a Lead Role", "Best Actor in a Lead Role", "Best Supporting Actress", "Best Supporting Actor", "Best Featured Performer", "Best Ensemble", "Best Duo", "Best Improv Moment", "Best Sketch Actor", "Best Cover", "Worst Cover", "Best Set", "Best Lighting", "Best Sound", "Best Costumes", "Best Props", "Best Publicity", "Best Hair & Makeup", "Best House", "Best Original Work", "Best Strike/Load-in Moment", "Worst Strike/Load-in Moment", "Best Prank", "Most Likely to Injure Oneself", "Kevin Perry Technical Insanity Award", "Donkeypunch Award", "Coolest Rookie", "Coolest Veteran", "Party Animal", "Darren M. Canady Sassypants Award", "Cutest Couple", "Cutest Potential Couple", "Most Successful Flirt", "Least Successful Flirt", "Most Corrupted", "Shannon Deep S'n'S Mom Award", 'The "It Sounded Like A Good Idea at the Time" Award', "King and Queen of the Black Chairs Award", "Best Late Show Moment", "Nathaniel Biggs Coolest Uncle Award", "Nathan Blinn Best Black Chairs Argument", "New Kudos Category", "Retire a Kudos Category", ] for i in range(len(award_order)): db.session.add(Award(name=award_order[i], order=(i + 1) * 10)) db.session.commit()
def post(self): post = self.request.POST if post['kind'] == 'badge': badge = Badge( name=post['name'], description=post['description'], category=post['category'], image=post['image'], value=int(post['value']) ) badge.save() elif post['kind'] == 'article': date = datetime.datetime.strptime(post['date'], '%Y-%m-%d').date() article = NewsArticle( title=post['title'], author=post['author'], body=post['body'], date=date ) article.save() elif post['kind'] == 'award': badge = Badge.get_by_id(int(post['badge'])) for member in post.getall('members'): member = Member.get_by_id(int(member)) award = Award( member=member, badge=badge, date=datetime.date.today(), proof=post['proof'] ) award.save() member.score_cache = member.score + badge.value member.save() elif post['kind'] == 'talk': talk = Talk( title=post['title'], date=datetime.datetime.strptime(post['date'], '%Y-%m-%d').date(), description=post['description'], member=Member.get_by_id(int(post['member'])), video=post['video'] ) talk.put() self.get()
def post(self): post = self.request.POST if post['kind'] == 'badge': badge = Badge( name=post['name'], description=post['description'], category=post['category'], image=post['image'], value=int(post['value']) ) badge.save() elif post['kind'] == 'award': badge = Badge.get_by_id(int(post['badge'])) for member in post.getall('members'): member = Member.get_by_id(int(member)) award = Award( member=member, badge=badge, date=datetime.date.today(), proof=post['proof'] ) award.save() member.score += badge.value member.save() elif post['kind'] == 'talk': talk = Talk( title=post['title'], date=utils.parse_date(post['date']), description=post['description'], member=Member.get_by_id(int(post['member'])), video=post['video'] ) talk.put() elif post['kind'] == 'taglineform': properties = GeneralSiteProperties.all().get() if properties == None: properties = GeneralSiteProperties(tag_line=post['tagline']) properties.put() else: properties.tag_line = post['tagline'] properties.put() self.get()
async def generate_winners_finalists(cls, event, fail_silent=False): finals = (await MatchHelper.get_match_data( where="m.comp_level='f' AND m.event_key=$1", addn_sql="ORDER BY m.match_number", params=(event.key, ))) #print(finals) if len(finals) == 0: if event.event_type == EventType.MEET: return logging.warning( f"[award_helper.py]: {event.key} doesn't have finals matches wtf" ) if not fail_silent: raise Exception(f"query failed on {event.key} oops") return last_finals = finals[-1] if last_finals['m'].winner == 'red': winning_alliance = last_finals['red'].teams finalist_alliance = last_finals['blue'].teams else: winning_alliance = last_finals['blue'].teams finalist_alliance = last_finals['red'].teams awards = [] for idx, team in enumerate(winning_alliance, 1): a = Award(name=event.award_prefix + "Winner", award_type=AwardType.WINNING_ALLIANCE, award_place=idx, event_key=event.key, team_key=team) awards.append(a) for idx, team in enumerate(finalist_alliance, 1): a = Award(name=event.award_prefix + "Finalist", award_type=AwardType.FINALIST_ALLIANCE, award_place=idx, event_key=event.key, team_key=team) awards.append(a) async with orm.pool.acquire() as conn: for a in awards: await a.upsert(conn=conn)
def post(self): post = self.request.POST if post['kind'] == 'badge': badge = Badge(name=post['name'], description=post['description'], category=post['category'], image=post['image'], value=int(post['value'])) badge.save() elif post['kind'] == 'award': badge = Badge.get_by_id(int(post['badge'])) for member in post.getall('members'): member = Member.get_by_id(int(member)) award = Award(member=member, badge=badge, date=datetime.date.today(), proof=post['proof']) award.save() member.score += badge.value member.save() elif post['kind'] == 'talk': talk = Talk(title=post['title'], date=utils.parse_date(post['date']), description=post['description'], member=Member.get_by_id(int(post['member'])), video=post['video']) talk.put() elif post['kind'] == 'taglineform': properties = GeneralSiteProperties.all().get() if properties == None: properties = GeneralSiteProperties(tag_line=post['tagline']) properties.put() else: properties.tag_line = post['tagline'] properties.put() self.get()
def get(self): handle = self.request.get('handle', None) if handle is None: # First request, just get the first handle out of the datastore. hacker = Hacker.gql('ORDER BY handle DESC').get() if not hacker: # No hackers in database self.response.headers['Content-Type'] = 'text/plain' self.response.out.write("No Hackers in database") return handle = hacker.handle query = Hacker.gql('WHERE handle <= :1 ORDER BY handle DESC', handle) hackers = query.fetch(limit=2) current_hacker = hackers[0] if len(hackers) == 2: next_handle = hackers[1].handle next_url = '/admin/hacker_migration?handle=%s' % urllib.quote( next_handle) else: next_handle = 'FINISHED' next_url = '/' # Finished processing, go back to main page. awards_updated = 0 talks_updated = 0 updated_hacker = False # Add a new member if this Hacker has not been migrated if not Member.gql('WHERE handle = :1', current_hacker.handle).get(): new_member = Member(user_id=current_hacker.user_id, email=current_hacker.email, handle=current_hacker.handle, bio=current_hacker.bio, real_name=current_hacker.real_name) new_member.put() # Find any award or talk entities that reference the old hacker # and remap them awards = Award.gql('WHERE hacker = :1', current_hacker) for award in awards: award.member = new_member if hasattr(award, 'hacker'): del award.hacker award.put() awards_updated += 1 talks = Talk.gql('WHERE member = :1', current_hacker) for talk in talks: talk.member = new_member talk.put() talks_updated += 1 updated_hacker = True # Delete the Hacker current_hacker.delete() context = { 'current_handle': handle, 'updated_hacker': updated_hacker, 'awards_updated': awards_updated, 'talks_updated': talks_updated, 'next_handle': next_handle, 'next_url': next_url, } self.render_template('hacker_migration', context)
def get(self): handle = self.request.get('handle', None) if handle is None: # First request, just get the first handle out of the datastore. hacker = Hacker.gql('ORDER BY handle DESC').get() if not hacker: # No hackers in database self.response.headers['Content-Type'] = 'text/plain' self.response.out.write("No Hackers in database") return handle = hacker.handle query = Hacker.gql('WHERE handle <= :1 ORDER BY handle DESC', handle) hackers = query.fetch(limit=2) current_hacker = hackers[0] if len(hackers) == 2: next_handle = hackers[1].handle next_url = '/admin/hacker_migration?handle=%s' % urllib.quote(next_handle) else: next_handle = 'FINISHED' next_url = '/' # Finished processing, go back to main page. awards_updated = 0 talks_updated = 0 updated_hacker = False # Add a new member if this Hacker has not been migrated if not Member.gql('WHERE handle = :1', current_hacker.handle).get(): new_member = Member(user_id=current_hacker.user_id, email=current_hacker.email, handle=current_hacker.handle, bio=current_hacker.bio, real_name=current_hacker.real_name) new_member.put() # Find any award or talk entities that reference the old hacker # and remap them awards = Award.gql('WHERE hacker = :1', current_hacker) for award in awards: award.member = new_member if hasattr(award, 'hacker'): del award.hacker award.put() awards_updated += 1 talks = Talk.gql('WHERE member = :1', current_hacker) for talk in talks: talk.member = new_member talk.put() talks_updated += 1 updated_hacker = True # Delete the Hacker current_hacker.delete() context = { 'current_handle': handle, 'updated_hacker': updated_hacker, 'awards_updated': awards_updated, 'talks_updated': talks_updated, 'next_handle': next_handle, 'next_url': next_url, } self.render_template('hacker_migration', context)