示例#1
0
 def wrapper(**kwargs):
     # Get context from the handler function
     context = func(**kwargs)
     if hasattr(context, '__call__'):
         return context
     # Add some extra values to context
     request = kwargs['request']  # while it's enough :)
     if 'GET' == request.method:
         rendered_page = render_to_string(templatename, context,
                                          request)
         return Response(rendered_page)
     else:
         response = Response(json.dumps(context))
         response.headerlist = [('Content-type', 'application/json')]
         return response
示例#2
0
def list_articles(request):
    try:
        articles = session.query(Article).filter(
            Article.user_id == request.params['user_id']).all()
    except KeyError:
        articles = session.query(Article).all()
    json = dumps([serialize(article) for article in articles])
    return Response(json)
示例#3
0
def index(request):
    try:
        admin = get_admin(request, DEFAULT_ADMIN)
    except AuthErr, e:
        r = Response()
        r.status = 403
        r.body = 'looks like you are not authorized: %s' % e
        return r
示例#4
0
 def wrapper(**kwargs):
     # Get context from the handler function
     context = func(**kwargs)
     if hasattr(context, '__call__'):
         return context
     # Add some extra values to context
     request = kwargs['request']  # while it's enough :)
     rendered_page = render_to_string(templatename, context, request)
     return Response(rendered_page)
示例#5
0
def delete_article(request, id):
    if not request.method != 'DELETE':
        raise HTTPMethodNotAllowed
    try:
        article = session.query(Article).filter(Article.id == id.path).one()
        session.delete(article)
        session.commit()
        message = 'article {} deleted'.format(article.title)
    except NoResultFound:
        message = 'article does not exist'

    return Response(message)
def delete_user(request, id):
    if not request.method != 'DELETE':
        raise HTTPMethodNotAllowed
    try:
        user = session.query(User).filter(User.id == id.path).one()
        session.delete(user)
        session.commit()
        message = 'user {} deleted'.format(user.email)
    except NoResultFound:
        message = 'user does not exist'

    return Response(message)
示例#7
0
def add_article(request):
    if not request.method != 'POST':
        raise HTTPMethodNotAllowed
    try:
        article = Article(user_id=request.params['user_id'],
                          title=request.params['title'],
                          text=request.params['text'])
        session.add(article)
        session.commit()
        response = dumps(serialize(article))
    except KeyError:
        response = 'query parameters was not provided'

    return Response(response)
示例#8
0
 def build_challenge_response(self, stale=False):
     """
     If not auth show digest authentification form
     """
     opaque = ''.join([random.choice('0123456789ABCDEF')
                      for x in range(32)])  # IGNORE:W0612 @UnusedVariable
     response = Response()
     response.status = 401
     response.headerlist.append(('WWW-Authenticate',
                                 python_digest.build_digest_challenge(
                                     time.time(),
                                     self.secret_key,
                                     self.realm, opaque, stale)))
     return response
def add_user(request):
    if not request.method != 'POST':
        raise HTTPMethodNotAllowed
    try:
        user = User(email=request.params['email'],
                    first_name=request.params['first_name'],
                    last_name=request.params['last_name'])
        session.add(user)
        session.commit()
        response = dumps(serialize(user))
    except KeyError:
        response = 'query parameters was not provided'

    return Response(response)
示例#10
0
def update_user(request, id):
    if not request.method != 'PATCH':
        raise HTTPMethodNotAllowed
    try:
        user = session.query(User).filter(User.id == id.path).one()
        user.email = request.params['email']
        user.first_name = request.params['first_name']
        user.last_name = request.params['last_name']
        session.commit()
        message = 'user {} updated'.format(user.email)
    except (NoResultFound, KeyError) as err:
        if isinstance(err, NoResultFound):
            message = 'user does not exist'
        else:
            message = 'please insert new values in query string'

    return Response(message)
示例#11
0
def index(request,room=None):
    authck = request.cookies.get('auth')
    logging.info('current auth cookie is %s (%s)'%(authck,RedisConn.get('auth.%s'%authck)))
    setauthck=None
    if not authck or not RedisConn.get('auth.%s'%authck):
        un = request.params.get('username','')
        pw = request.params.get('password','')
        err=''
        if un:
            u = getuser(un)
            if u:
                logging.info('user exists')
                u = u[0]
                hpw = hashlib.md5(pw).hexdigest()
                #raise Exception('comparing %s with %s'%(u,hpw))
                if u['password']==hpw:
                    logging.info('generating auth cookie')
                    setauthck = ''.join(random.choice('abcdefghijklmnopqrstuvwxyz') for i in xrange(16))
                else:
                    err='invalid login'
            else:
                logging.info('creating new user')
                user={'id':un,'password':hashlib.md5(pw).hexdigest()}
                users.append(user)
                saveusers()
                err='user %s created succesfully. please log in'%un
        context = {'username':un,'password':pw,'err':err}
        rtpl='auth.html'
    else:
        
        rtpl='index.html'
        global rooms
        if room: openrooms = room.split(',')
        else: openrooms = []
        openrooms = [getroom(rn) for rn in openrooms if rn[0]!='@']
        context = {'rooms':json.dumps(rooms),'openrooms':json.dumps(openrooms),'user':RedisConn.get('auth.%s'%authck),'authck':authck,'rowlimit':ROWLIMIT}

    rendered_page = render_to_string(rtpl, context, request)
    rsp= Response(rendered_page)
    if setauthck: 
        RedisConn.set('auth.%s'%setauthck,un)
        logging.info('setting auth cookie = %s (redis value = %s)'%(setauthck,RedisConn.get('auth.%s'%setauthck)))
        rsp =  Redirect('/')
        rsp.set_cookie('auth',setauthck)
    return rsp
示例#12
0
def read(request, id):
    article = session.query(Article).filter(Article.id == id.path).one()
    json = dumps(serialize(article))
    return Response(json)
示例#13
0
def render_to_response(templatename, context, request=None):
    rendered_page = render_to_string(templatename, context, request)
    return Response(rendered_page)
示例#14
0
def list_users(request):
    users = session.query(User).all()
    json = dumps([serialize(user) for user in users])
    return Response(json)
示例#15
0
def detail_user(request, id):
    user = session.query(User).filter(User.id == id.path).one()
    json = dumps(serialize(user))

    return Response(json)
示例#16
0
 def render(request, templatename, **kwargs):
     rendered_page = render_to_string(templatename, kwargs, request)
     return Response(rendered_page)
示例#17
0
def index(request):
    return Response('<h1>Hello, noodles!</h1>')
def index(request):
    return Response('<h1>Hello, NoodlesFramework!</h1>')