def test_create_user(): users = [User('name{}'.format(i), 'qqq{}@qqq.qqq'.format(i)) for i in range(5)] for user in users: with UserDao() as dao: dao.create(user) for user in users: with UserDao() as dao: found = dao.get(user.email) assert found.name == user.name
def create_meeting(request): if request.method == 'GET': with UserDao() as dao: autocomplete = dao.get_autocomplete( User(email=request.COOKIES.get('useremail'))) return render( request, 'create.html', { 'meeting': Meeting( '', '', '', '', [], '', '', ), 'action': 'create', 'autocomplete': autocomplete }) elif request.method == 'POST': emails = {x for x in request.POST['invited'].split(',') if x} meeting = Meeting( User(email=request.COOKIES.get('useremail')), request.POST['title'], request.POST['address'], request.POST['date'], [Invitation(user=User(email=email)) for email in emails], request.POST['description'], ) with MeetingDao() as dao: dao.create(meeting) return render(request, 'created.html', { 'meeting': meeting, })
def test_autocomplete_emails(user): inv1 = Invitation(user=User(email='*****@*****.**')) inv2 = Invitation(user=User(email='*****@*****.**')) with MeetingDao() as dao: dao.create( Meeting( user=user, title='title1', address='address1', invited=[inv1], date=chop_microseconds(datetime.datetime.now() + datetime.timedelta(3)), )) dao.create( Meeting( user=user, title='title1', address='address2', invited=[inv1, inv2], date=chop_microseconds(datetime.datetime.now() + datetime.timedelta(3)), )) with UserDao() as dao: users = dao.get_autocomplete(user) assert inv1.user in users assert inv2.user in users assert user not in users
def _edit_meeting_page(request, meeting: Meeting, action, error=None): assert action in (meeting_action_update, meeting_action_create) if meeting.date: meeting.date = meeting.date.strftime('%m/%d/%Y') with UserDao() as dao: autocomplete = dao.get_autocomplete( User(email=request.COOKIES.get('useremail'))) action = action if action == meeting_action_create else \ 'update/{}/'.format(id) if action == meeting_action_update else None return render( request, 'create.html', { 'meeting': meeting, 'action': action, 'autocomplete': autocomplete, 'error': error if error is not None else '', })
def edit(request, id): if request.method == 'GET': with MeetingDao() as dao: meeting = dao.get_single(id) if meeting is None or meeting.user.email != request.COOKIES.get( 'useremail'): return redirect('/access_denied') meeting.date = meeting.date.strftime('%m/%d/%Y') with UserDao() as dao: autocomplete = dao.get_autocomplete( User(email=request.COOKIES.get('useremail'))) return render( request, 'create.html', { 'meeting': meeting, 'action': 'update/{}/'.format(id), 'autocomplete': autocomplete, })
def __call__(self, request): # Code to be executed for each request before # the view (and later middleware) are called. if request.path in ('/auth_begin', '/redirect'): response = self.get_response(request) return response email = request.COOKIES.get('useremail', None) if email is None: return auth(request) else: with UserDao() as dao: user = dao.get(email) if user is not None: token = request.COOKIES.get('token') expected_token = hashlib.md5( (user.name + user.email).encode()).hexdigest() if token != expected_token: return auth(request) return self.get_response(request) else: return auth(request)
def auth_redirect(request): state = request.GET['state'] flow = google_auth_oauthlib.flow.Flow.from_client_secrets_file( client_json_path, scopes=['profile'], state=state, ) flow.redirect_uri = 'http://cursdb.com:8000/redirect' authorization_response = request.build_absolute_uri() flow.fetch_token(authorization_response=authorization_response) session = flow.authorized_session() data = session.get('https://www.googleapis.com/userinfo/v2/me').json() with UserDao() as dao: user = User(data['name'], data['email']) dao.create(user) response = redirect('/') response.set_cookie('useremail', user.email) response.set_cookie('username', user.name) response.set_cookie( 'token', hashlib.md5((user.name + user.email).encode()).hexdigest()) return response
def test_user_should_not_see_meeting_until_accept(user): user2 = User(email='*****@*****.**') with UserDao() as dao: dao.create(user2) meeting = Meeting( user, 'title', 'address', chop_microseconds(datetime.datetime.now() + datetime.timedelta(3)), [Invitation(user=user2)], 'desc', ) with MeetingDao() as dao: dao.create(meeting) m1 = dao.get(user) m2 = dao.get(user2) with InvitationDao() as dao: i1 = dao.get(user) i2 = dao.get(user2) assert len(m1) == 1 assert len(m1[0].invited) == 1 meeting = m1[0] assert len(m2) == 0 assert len(i1) == 0 assert len(i2) == 1 with InvitationDao() as dao: dao.accept(meeting.id, user2) with MeetingDao() as dao: m1 = dao.get(user) m2 = dao.get(user2) with InvitationDao() as dao: i1 = dao.get(user) i2 = dao.get(user2) assert len(m1) == 1 assert len(m2) == 1 assert len(i1) == 0 assert len(i2) == 0