Beispiel #1
0
def create(request):
    if not request.is_xhr:
        if request.method == 'POST':
            p = Project()
            factories = {'active': bool, 'featured': bool, 'tags': lambda x: x.split(' ')}
            keys = ( 'active', 'featured', 'tags'
                   , 'category', 'name', 'text', 'preview_small', 'preview_big'
                   , 'download_mac', 'download_pc')
            
            p['id'] = make_id(request.form.get('name'))
            
            for k in keys:
                v = request.form.get(k)
                
                p[k] = (factories[k](v) if k in factories else v)
            
            resp = Project.create(p)

            return redirect(url_for('update', docid=p['id']))
        
        elif request.method == 'GET':
            context = {
                'project': {},
                'user': {
                    'roles': request.session.get('roles', []) 
                },
                'debug': request.debug
            }
            
            return render_html('projects/create.html', context)
Beispiel #2
0
def uploadAttachment(request, docid):
    if request.method == 'POST':
        doc = Project.db.get(docid)

        for file in request.files:
            Project.db.add_attachment(doc, request.files[file].read(), 
                                      request.files[file].filename, 
                                      content_type=request.files[file].content_type)

        return redirect(url_for('update', docid=docid))
Beispiel #3
0
def logout(request):
    """docstring for logout"""
    sid = request.session.get('id', None)
    
    if sid:
        user = tuple(User.db.view('session/users', key=sid))[0]['value']
        user.pop('session')
        User.db.save(user)
        
    red = redirect(url_for('index'))
    red.delete_cookie('com.kinaj.session')
    
    return red
Beispiel #4
0
def login(request):
    """docstring for login"""
    if request.method == 'GET':
        context = {'referrer': request.args.get('referrer', url_for('index'))}
        
        return render_html('users/login.html', context)
        
    elif request.method == 'POST':
        
        username = request.form.get('username')
        password = request.form.get('password')
        
        user = User.db.get(username)
        
        if user and User.chkpwd(password, user['password']):
            request.session['id'] = uuid.uuid4().hex
            request.session['roles'] = user['roles'] or []
            request.session['username'] = user['_id']
            
            user['session'] = request.session
            user['last_login'] = time.time()
            
            User.update(user)
            
            red = redirect(request.args.get('referrer', url_for('index')))
            
            return red
        
        context = {
            'referrer': request.args['referrer'],
            'user': {
                'roles': request.session.get('roles', []) 
            },
            'debug': request.debug
        }
        
        return render_html('users/login.html', context)
Beispiel #5
0
def deleteAttachment(request, docid, attachment):
    doc = Project.db.get(docid)

    Project.db.delete_attachment(doc, attachment)

    return redirect(url_for('update', docid=docid))
Beispiel #6
0
def delete(request,docid):
    if not request.is_xhr:
        Project.delete(docid)
        return redirect(url_for('plist'))