Esempio n. 1
0
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)
Esempio n. 2
0
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)
Esempio n. 3
0
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
Esempio n. 4
0
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'})
Esempio n. 5
0
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)
Esempio n. 7
0
def register():
    data = request.json
    log(data)
    u = User(**data)
    u.save()
    session = Session.new(u)
    return session.response()
Esempio n. 8
0
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)
Esempio n. 10
0
 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))
Esempio n. 11
0
 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
Esempio n. 12
0
 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))
Esempio n. 13
0
 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))
Esempio n. 14
0
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)
Esempio n. 15
0
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
Esempio n. 16
0
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()
Esempio n. 17
0
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'
Esempio n. 18
0
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"
Esempio n. 19
0
 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))
Esempio n. 20
0
 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
Esempio n. 21
0
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
Esempio n. 22
0
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)
Esempio n. 23
0
def current_user():
    headers = request.headers
    session_id = headers.get('sessionId')
    user = Session.current_user(session_id)
    log(user)
    return user
Esempio n. 24
0
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)
Esempio n. 25
0
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()