Exemple #1
0
def api_get_users(*, page='0', pagesize='0'):
    users = (yield from User().find(limit=int(pagesize),
                                    offset=int(pagesize) * int(page)))['data']
    for user in users:
        logging.info('user: %s' % user)

    return dict(users=users)
Exemple #2
0
def api_blog_detail(*, id=0):
    blogs = (yield from Blog(id=id).find())['data']
    for blog in blogs:
        #		blog.createtime = datetime.strptime(blog.createtime, '%Y-%m-%d %H:%M:%S,%f').timestamp()
        user = (yield from User(id=blog.userid).find())['data'][0]
        blog.author = user
    return {'blog': blogs[0]}
Exemple #3
0
def api_user_authenticate(*, email, password):
    if not email or not email.strip():
        raise APIValueError('email', 'email is Null')
    if not _RE_EMAIL.match(email):
        raise APIValueError('email', 'email is not format')
    if not password or not password.strip():
        raise APIValueError('password', 'password is Null')
    users = (yield from User(email=email).find())['data']
    if len(users) == 0:
        raise APIValueError('email', 'email is not in use')
    user = users[0]
    sha1_password = '******' % (user.id, password)
    if hashlib.sha1(
            sha1_password.encode('utf-8')).hexdigest() != user.password:
        raise APIValueError('password', 'password is error')

    rep = web.Response()
    rep.content_type = 'application/json'
    rep.set_cookie(_COOKIE_NAME,
                   user2cookie(user, 86400),
                   max_age=86400,
                   httponly=True)
    user.password = '******'
    rep.body = json.dumps(user, ensure_ascii=False).encode('utf-8')
    return rep
    def register(session: Session, email: str, password: str, given_name: str, last_name: str,
                 phone: str) -> RegisterResult:
        """
        Register a new user in the application.
        :param given_name: The users given name to register with.
        :param last_name: The users last name to register with.
        :param phone: The users mobile phone number.
        :param session: A SQLAlchemy Session for the query.
        :param email: The email to register with, this is also the username.
        :param password: The password to register with.
        :return: The result of the registration process.
        """
        # Validate the data integrity of the parameters
        if email is None:
            return RegisterResult.BAD_USERNAME
        if password is None or not passwordService.validate(password):
            return RegisterResult.BAD_PASSWORD

        # Check to see if the user already exists
        existing_user = session.query(User) \
            .filter(User.email == email) \
            .first()
        if existing_user is not None:
            return RegisterResult.USERNAME_ALREADY_REGISTERED

        # Everything seems fine, so we go ahead and create the user & the linked account.
        password_hash = passwordService.hash(password)
        new_user = User(role=UserType.VOLUNTEER, password=password_hash, first_name=given_name, last_name=last_name,
                        mobile_number=phone, email=email, preferred_hours={}, experience_years=0, possibleRoles=["Basic"],
                        qualifications=[],
                        availabilities={"Friday": [], "Monday": [], "Sunday": [], "Tuesday": [], "Saturday": [],
                                        "Thursday": [], "Wednesday": []})
        session.add(new_user)
        session.flush()
        return RegisterResult.SUCCESS
Exemple #5
0
def api_get_blogs(request):

    blogs = (yield from Blog().find())['data']
    for blog in blogs:
        blog.createtime = datetime.strptime(
            blog.createtime, '%Y-%m-%d %H:%M:%S,%f').timestamp()
        user = (yield from User(id=blog.userid).find())['data'][0]
        blog.author = user

    return {'__template__': 'blogs.html', 'blogs': blogs}
Exemple #6
0
    def execute(self, request):
        response = Response()
        try:
            for post in [p['data'] for p in request.endpoint_data['data']['children']]:
                user_id = self.user_repo.add_user(User(name = post['author'], ups = post['ups'], comments = post['num_comments']))
                created_time = datetime.fromtimestamp(post['created_utc'], tz = pytz.timezone(request.timezone))
                self.post_repo.add_post(Post(title = post['title'], ups = post['ups'], comments = post['num_comments'], created = created_time, author = user_id))
            return response

        except Exception as e:
            response.add_exception_error(e)
            return response
 def test_get_ladders_when_in_a_ladder_should_put_your_ladder_at_the_top_and_have_true_flag(self):
     with patch.object(self.manager.dao, "get_ladders", return_value=[
         fixtures.ladder(1, "Ladder 1", date.today(), date.today(), False),
         fixtures.ladder(2, "Ladder 2", date.today(), date.today(), False),
     ]):
         with patch.object(self.manager.dao, "get_users_ladder_ids", return_value=[2]):
             self.manager.user = User("TEST1", "User", "*****@*****.**", "555-555-5555", "user.jpg", "availability", False)
             ladders = self.manager.get_ladders()
             self.assertEqual(2, len(ladders))
             self.assertEqual(2, ladders[0].ladder_id)
             self.assertTrue(ladders[0].logged_in_user_has_joined)
             self.assertEqual(1, ladders[1].ladder_id)
             self.assertFalse(ladders[1].logged_in_user_has_joined)
Exemple #8
0
def api_user_register(*, name, password, email):
    if not name or not name.strip():
        raise APIValueError('name', 'name is Null')
    if not password or not password.strip():
        raise APIValueError('password', 'password is Null')
    if not email or not email.strip():
        raise APIValueError('email', 'email is Null')
    if not _RE_EMAIL.match(email):
        raise APIValueError('email: %s' % email, 'email is no format')
    users = (yield from User(email=email).find())['data']
    if len(users) > 0:
        raise APIValueError('email', 'email: %s is already in use' % email)
    uid = next_id()
    sha1_password = '******' % (uid, password)
    user = User(id=uid,
                name=name,
                password=hashlib.sha1(
                    sha1_password.encode('utf-8')).hexdigest(),
                email=email,
                image='./res/tumble.png')
    res = yield from user.save()
    rep = web.Response()
    rep.content_type = 'application/json'
    if res == 1:
        logging.info('save user sucessed')
        rep.set_cookie(_COOKIE_NAME,
                       user2cookie(user, 86400),
                       max_age=86400,
                       httponly=True)
        user.password = '******'
        rep.body = json.dumps(user, ensure_ascii=False).encode('utf-8')
    else:
        logging.error('user save error')
        raise APIError('register', 'save', 'register failed')

    return rep
Exemple #9
0
def api_blog_list(*, page='0'):
    try:
        if int(page) < 0:
            page = 0
    except Exception as e:
        logging.exception(e)
        page = 0
    page = int(page)
    pagesize = 5
    data = (yield from Blog().find(index=page, limit=pagesize))
    blogs = data['data']
    info = data['info']
    for blog in blogs:
        #		blog.createtime = datetime.strptime(blog.createtime, '%Y-%m-%d %H:%M:%S,%f').timestamp()
        user = (yield from User(id=blog.userid).find())['data'][0]
        blog.author = user

    return {"blogs": blogs, "page": info}
Exemple #10
0
    def list_users(self, order):
        """
        Lists users ordering the results according to the constraints defined by the parameters of the function
        
        Args:
            order (datetime): How the users must be ordered. Options are 'ups' (number of upvotes) or 'comments' number of comments
        
        Returns:
            [List(User)]: List of Users ordered accordingly
        """

        try:
            order_clause = DbUser.comments.desc(
            ) if order == 'comments' else DbUser.ups.desc()
            db_users = DbUser.select().order_by(order_clause)
            return [
                User(name=u.name, ups=u.ups, comments=u.comments)
                for u in db_users
            ]
        except Exception as e:
            raise Exception('error listing user')
Exemple #11
0
    def validate_token(self, token):
        if token is None:
            return

        try:
            firebase_user = self.firebase_client.get_firebase_user(token)
            self.user = self.dao.get_user(firebase_user["user_id"])
            if self.user is None:
                print("Creating new user: "******"user_id"],
                    name=firebase_user.get("name", "Unknown"),
                    email=firebase_user["email"],
                    phone_number=None,
                    photo_url=firebase_user.get("picture") if firebase_user.get("picture") != "" else None,
                    availability_text=None,
                    admin=False
                )
                self.dao.create_user(self.user)
        except Exception as error:
            print("Token auth error: ", error)
            self.user = None
Exemple #12
0
def cookie2user(zip_cookie):
	if not zip_cookie:
		return None
	try:
		unzip_cookie = zip_cookie.split('-')
		if len(unzip_cookie) != 3:
			return None
		uid, duration, sha1 = unzip_cookie
		if int(duration) < time.time():
			return None
		users = (yield from User(id = uid).find())['data']
		user = users[0]
		if user is None:
			return None
		cookies = '%s-%s-%s-%s' % (user.id, user.password, duration, COOKIE_KEY)
		if sha1 != hashlib.sha1(cookies.encode('utf-8')).hexdigest():
			logging.info('invalid sha1')
			return None
		user.password = '******'
		return user
	except Exception as e:
		logging.exception(e)
		return None
Exemple #13
0
def user(user_id="", name="", email="", phone_number=None, photo_url=None, availability_text=None, admin=False) -> User:
    return User(user_id, name, email, phone_number, photo_url, availability_text, admin)
Exemple #14
0
def get_app():
    container = Container('app')
    container.register_type(EngineWrapper).to_type(EngineWrapper)
    container.register_type(SessionWrapper).to_type(SessionWrapper)

    container.register_type(DBConn).to_type(DBConn)
    # for user
    container.register_value(RecordTransformer(
      lambda record: User(record.id, record.name, record.password,
           Role(record.role)),
      lambda user: UserRecord(user.user_id, user.username, user.password,
            '', int(user.role)))) \
     .to_type(UserRecordTransformer)

    # for announcements
    container.register_value(
        RecordTransformer(
            lambda record: Announcement(record.title, record.text, record.date
                                        ),
            lambda announcement: AnnouncementRecord(
                announcement.title, announcement.text, announcement.date))
    ).to_type(AnnouncementRecordTransformer)
    container.register_value(
        JsonTransformer(lambda json: Announcement(json['title'], json[
            'text'], str(datetime.now().date())))).to_type(
                AnnouncementJsonTransformer)
    container.register_value(Filter(lambda x: True)) \
     .to_type(AnnouncementFilter)
    container.register_type(DBAnnouncement) \
     .to_type(DBAnnouncement)
    container.register_type(AnnouncementDesk, Instantiation.Singleton). \
     to_type(AnnouncementDesk) \
     .with_params(name='announcements')
    container.register_type(AnnouncementProvider, Instantiation.Singleton). \
     to_type(AnnouncementProvider)

    # for requests
    container.register_value(RecordTransformer(
      lambda record: Request(record.id, record.topic, record.comment,
              record.username, record.date,
              record.approved),
      lambda request: RequestRecord(request.id, request.topic,
               request.comment, request.username,
               request.date, request.approved))) \
     .to_type(RequestRecordTransformer)
    container.register_value(JsonTransformer(
      lambda json: Request(0, json['topic'],
            json['comment'], json['username'],
            str(datetime.now().date()),
            False))) \
     .to_type(RequestJsonTransformer)
    container.register_value(Filter(lambda record: not record.approved)) \
     .to_type(RequestFilter)
    container.register_type(DBRequest).to_type(DBRequest)
    container.register_type(RequestDesk, Instantiation.Singleton). \
     to_type(RequestDesk) \
     .with_params(name='requests')
    container.register_type(RequestProvider, Instantiation.Singleton). \
     to_type(RequestProvider)

    # for table request
    container.register_value(RecordTransformer(
      lambda record: TableRequest(record.id, record.number,
             record.date, record.username),
      lambda request: TableRequestRecord(request.id, request.number,
                 request.date,
                 request.username))). \
     to_type(TableRequestRecordTransformer)
    container.register_value(JsonTransformer(
      lambda json: TableRequest(0, json['number'],
              json['date'], json['username']))) \
     .to_type(TableRequestJsonTransformer)
    container.register_value(Filter(lambda x: True)) \
     .to_type(TableRequestFilter)
    container.register_type(DBTableRequest) \
     .to_type(DBTableRequest)
    container.register_type(TableRequestDesk, Instantiation.Singleton) \
     .to_type(TableRequestDesk).with_params(name='table_requests')
    container.register_type(TableRequestProvider, Instantiation.Singleton) \
     .to_type(TableRequestProvider)

    container.register_value(7).to_name('entry_count')

    container.register_type(DBUser) \
     .to_type(DBUser)

    container.register_type(UserManager, Instantiation.Singleton) \
     .to_type(UserManager)

    container.register_type(UserController, Instantiation.Singleton) \
     .to_type(UserController)

    container.register_type(Authentication, Instantiation.Singleton) \
     .to_type(Authentication)

    container.register_type(RouteManager, Instantiation.Singleton) \
     .to_type(RouteManager)

    routes = container.resolve_type(RouteManager)

    app = Flask(__name__, static_folder='./static/build', static_url_path='/')
    app.config.from_object(Config)

    app.register_blueprint(routes.Routes)

    @app.route('/')
    @app.route('/admin')
    @app.route('/login')
    @app.route('/request')
    @app.route('/table_request')
    def req():
        return app.send_static_file('index.html')

    return app
Exemple #15
0
from domain import Auction, User, Bid

paulo = User("Paulo")
amanda = User("Amanda")

paulo_bid = Bid(paulo, 100.0)
amanda_bid = Bid(amanda, 150.0)

auction = Auction("Notebook")

auction.bet(paulo_bid)
auction.bet(amanda_bid)

for bid in auction.bids:
    print(f"{bid.user.name.title()} has bet {bid.value}")

print(f"Highest bid: {auction.highest_bid}")
print(f"Lowest bid: {auction.lowest_bid}")