Example #1
0
 def user_agent(self):
     from gluon.contrib import user_agent_parser
     session = current.session
     user_agent = session._user_agent = session._user_agent or \
         user_agent_parser.detect(self.env.http_user_agent)
     user_agent = Storage(user_agent)
     for key, value in user_agent.items():
         if isinstance(value, dict): user_agent[key] = Storage(value)
     return user_agent
Example #2
0
 def user_agent(self):
     from gluon.contrib import user_agent_parser
     session = current.session
     user_agent = session._user_agent = session._user_agent or \
         user_agent_parser.detect(self.env.http_user_agent)
     user_agent = Storage(user_agent)
     for key,value in user_agent.items():
         if isinstance(value,dict): user_agent[key] = Storage(value)
     return user_agent
Example #3
0
def reader():
    """Read a book.

    request.args(0): id of book
    response.view should be assigned previous to calling this controller.
    """
    if not request.args(0):
        redirect(URL(c='default', f='index'))

    book_record = db(db.book.id == request.args(0)).select(
            db.book.ALL).first()
    if not book_record:
        redirect(URL(c='default', f='index'))

    creator_record = db(db.creator.id == book_record.creator_id).select(
            db.creator.ALL).first()
    auth_user = db(db.auth_user.id == creator_record.auth_user_id).select(
            db.auth_user.ALL).first()

    views = [
        'books/carousel.html',
        'books/gallery.html',
        'books/scroller.html',
        'books/slider.html',
    ]

    if response.view not in views:
        response.view = 'books/slider.html'

    page_images = db(db.book_page.book_id == request.args(0)).select(
            db.book_page.image
            )
    try:
        current_page = int(request.vars.page)
    except (TypeError, ValueError):
        current_page = 0
    next_page = current_page + 1 if current_page + 1 < len(page_images) else 0
    prev_page = current_page - 1 if current_page - 1 >= 0 else len(page_images) - 1

    ua = user_agent_parser.detect(request.env.http_user_agent)
    size = 'medium' if ua['is_mobile'] else 'original'

    return dict(
            auth_user=auth_user,
            book=book_record,
            creator=creator_record,
            pages=page_images,
            current_page=current_page,
            next_page=next_page,
            prev_page=prev_page,
            size=size,
            )
Example #4
0
def reader():
    """Read a book.

    request.args(0): id of book
    response.view should be assigned previous to calling this controller.
    """
    if not request.args(0):
        redirect(URL(c='default', f='index'))

    book_record = db(db.book.id == request.args(0)).select(db.book.ALL).first()
    if not book_record:
        redirect(URL(c='default', f='index'))

    creator_record = db(db.creator.id == book_record.creator_id).select(
        db.creator.ALL).first()
    auth_user = db(db.auth_user.id == creator_record.auth_user_id).select(
        db.auth_user.ALL).first()

    views = [
        'books/carousel.html',
        'books/gallery.html',
        'books/scroller.html',
        'books/slider.html',
    ]

    if response.view not in views:
        response.view = 'books/slider.html'

    page_images = db(db.book_page.book_id == request.args(0)).select(
        db.book_page.image)
    try:
        current_page = int(request.vars.page)
    except (TypeError, ValueError):
        current_page = 0
    next_page = current_page + 1 if current_page + 1 < len(page_images) else 0
    prev_page = current_page - 1 if current_page - 1 >= 0 else len(
        page_images) - 1

    ua = user_agent_parser.detect(request.env.http_user_agent)
    size = 'medium' if ua['is_mobile'] else 'original'

    return dict(
        auth_user=auth_user,
        book=book_record,
        creator=creator_record,
        pages=page_images,
        current_page=current_page,
        next_page=next_page,
        prev_page=prev_page,
        size=size,
    )
Example #5
0
 def user_agent(self):
     from gluon.contrib import user_agent_parser
     session = current.session
     user_agent = session._user_agent
     if user_agent:
         return user_agent
     http_user_agent = self.env.http_user_agent or ''
     user_agent = user_agent_parser.detect(http_user_agent)
     for key, value in user_agent.items():
         if isinstance(value, dict):
             user_agent[key] = Storage(value)
     user_agent = Storage(user_agent)
     user_agent.is_mobile = 'Mobile' in http_user_agent
     user_agent.is_tablet = 'Tablet' in http_user_agent
     session._user_agent = user_agent 
     
     return user_agent
Example #6
0
    def user_agent(self):
        from gluon.contrib import user_agent_parser
        session = current.session
        user_agent = session._user_agent
        if user_agent:
            return user_agent
        http_user_agent = self.env.http_user_agent or ''
        user_agent = user_agent_parser.detect(http_user_agent)
        for key, value in user_agent.items():
            if isinstance(value, dict):
                user_agent[key] = Storage(value)
        user_agent = Storage(user_agent)
        user_agent.is_mobile = 'Mobile' in http_user_agent
        user_agent.is_tablet = 'Tablet' in http_user_agent
        session._user_agent = user_agent

        return user_agent
Example #7
0
 def user_agent(self):
     from gluon.contrib import user_agent_parser
     session = current.session
     session._user_agent = session._user_agent or \
         user_agent_parser.detect(self.env.http_user_agent)
     return session._user_agent
Example #8
0
 def user_agent(self):
     from gluon.contrib import user_agent_parser
     session = current.session
     session._user_agent = session._user_agent or \
         user_agent_parser.detect(self.env.http_user_agent)
     return session._user_agent
Example #9
0
# And T.
current.T = T

# Let's log the user. 
logger.info("User: %r Email: %r Id: %r" % 
            (current.user_email, current.user_system_email, current.user_id))

request_scheme = 'http'
if request.is_https:
    request_scheme = 'https'
request_host = request_scheme + '://' + request.env.http_host
request_ssl_host = 'https://' + request.env.http_host
logger.info("Request host: %r" % request_host)
current.request_host = request_host

## Logout if not logged in via Google.
if auth.user and not current.user_email:
    auth.user = session.auth = None 

# Dynamic detection of device type.  Disable for production.
if not IS_GAE:
    from gluon.contrib import user_agent_parser
    from gluon.storage import Storage
    user_agent = user_agent_parser.detect(request.env.http_user_agent)
    for key, value in user_agent.items():
        if isinstance(value, dict):
            user_agent[key] = Storage(value)
    user_agent = response.user_agent = session._user_agent = Storage(user_agent)