def post(request): '''process post page judge user's authenticate status and save valid post, store raiseNUMBER of user''' if request.user.is_authenticated(): form = PostForm() if request.method == "POST": form = PostForm(request.POST.copy()) if form.valid(): poster = request.user title = form.cleaned_data["title"] content = form.cleaned_data["content"] bonus = form.cleaned_data["bonus"] deadline = form.cleaned_data["deadline"] post = Mission(missionNAME=title, missionDESCRIBE=content, logDATE=datetime.datetime.now(), deadline=deadline, rpBONUS=bonus, missionRAISER=poster, closed=False) post.save() poster_pro = UserProfile.objects.get(user_id=request.user.id) poster_pro.raiseNUMBER += 1 poster_pro.save() return HttpResponseRedirect("/") form = PostForm() return render_to_response("tasks/post.html",{'request': request, 'form': form, }) return HttpResponseRedirect("/accounts/login/")
def get(self, args): if not users.is_current_user_admin(): self.error(403) return template_vals = {'title': 'Edit Mission', 'page': 'missions'} template_vals['user'] = users.get_current_user() template_vals['logout_url'] = users.create_logout_url(self.request.uri) req_id = self.request.get('id') if not req_id: new_mission = Mission() new_mission.name = 'New Mission' template_vals['mission'] = new_mission else: mission = Mission.query(Mission.id == req_id).get() if mission: template_vals['mission'] = mission else: self.error(404) return template_vals['semesters'] = get_all_semesters() template = JINJA_ENVIRONMENT.get_template('mission_edit.html') self.response.write(template.render(template_vals))
def get(self, args): if not require_admin(self): return template_vals = generate_base_template_vals(self) template_vals['title'] = 'Edit Mission' template_vals['page'] = 'missions' req_id = self.request.get('id') if not req_id: new_mission = Mission() new_mission.name = 'New Mission' template_vals['mission'] = new_mission else: mission = Mission.query(Mission.id == req_id).get() if mission: template_vals['mission'] = mission else: self.error(404) return template_vals['semesters'] = get_all_semesters() template = JINJA_ENVIRONMENT.get_template('mission_edit.html') self.response.write(template.render(template_vals))
def prefix_questions_and_answers(*args): PD = PrefixDialog(ctx=ctx) dlg = PD.create() if dlg.execute(): p_question = dlg.getControl('p_question').Text p_answer = dlg.getControl('p_answer').Text dlg.dispose() doc = Mission(ctx) doc.prefix_questions_and_answers(p_question, p_answer)
def test_get_by_recent_miss_not_shared(self): Mission.create(editor=self.user.id, name="test mission 3", city="LA", state="CA", country='US') db.session.commit() recent = Mission.get_by_recent() self.assertEqual(len(recent), 2)
def missions(): """Missions view.""" query_params = request.args.to_dict() if not query_params: missions = Mission.get_by_recent() else: missions = Mission.search(query_params) return render_template('main_views/missions.html', missions=missions, form_data=query_params)
def rank(member, semester=get_current_semester()): paid = False num_semesters_paid_to_date = 0 for semester_paid in member.semesters_paid: if semester_paid <= semester: paid = True if semester_paid < semester: num_semesters_paid_to_date += 1 # Cadets cannot earn ranks if not paid: return 0 rank = 1 # Longevity if num_semesters_paid_to_date >= 4: rank += 1 # Led weekly mission if Mission.query(Mission.runners == member.id, Mission.type == 0, Mission.start < semester_date(semester)).count(limit=1) != 0: rank += 1 # Volunteered with special mission or committee if member.committee_rank or Mission.query(Mission.runners == member.id, Mission.type == 1, Mission.start < semester_date(semester)).count(limit=1) != 0: rank += 1 # Merit ranks if member.merit_rank1: rank += 1 if member.merit_rank2: rank += 1 # Voted captain if BridgeCrew.query(BridgeCrew.captain == member.id, BridgeCrew.start < semester_date(semester)).count(limit=1) != 0: rank = 6 # Alumni ranks if not member.current_student: if rank == 6: # Captains become rear admirals rank = 8 else: # Non-captains become commodores rank = 7 # Was an admiral (advisor) if BridgeCrew.query(BridgeCrew.admiral == member.id, BridgeCrew.start < semester_date(semester)).count(limit=1) != 0: rank = 10 return rank
def test_get_by_recent(self): mission3 = Mission.create(editor=self.user.id, name="test mission 3", city="LA", state="CA", country='US') mission3.share() db.session.commit() recent = Mission.get_by_recent() self.assertEqual(len(recent), 3) self.assertEqual(recent[0], mission3)
def setUp(self): self.user = User.register(email="*****@*****.**", username="******", password="******") self.mission = Mission.create(editor=self.user.id, name="test mission", city="Albany", state="NY", country='US') self.business = Business.create(name='Cuisine of Nepal', longitude=-122.42318, latitude=37.74097, id='iUockw0CUssKZLyoGJYEXA', city='San Francisco', state='CA', country='US') self.mission.businesses.append(self.business) self.report = Report.create(user_id=self.user.id, business_id='iUockw0CUssKZLyoGJYEXA', text='Best nepalese food I ever had!') db.session.commit() self.report2 = Report.create(user_id=self.user.id, mission_id=self.mission.id, text='The curry was devine!') db.session.commit()
def get(self, args): template_vals = generate_base_template_vals(self) template_vals['title'] = 'Missions' template_vals['page'] = 'missions' # Get all users from the given semester try: selected_semester = float(self.request.get('semester')) except Exception: selected_semester = get_current_semester() next_semester_date = semester_date(next_semester(selected_semester)) selected_semester_date = semester_date(selected_semester) template_vals['missions'] = Mission.query(Mission.start >= semester_date(selected_semester), Mission.start < next_semester_date).order(Mission.start).fetch(limit=None) # Get all possible semesters to put in the menu. semesters = [] for semester in get_all_semesters(): semesters.append({ 'id': semester, 'pretty': semester_pretty(semester), 'selected': semester == selected_semester }) template_vals['semesters'] = semesters template_vals['prev_semester'] = prev_semester(selected_semester) if selected_semester != FIRST_SEMESTER else None template_vals['next_semester'] = next_semester(selected_semester) if selected_semester != get_current_semester() else None template = JINJA_ENVIRONMENT.get_template('missions_list.html') self.response.write(template.render(template_vals))
def post_vote(room_code): sessid = request.cookies.get("sessid") you = Player.select(Player, Room).join(Room).where(Player.sessid == sessid, Room.code == room_code).get() room = you.room vote = request.params["vote"] mission_id = request.params["missionId"] mission = Mission.get(Mission.id == mission_id, Mission.room == room) Vote.insert(player=you, mission=mission, vote=vote).execute() votes = Vote.select(Vote, Player).join(Player).where(Vote.mission == mission).execute() if votes.count == room.size: upvotes = sum(1 for v in votes if v.vote == "yes") agreed = True if (upvotes * 2 > votes.count) else False votes_message_data = { "votes": [ {"player": {"id": vote.player.id, "name": vote.player.name}, "vote": vote.vote} for vote in votes ], "agreed": agreed, } messages = [Msg("votes", votes_message_data)] if agreed: room.phase = Room.PHASE_MISSION room.save() else: room.phase = Room.PHASE_TEAM_BUILD leader = next_leader(room) leader_message_data = {"leader": {"id": leader.id, "name": leader.name}} messages.append(Msg("leader", leader_message_data)) post_message(messages, room=room)
def get(self): template_vals = { 'page': 'home' } # Get the next five missions. # Include missions happening today. now = datetime.now() today = datetime(now.year, now.month, now.day) template_vals['missions'] = Mission.query(Mission.start >= today).order(Mission.start).fetch(limit=5) template_vals['user'] = users.get_current_user() if template_vals['user']: template_vals['logout_url'] = users.create_logout_url(self.request.uri) else: template_vals['login_url'] = users.create_login_url(self.request.uri) # Pick an end quote. template_vals['end_quote'] = choice([ 'Live long and prosper.', 'May the Force be with you.', 'Never give up! Never surrender!' ]) template = JINJA_ENVIRONMENT.get_template('home.html') self.response.write(template.render(template_vals))
def get(self, req_id): template_vals = {'page': 'missions'} if not req_id: # Redirect to the missions page if no mission is specified. self.redirect('/missions') return mission = Mission.query(Mission.id == req_id).get() if not mission: # 404 if a nonexistent mission is specified self.error(404) return template_vals['mission'] = mission template_vals['title'] = mission.title # Get user data for the footer and admin controls. user = users.get_current_user() if user: template_vals['user'] = user template_vals['admin'] = users.is_current_user_admin() template_vals['logout_url'] = users.create_logout_url( self.request.uri) else: template_vals['login_url'] = users.create_login_url( self.request.uri) template = JINJA_ENVIRONMENT.get_template('mission_info.html') self.response.write(template.render(template_vals))
def post(self, args): if not users.is_current_user_admin(): self.error(403) return req_id = self.request.get('id') if not req_id: self.error(422) return mission = Mission.query(Mission.id == req_id).get() if not mission: mission = Mission() req_id = req_id.strip().lower().replace(' ', '-') mission.id = req_id # Update int values. for int_param in ['type']: req_val = self.request.get(int_param) if req_val or req_val == 0: req_val = int(req_val) setattr(mission, int_param, req_val) # Update string values. for str_param in [ 'title', 'description', 'location', 'wave_url', 'fb_url', 'gplus_url', 'the_link_url', 'youtube_url' ]: req_val = self.request.get(str_param) if req_val or req_val == '': req_val = urllib2.unquote(req_val) req_val = req_val.strip() setattr(mission, str_param, req_val) # Update date values. for date_param in ['start', 'end']: req_val = self.request.get(date_param) if req_val: req_val = urllib2.unquote(req_val) req_val = datetime.strptime(req_val, '%Y-%m-%dT%H:%M') setattr(mission, date_param, req_val) else: setattr(mission, date_param, None) # Update array values. req_runners = self.request.get('runners') if req_runners: req_runners = req_runners.replace(' ', '').split(',') mission.runners = req_runners else: mission.runners = [] # Save the updated mission. mission.put() self.redirect('/missions/' + mission.id, code=303)
def test_search_miss(self): miss = Mission.search({ 'city': 'ithica', 'state': 'ny', 'keywords': 'potato', 'country': 'us', 'sort_by': 'recent' }) self.assertListEqual([], miss)
def test_search_hit(self): hit = Mission.search({ 'city': 'ithica', 'state': 'ny', 'keywords': 'little', 'country': 'us', 'sort_by': 'recent' }) self.assertListEqual([self.mission2], hit)
def post(self, args): if not require_admin(self): return req_id = self.request.get('id') if not req_id: self.error(422) return mission = Mission.query(Mission.id == req_id).get() if not mission: mission = Mission() req_id = req_id.strip().lower().replace(' ', '-') mission.id = req_id # Update int values. for int_param in ['type']: req_val = self.request.get(int_param) if req_val or req_val == 0: req_val = int(req_val) setattr(mission, int_param, req_val) # Update string values. for str_param in ['title', 'description', 'location', 'wave_url', 'drive_url', 'intro_url', 'pres_url', 'sign_in_url', 'fb_url', 'gplus_url', 'the_link_url', 'youtube_url']: req_val = self.request.get(str_param) if req_val or req_val == '': req_val = urllib2.unquote(req_val) req_val = req_val.strip() setattr(mission, str_param, req_val) # Update date values. for date_param in ['start', 'end']: req_val = self.request.get(date_param) if req_val: req_val = urllib2.unquote(req_val) req_val = datetime.strptime(req_val, '%Y-%m-%dT%H:%M') setattr(mission, date_param, req_val) else: setattr(mission, date_param, None) # Update array values. req_runners = self.request.get('runners') if req_runners: req_runners = req_runners.replace(' ','').split(',') mission.runners = req_runners else: mission.runners = [] # Save the updated mission. mission.put() if not mission.start: self.redirect('/missions/hidden', code=303) return self.redirect('/missions/' + mission.id, code=303)
def get(self): if not require_admin(self): return template_vals = generate_base_template_vals(self) template_vals['title'] = 'Hidden Missions' template_vals['page'] = 'missions' template_vals['missions'] = Mission.query(ndb.OR(Mission.start == None)).order(Mission.id).fetch(limit=None) template = JINJA_ENVIRONMENT.get_template('missions_hidden.html') self.response.write(template.render(template_vals))
def setUp(self): self.user = User.register(email="*****@*****.**", username="******", password="******") self.mission = Mission.create(editor=self.user.id, name="test mission", city="Albany", state="NY", country='US') self.mission.share() self.mission2 = Mission.create(editor=self.user.id, name="test mission 2", city="Ithica", state="NY", country='US') self.mission2.share() self.business = Business.create(name='Cuisine of Nepal', longitude=-122.42318, latitude=37.74097, id='iUockw0CUssKZLyoGJYEXA', city='San Francisco', state='CA', country='US') self.business2 = Business.create(name='Little Nepal', longitude=-122.41361, latitude=37.7391, id='Kx1WExNj5ogaFe0cyg9L6A', city='San Francisco', state='CA', country='US') self.mission.businesses.append(self.business) self.mission2.businesses.append(self.business2) db.session.commit()
def setUp(self): self.user = User.register(email="*****@*****.**", username="******", password="******") self.mission = Mission.create(editor=self.user.id, name="test mission", city="Albany", state="NY", country='US') self.mission.share() self.mission2 = Mission.create(editor=self.user.id, name="test mission 2", city="Ithica", state="NY", country='US') self.mission2.share() self.business = Business.create(name="Cusine of Nepal", id='82372347', city='San Francisco', state='CA', country='US', longitude=20.22, latitude=77.0) db.session.commit() self.report = Report.create(user_id=self.user.id, business_id=self.business.id, text="Amazing!") self.report = Report.create(user_id=self.user.id, mission_id=self.mission.id, text="Amazing Mission!") db.session.commit()
def test_search_miss_not_shared(self): m3 = Mission.create( editor=self.user.id, name='I like cheese.', city='San Francisco', state='CA', country='US', description="What is there to explain. Let's get some cheese.") m3.businesses.append(self.business) db.session.commit() miss = Mission.search({ 'city': '', 'state': '', 'keywords': '', 'country': '', 'sort_by': 'recent' }) self.assertEqual(len(miss), 2)
def get(self, args): template_vals = {'title': 'Missions', 'page': 'missions'} user = users.get_current_user() if user: template_vals['user'] = user template_vals['admin'] = users.is_current_user_admin() template_vals['logout_url'] = users.create_logout_url( self.request.uri) else: template_vals['login_url'] = users.create_login_url( self.request.uri) # Get all users from the given semester selected_semester = self.request.get('semester') if not selected_semester: selected_semester = get_current_semester() prev_semester_str = prev_semester(selected_semester) current_semester_str = get_current_semester() next_semester_str = next_semester(selected_semester) next_semester_date = semester_date(next_semester_str) selected_semester_date = semester_date(selected_semester) template_vals['missions'] = Mission.query( Mission.start >= selected_semester_date, Mission.start < next_semester_date).order( Mission.start).fetch(limit=None) # Get all possible semesters to put in the menu. semesters = [] for semester in get_all_semesters(): semester_pretty = semester[0].upper() + semester[1:].replace( '_', ' ') semesters.append({ 'id': semester, 'pretty': semester_pretty, 'selected': semester == selected_semester }) template_vals['semesters'] = semesters template_vals[ 'prev_semester'] = prev_semester_str if selected_semester != 'fall_2013' else None template_vals[ 'next_semester'] = next_semester_str if selected_semester != current_semester_str else None template = JINJA_ENVIRONMENT.get_template('mission_list.html') self.response.write(template.render(template_vals))
def create_mission(): """Endpoint to create a mission.""" if not g.user: return Unauthorized() try: mission = Mission.create(editor=g.user.id, **request.json) db.session.commit() g.user.missions.append(mission) db.session.commit() except Exception as e: H.error_logging(e) return jsonify({'error': repr(e)}) return jsonify({'success': 'Mission Created!', 'mission': mission.serialize()})
def setUp(self): self.user = User.register( email='*****@*****.**', username='******', password='******') self.user2 = User.register( email='*****@*****.**', username='******', password='******') self.mission = Mission.create( editor=self.user.id, name='Food Truck Grand Tour', city='San Francisco', state='CA', country='US', description="The pletora of SF food trucks never ceases to amaze.") db.session.commit() self.client = app.test_client()
def post_team(room_code): sessid = request.cookies.get("sessid") you = Player.select(Player, Room).join(Room).where(Player.sessid == sessid, Room.code == room_code).get() room = you.room if you.queue_position != room.leader_queue: return HTTPError(400, "You are not the leader") team_ids = request.params.getall("team[]") team = room.players.where(Player.id << team_ids).execute() mission = Mission.create(room=room, leader=you, team_size=0) with db.atomic(): for plr in team: PlayerMission.insert(player=plr, mission=mission).execute() room.phase = "vote" room.save() message_data = { "mission_id": mission.id, "leader": {"id": you.id, "name": you.name}, "team": [{"id": plr.id, "name": plr.name} for plr in team], } post_message([Msg("team", message_data)], room=room)
def get(self, req_id): if not req_id: # Redirect to the missions page if no mission is specified. self.redirect('/missions') return mission = Mission.query(Mission.id == req_id).get() if not mission: # 404 if a nonexistent mission is specified. self.error(404) return template_vals = generate_base_template_vals(self) template_vals['page'] = 'missions' template_vals['mission'] = mission template_vals['title'] = mission.title template = JINJA_ENVIRONMENT.get_template('mission_info.html') self.response.write(template.render(template_vals))
def set_mission(): """设置任务""" name = User.query.order_by(User.id.asc()).all() province = Province.query.order_by(Province.code.asc()).all() mis = Mission.query.order_by(Mission.add_time.asc()).all() major = MajorList.query.order_by(MajorList.id.asc()).all() if request.method == 'GET': return render_template("mission-set.html", name=name, province=province, mis=mis, major=major) else: import time user = request.form.get('name') province = request.form.get('province') major = request.form.get('major') op_type = request.form.get('type') quantity = request.form.get('quantity') begin_time = time.strftime('%Y-%m-%d %H:%M:%S') # 从所有学生信息中检索input和任务完成人进行比对,该任务被删除时,下次任务数量不为0,输机与复查完成量问题 completed = 0 # if op_type == "输机(有库)": # completed = StudentInfo.query.filter(and_( # StudentInfo.input == Mission.user, begin_time < StudentInfo.input_time) # ).count() # print(completed) # completed = StudentInfo.query.filter(StudentInfo.input == Mission.user).count() mission = Mission(user=user, province=province, major=major, type=op_type, quantity=quantity, begin_time=begin_time, completed=completed) db.session.add(mission) db.session.commit() flash('任务添加成功!') return redirect(url_for("set_mission"))
def get(self): template_vals = generate_base_template_vals(self) template_vals['page'] = 'home' # Get the home page text. home_content = PageContent.query(PageContent.page == 'home').get() template_vals['home_html'] = home_content.html_text if home_content else '' # Get the next five missions. # Include missions happening today. now = datetime.now() today = datetime(now.year, now.month, now.day) template_vals['missions'] = Mission.query(Mission.start >= today).order(Mission.start).fetch(limit=5) # Pick an end quote. template_vals['greeting'] = choice([ 'Greetings from Earth!', 'Greetings, program!', 'Hello there!', 'Welcome aboard!' ]) template_vals['groups_call_to_action'] = choice([ 'Boldly chat where some have chatted before', 'Come chat with us', 'Explore strange new groups', 'Join our groups', 'Join the collective', 'Join the conversation' ]) template_vals['end_quote'] = choice([ 'Excelsior!', 'Live long and prosper.', 'May the Force be with you.', 'Never give up! Never surrender!' ]) template = JINJA_ENVIRONMENT.get_template('home.html') self.response.write(template.render(template_vals))
def mission(self): return Mission(self.ctx)
def get(self, req_id, resource_name): if not req_id: # Redirect to the missions page if no mission is specified. self.redirect('/missions') return mission = Mission.query(Mission.id == req_id).get() if not mission: # 404 if a nonexistent mission is specified. generate_plain_404(self, u'No mission exists with the ID \u201c%s\u201d.' % req_id) return if resource_name == 'wave': if not mission.wave_url: generate_plain_404(self, u'Mission \u201c%s\u201d does not have a wave URL.' % req_id) return self.redirect(mission.wave_url.encode('utf-8')) elif resource_name == 'gdrive' or resource_name == 'drive': if not mission.drive_url: generate_plain_404(self, u'Mission \u201c%s\u201d does not have a Drive URL.' % req_id) return self.redirect(mission.drive_url.encode('utf-8')) elif resource_name == 'intro': if not mission.intro_url: generate_plain_404(self, u'Mission \u201c%s\u201d does not have an intro. presentation URL.' % req_id) return self.redirect(mission.intro_url.encode('utf-8')) elif resource_name == 'presentation' or resource_name == 'pres': if not mission.pres_url: generate_plain_404(self, u'Mission \u201c%s\u201d does not have a mission presentation URL.' % req_id) return self.redirect(mission.pres_url.encode('utf-8')) elif resource_name == 'signin': if not mission.sign_in_url: generate_plain_404(self, u'Mission \u201c%s\u201d does not have a sign-in form URL.' % req_id) return self.redirect(mission.sign_in_url.encode('utf-8')) elif resource_name == 'facebook' or resource_name == 'fb': if not mission.fb_url: generate_plain_404(self, u'Mission \u201c%s\u201d does not have a Facebook event URL.' % req_id) return self.redirect(mission.fb_url.encode('utf-8')) elif resource_name == 'gplus' or resource_name == 'google' or resource_name == 'google+' or resource_name == 'googleplus': if not mission.gplus_url: generate_plain_404(self, u'Mission \u201c%s\u201d does not have a Google+ event URL.' % req_id) return self.redirect(mission.gplus_url.encode('utf-8')) elif resource_name == 'thelink': if not mission.the_link_url: generate_plain_404(self, u'Mission \u201c%s\u201d does not have a The Link event URL.' % req_id) return self.redirect(mission.the_link_url.encode('utf-8')) elif resource_name == 'youtube' or resource_name == 'yt': if not mission.youtube_url: generate_plain_404(self, u'Mission \u201c%s\u201d does not have a YouTube stream URL.' % req_id) return self.redirect(mission.youtube_url.encode('utf-8')) else: generate_plain_404(self, u'Mission \u201c%s\u201d does not have a \u201c%s\u201d URL.\n\nThe links a mission might have are:\n\u2022 wave\n\u2022 gdrive (or drive)\n\u2022 intro\n\u2022 presentation (or pres)\n\u2022 signin\n\u2022 facebook (or fb)\n\u2022 gplus (or google)\n\u2022 thelink\n\u2022 youtube (or yt)' % (req_id, resource_name)) return
def get_things_down(*args): Mission(ctx).remove_key_handler(ctx)
def wrap_last_word_into_brackets(*args): doc = Mission(ctx) doc.wrap_last_word_into_brackets()
def remove_milliseconds_from_tc(*args): doc = Mission(ctx) doc.remove_milliseconds_from_tc()
def remove_blank_line(*args): doc = Mission(ctx) doc.remove_blank_line()
def question_lower(*args): doc = Mission(ctx) doc.question_lower()
def question_upper(*args): doc = Mission(ctx) doc.question_upper()