def test_user_can_only_attend_open_event(): se = SeminarEvent(name='test', description='test', start_time=datetime.now(), end_time=datetime.now(), convenor=u) s1 = Session(name='s1 test', start_time=datetime.now(), end_time=datetime.now() + timedelta(days=1), deregister_timeframe=Session.calculate_date( datetime.now(), 1), early_bird=Session.calculate_date(datetime.now(), 1), speaker=g1, event=se, capacity=10, venue=venue) # closed event se.status = 1 with pytest.raises(attendanceError) as err: s1.add_attendee(g1) assert 'status of the event is closed' in str(err.value) # cancelled event se.status = 2 with pytest.raises(attendanceError) as err: s1.add_attendee(g1) assert 'status of the event is cancelled' in str(err.value) # open event se.status = 0 s1.add_attendee(g1)
def test_legal_create_seminar_convenor_is_speaker(): #legal assert isinstance(u, Staff) se = SeminarEvent(name='test', description='test', start_time=datetime.now(), end_time=datetime.now(), convenor=u) s1 = Session(name='s1 test', start_time=datetime.now(), end_time=datetime.now() + timedelta(days=1), deregister_timeframe=days_before_date(datetime.now(), 3), early_bird=days_before_date(datetime.now(), 2), speaker=u, capacity=10, venue=venue, event=se) s2 = Session(name='s2 test', start_time=datetime.now(), end_time=datetime.now() + timedelta(days=1), deregister_timeframe=days_before_date(datetime.now(), 3), early_bird=days_before_date(datetime.now(), 2), speaker=u, capacity=10, venue=venue, event=se)
def test_attend_session_early_bird(): se = SeminarEvent(name='test', description='test', start_time=string_to_date('2018-01-01T09:00'), end_time=string_to_date('2018-12-31T09:00'), convenor=u) s1 = Session(name='s1 test', start_time=datetime.now(), end_time=datetime.now() + timedelta(days=2), deregister_timeframe=Session.calculate_date( datetime.now(), 1), speaker=g1, event=se, capacity=10, early_bird=datetime.now() - timedelta(days=1), venue=venue) s2 = Session(name='s2 test', start_time=datetime.now(), end_time=datetime.now() + timedelta(days=2), deregister_timeframe=Session.calculate_date( datetime.now(), 1), speaker=g1, event=se, capacity=10, early_bird=datetime.now() + timedelta(days=1), venue=venue) assert s1.is_early_bird() == False assert s2.is_early_bird() == True
def login(): data = request.json if User.validate_login(data): session = Session.new(User.get_by_name(data['username'])) return session.response() else: return json_response({'status': 'fail'})
def make_session(slip): session_id = uuid.uuid4().hex user_session = Session(id=session_id, slip_id=slip.id) session["session-id"] = user_session.id db.session.add(user_session) db.session.commit() return user_session
def handle_data(self, data): if 0 <= data.find("第") and data.find("第") < data.find("回") and data.find("回") < data.find("本会議投票結果"): key = unicode(data, "utf8") key = utils.numzentohan(key) key = utils.erasewhitespace(key) key = key[key.find(u"第")+1:key.find(u"回")] self.sess = Session.get_by_key_name(key)
def register(): data = request.json log(data) u = User(**data) u.save() session = Session.new(u) return session.response()
def current_session(): headers = request.headers session_id = headers.get('sessionId', None) log(session_id) if session_id is None: return None session = Session.objects(session_id=session_id).first() return session
def handle_data(self, data): if 0 <= data.find("第") and data.find("第") < data.find( "回") and data.find("回") < data.find("本会議投票結果"): key = unicode(data, "utf8") key = utils.numzentohan(key) key = utils.erasewhitespace(key) key = key[key.find(u"第") + 1:key.find(u"回")] self.sess = Session.get_by_key_name(key)
def get(self): items = [] for sess in Session.all(): if 0 < sess.itemcount: items.append(SessItem(sess.key().name(), sess.name, sess.start, sess.end)) items.reverse() template_values = {"items": items} path = os.path.join(os.path.dirname(__file__), "template/listsessall.html") self.response.out.write(template.render(path, template_values))
def converter(self, event_type, row): if event_type == 'Course': event = Course(row[0], row[1], row[2], row[3], row[4], row[5],\ row[6], row[7], row[8], row[9], row[10], row[11], row[12]) elif event_type == 'Seminar': event = Seminar(row[0], row[1], row[2], row[3], row[4], row[5],\ row[6], row[7], row[8], row[9], row[10]) else: event = Session(row[0], row[1], row[2], row[3], row[4], row[5], row[6],\ row[7]) return event
def get(self): sesskey = cgi.escape(self.request.get('sess')) sess = Session.get_by_key_name(sesskey) sessitem = SessItem(sess.key().name(), sess.name, sess.start, sess.end, sess.itemcount) q = VoteSessionParty.all() q.ancestor(sess) items = [] for party in q: items.append(PartyItem(party.key().name(), party.aye, party.nay, party.rate)) template_values = { "sess":sessitem, "items":items } path = os.path.join(os.path.dirname(__file__), 'template/listsessparty.html') self.response.out.write(template.render(path, template_values))
def get(self): items = [] for sess in Session.all(): if 0 < sess.itemcount: items.append( SessItem(sess.key().name(), sess.name, sess.start, sess.end)) items.reverse() template_values = {"items": items} path = os.path.join(os.path.dirname(__file__), 'template/listsessall.html') self.response.out.write(template.render(path, template_values))
def test_legal_create_seminar_multiple_speakers(): #legal way -> seminar with 3 sessions -> 3 guest speakers AND unique convenor assert isinstance(u, Staff) se = SeminarEvent(name='test', description='test', start_time=datetime.now(), end_time=datetime.now(), convenor=u) s1 = Session(name='s1 test', start_time=datetime.now(), end_time=datetime.now() + timedelta(days=1), deregister_timeframe=days_before_date(datetime.now(), 3), early_bird=days_before_date(datetime.now(), 2), speaker=g1, capacity=10, venue=venue, event=se) s2 = Session(name='s2 test', start_time=datetime.now(), end_time=datetime.now() + timedelta(days=1), deregister_timeframe=days_before_date(datetime.now(), 3), early_bird=days_before_date(datetime.now(), 2), speaker=g2, capacity=10, venue=venue, event=se) s3 = Session(name='s3 test', start_time=datetime.now(), end_time=datetime.now() + timedelta(days=1), deregister_timeframe=days_before_date(datetime.now(), 3), early_bird=days_before_date(datetime.now(), 2), speaker=g3, capacity=10, venue=venue, event=se) assert len(se.event_sessions) == 3 assert isinstance(se.convenor, Staff) assert isinstance(s1.speaker, Guest) assert isinstance(s2.speaker, Guest) assert isinstance(s3.speaker, Guest)
def test_legal_register_student(): se = SeminarEvent(name='test', description='test', start_time=datetime.now(), end_time=datetime.now(), convenor=u) s1 = Session(name='s1 test', start_time=datetime.now(), end_time=datetime.now() + timedelta(days=1), deregister_timeframe=Session.calculate_date( datetime.now(), 1), early_bird=Session.calculate_date(datetime.now(), 1), speaker=u, event=se, capacity=10, venue=venue) s2 = Session(name='s2 test', start_time=datetime.now(), end_time=datetime.now() + timedelta(days=1), deregister_timeframe=Session.calculate_date( datetime.now(), 1), early_bird=Session.calculate_date(datetime.now(), 1), speaker=u, event=se, capacity=10, venue=venue) s1.users_attendance.append(s) s2.users_attendance.append(s) assert len(s1.users_attendance) == 1 assert len(s2.users_attendance) == 1
def current_user(request): session_id = request.cookies.get('session_id') if session_id is not None: s = Session.find_by(session_id=session_id) expired_time = s.expired_time now = time.time() if expired_time > now: u = User.find_by(id=s.user_id) return u else: return User.guest() else: return User.guest()
def main(): sessbeg = int(getparameter("fetchbegsession")) sessend = int(getparameter("fetchendsession")) updatesessionitemcount() thrh = int(getparameter("partydecisionthreshold")) dict = getabrvdict() for sess in Session.all(): sessno = int(sess.key().name()) if 0 < sess.itemcount and sessbeg <= sessno and sessno <= sessend: initsession(sess) calcsession(sess, thrh, dict) print 'Content-Type: text/plain' print '' print 'OK'
def main(): sessbeg = int(getparameter("fetchbegsession")) sessend = int(getparameter("fetchendsession")) updatesessionitemcount() thrh = int(getparameter("partydecisionthreshold")) dict = getabrvdict() for sess in Session.all(): sessno = int(sess.key().name()) if 0 < sess.itemcount and sessbeg <= sessno and sessno <= sessend: initsession(sess) calcsession(sess, thrh, dict) print "Content-Type: text/plain" print "" print "OK"
def get(self): sesskey = cgi.escape(self.request.get('sess')) sess = Session.get_by_key_name(sesskey) sessitem = SessItem(sess.key().name(), sess.name, sess.start, sess.end, sess.itemcount) q = VoteSessionParty.all() q.ancestor(sess) items = [] for party in q: items.append( PartyItem(party.key().name(), party.aye, party.nay, party.rate)) template_values = {"sess": sessitem, "items": items} path = os.path.join(os.path.dirname(__file__), 'template/listsessparty.html') self.response.out.write(template.render(path, template_values))
def get_session(self, key): 'return a session given its name' con = lite.connect(os.path.join(self.database_path, 'easybeer.db')) c = con.cursor() c.execute("""select * from sessions where name=:name""", {'name': key}) s = c.fetchone() mis = pickle.loads(s[10]) #malts_in_session' #print('printing mis') #print('mis') ris = pickle.loads(s[11]) #rests in session #print('printing ris') #print(ris) his = pickle.loads(s[12]) #hops in session yis = pickle.loads(s[13]) #yeast in session session = Session(s[0], s[1], s[2], s[3], s[4], s[5], s[6], s[7], s[8], s[9], mis, ris, his, yis, s[14], s[15], s[16], s[17], s[18], s[19], s[20], s[21], s[22], s[23], s[24], s[25], s[26], s[27], s[28]) return session
def test_illegal_double_attend(): se = SeminarEvent(name='test', description='test', start_time=datetime.now(), end_time=datetime.now(), convenor=u) s1 = Session(name='s1 test', start_time=datetime.now(), end_time=datetime.now() + timedelta(days=1), deregister_timeframe=Session.calculate_date( datetime.now(), 1), early_bird=Session.calculate_date(datetime.now(), 1), speaker=u, event=se, capacity=10, venue=venue) s1.add_attendee(u1) s1.add_attendee(u1) assert len(s1.users_attendance) == 1 s1.add_attendee(s) s1.add_attendee(s) assert len(s1.users_attendance) == 2
def user_login(request): # header = 'HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n' # 仅添加content-type字段 session = None if request.method == 'POST': form = request.form() username = form.get('username') password = form.get('password') if User.validate_login(username, password): u = User.find_by(username=username) # 向headers中添加set-cookie字段 # 通过设置一个随机字符串生成session_id session_id = random_str() form = dict( session_id=session_id, user_id=u.id, ) s = Session.new(form) s.save() session = {'Set-Cookie': 'session_id={}'.format( session_id )} result = '登录成功' else: result = '用户名或者密码错误' u = User.guest() else: result = '' u = current_user(request) body = template( 'login.html', username=u.username, result=result ) return http_response(body, session)
def current_user(): headers = request.headers session_id = headers.get('sessionId') user = Session.current_user(session_id) log(user) return user
def test_user_can_degrestration_prior_to_deregister_timeframe(): se = SeminarEvent(name='test', description='test', start_time=datetime.now(), end_time=datetime.now(), convenor=u) s1 = Session(name='s1 test', start_time=datetime.now(), end_time=datetime.now() + timedelta(days=1), deregister_timeframe=datetime.now() + timedelta(days=1), early_bird=Session.calculate_date(datetime.now(), 1), speaker=g1, event=se, capacity=10, venue=venue) s1.add_attendee(g1) s1.remove_attendee(g1) # user is able to deregister s1.deregister_timeframe = datetime.now() - timedelta(days=1) db.session.commit() # did not attend with pytest.raises(attendanceError) as err: s1.remove_attendee(g1) assert 'user did not attend this session' in str(err.value) # deregister within deregister timeframe s1.add_attendee(g1) with pytest.raises(attendanceError) as err: s1.remove_attendee(g1) assert 'user cannot deregist within deregister timeframe' in str(err.value)
def first_run(): # load user_csv into db with open('./user.csv') as csvfile: reader = csv.DictReader(csvfile) for row in reader: name, zid, email, password, role = row.values() if role == 'trainee': u = Student(id=zid, name=name, password=password, email=email) db.session.add(u) elif role == 'trainer': # add user to db u = Staff(id=zid, name=name, password=password, email=email) db.session.add(u) # add user to db u = Staff(name='Admin', id=1234, password=1234, email='*****@*****.**') db.session.add(u) u.secret_token = '1' db.session.commit() for i in range(0, 5): # add venue to db db.session.add( Venue(name='''venue %d''' % i, location='''location %d''' % i)) v = Venue.query.all()[0] for i in range(0, 3): db.session.add( SeminarEvent(name='''seminar %d''' % i, description='''this is seminar %d''' % i, capacity=60, start_time=datetime.now(), end_time=datetime.now(), convenor=u, venue=v)) # add event to db db.session.add( CourseEvent(name='course 1', description='this is course 1', capacity=60, start_time=datetime.now(), end_time=datetime.now(), convenor=u, venue=v)) s = SeminarEvent.query.all()[0] c = CourseEvent.query.all()[0] for i in range(0, 2): db.session.add( Session(name='''session %d''' % i, start_time=datetime.now(), end_time=datetime.now(), deregister_timeframe=datetime.now(), speaker=u, event=s, capacity=s.capacity)) db.session.add( Session(name='''session %d''' % i, start_time=datetime.now(), end_time=datetime.now(), deregister_timeframe=datetime.now(), speaker=u, event=c, capacity=s.capacity)) db.session.commit() user1 = User.query.all()[-1] session1 = Session.query.all()[0] # user1 want to attend session1 session1.users_attendance.append(user1) # OR # user1.attended_sessions.append(session1) # list all attending users of a session session1.users_attendance # list all attending sessions of a users user1.attended_sessions db.session.commit()