Esempio n. 1
0
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
Esempio n. 2
0
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,
        })
Esempio n. 3
0
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
Esempio n. 4
0
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 '',
        })
Esempio n. 5
0
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,
            })
Esempio n. 6
0
 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)
Esempio n. 7
0
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
Esempio n. 8
0
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