Ejemplo n.º 1
0
def delete_album(request, albumno):
    if request.is_ajax():
        if request.method == 'POST':
            user = Helpers.getUser(request)
            Album.objects.filter(id=albumno, owner=user).delete()
            return HttpResponse(json.dumps({ "redirect": '/albums' }), content_type="application/json") # OK
            
    return HttpResponse(status=400) # FAIL
Ejemplo n.º 2
0
def show_albums(request):
    user = Helpers.getUser(request)
    context = { 'user':user, 'albums':None }
    
    if user.is_authenticated():
        context['albums'] = user.albums.all()
    
    return render_to_response('albums.html', context, context_instance=RequestContext(request))
Ejemplo n.º 3
0
def delete_page(request, albumno, pageno):
    if request.is_ajax():
        if request.method == 'POST':
            user = Helpers.getUser(request)
            album = get_object_or_404(Album, id=albumno, owner=user)
            # @todo: UPDATE PAGE LINKING AND NUMBERING!
            AlbumPage.objects.filter(album=album, pageno=pageno).delete()
            return HttpResponse(json.dumps({ "redirect": '/albums/%s/?edit=true' % albumno }), content_type="application/json") # OK
            
    return HttpResponse(status=400) # FAIL
Ejemplo n.º 4
0
def delete_photo(request, albumno, pageno, photono):
    
    if request.is_ajax():
        if request.method == 'POST':
            user = Helpers.getUser(request)
            album = get_object_or_404(Album, id=albumno, owner=user)
            page = album.pages.filter(pageno=pageno)
            Photo.objects.filter(albumpage=page, photono=photono).delete()
            return HttpResponse(json.dumps({ "redirect": '/albums/%s/%s/?edit=true' % (albumno, pageno) }), content_type="application/json") # OK
            
    return HttpResponse(status=400) # FAIL
Ejemplo n.º 5
0
def create(request):

    form = AlbumCreateForm()
    user = Helpers.getUser(request)

    if request.method == 'POST':
        album = Album(owner=user)
        form = AlbumCreateForm(request.POST, instance=album)
        if form.is_valid():
            instance = form.save()
            return redirect('/albums/%d?edit=true' % instance.id)

    return render_to_response('create.html', { "albumCreateForm": form }, context_instance=RequestContext(request))
Ejemplo n.º 6
0
def settings():
    if session.get('logged_in'):
        if request.method == 'POST':
            user, s = helpers.changeUser()
            if request.form['password'] != "":
                user.password = helpers.hashPassword(request.form['password'])
            if request.form['email'] != "": user.email = request.form['email']
            if request.form['c1'] != "": user.c1 = request.form['c1']
            if request.form['c2'] != "": user.c2 = request.form['c2']
            s.commit()
            return json.dumps({'status': 'Saved'})
        user = helpers.getUser()
        return render_template('settings.html', user=user)
    return redirect(url_for('login'))
Ejemplo n.º 7
0
def login():
    if not session.get('logged_in'):
        form = LoginForm(request.form)
        if request.method == 'POST':
            username = request.form['username'].lower()
            password = request.form['password']
            if form.validate():
                if helpers.credentialsValid(username, password):
                    session['logged_in'] = True
                    session['username'] = username
                    return json.dumps({'status': 'Login successful'})
                return json.dumps({'status': 'Invalid user/pass'})
            return json.dumps({'status': 'Both fields required'})
        return render_template('login.html', form=form)

    user = helpers.getUser()
    return render_template('index.html', user=user)
Ejemplo n.º 8
0
def buy():
    if request.method == 'GET':
        return render_template('buy.html')
    shares = request.form.get('shares')
    symbol = request.form.get('symbol')
    if not shares or not symbol:
        return apology('Shares and symbol are required')
    try:
        shares = int(shares)
        if shares < 0:
            return apology('Shares must be a valid value')
    except:
        return apology('Shares must be a valid value')
    quote = lookup(symbol)
    if not quote:
        return apology('Symbol not found')
    user_id = session.get("user_id")
    user = getUser(user_id, db)
    if user['cash'] < (quote['price'] * shares):
        return apology('Insufficient founds')
    userCashDecrement = quote['price'] * shares
    userQuote = db.execute(
        'SELECT * FROM user_quotes WHERE user_id = ? AND quote_symbol = ?',
        user_id, symbol)
    if not userQuote:
        db.execute(
            'INSERT INTO user_quotes(user_id, quote_symbol, shares) VALUES(?,?,?)',
            user_id, symbol, shares)
        db.execute('UPDATE users SET cash = cash - ? WHERE id = ?',
                   userCashDecrement, user_id)
        log(user_id, symbol, shares, quote['price'], db)
    else:
        db.execute(
            'UPDATE user_quotes SET shares= shares + ? WHERE quote_symbol=? AND user_id=?',
            shares, symbol, user_id)
        db.execute('UPDATE users SET cash = cash - ? WHERE id = ?',
                   userCashDecrement, user_id)
        log(user_id, symbol, shares, quote['price'], db)
    return redirect('/')
Ejemplo n.º 9
0
def albumoverview(request, albumid):
    user = Helpers.getUser(request)
    album = get_object_or_404(Album, id=albumid, owner=user);
    context = {"album": album}

    # Fetch pages.
    pages = AlbumPage.objects.filter(album=albumid)

    if request.method == 'POST':
        # Add new page?
        if request.POST["action"] == 'addpage':
            if "layout" in request.POST:
                layoutno = request.POST["layout"];
                if not pages:
                    pageno = 1
                else:
                    pageno = pages.count() + 1
                albumpage = AlbumPage(album=album, layout=layoutno, pageno=pageno)
                albumpage.save()
            # a sluggish way of handling false submission. Should be implemented with Django Forms
            else:
                return redirect('/albums/%s?edit=true' % albumid)

    pages = AlbumPage.objects.filter(album=albumid)
    
    # construct 'photos' dictionaries for each page, like the albumpage view does
    for albumpage in pages:
        albumpage.photodict = Helpers.createPhotoDictionary(albumpage)
        albumpage.layouttemplate = 'albumpage-layout-%d.html' % albumpage.layout
        
    context["pages"] = pages
    
    # for convenience, editmode is passed to the template as a string that can
    # be appended to URLs
    if ("edit" in request.GET):
        context["editmode"] = "?edit=true"

    return render_to_response('albumoverview.html', context, context_instance=RequestContext(request))
Ejemplo n.º 10
0
from google.cloud import firestore
import argparse
import datetime
import helpers

script_version = 1


def deleteMessage(db, message):
    doc_ref = db.collection(u'messages').document(message.id)
    helpers.printSnapshot(doc_ref.get())
    doc_ref.delete()


if __name__ == '__main__':
    parser = argparse.ArgumentParser()
    args = parser.parse_args()
    db = firestore.Client()

    users = helpers.queryUsers(db)
    messages = helpers.queryMessages(db)
    for message in messages:
        user1 = helpers.getUser(message.get(u'user1'), users)
        user2 = helpers.getUser(message.get(u'user2'), users)

        if user1 is None or user2 is None:
            deleteMessage(db, message)
Ejemplo n.º 11
0
def show_landing_page(request):
    return render_to_response('base.html', { "user": Helpers.getUser(request) }, context_instance=RequestContext(request))
Ejemplo n.º 12
0
def albumpage(request, albumid, pageno):
    
    pageno = int(pageno)

    user = Helpers.getUser(request)
    album = get_object_or_404(Album, id=albumid, owner=user)
    
    context = {"album": album}

    # Fetch information about the requested page
    context["pageno"] = pageno

    albumpage = get_object_or_404(AlbumPage, album=albumid, pageno=pageno)
    context["albumpage"] = albumpage

    if pageno > 1:
        context["prevpageno"] = int(pageno) - 1

    if pageno < album.pages.count():
        context["nextpageno"] = int(pageno) + 1
        
    photosdict = Helpers.createPhotoDictionary(albumpage)
    context["photos"] = photosdict

    # If we returned from the search/basket page, there's a caption in the URL. Extract that
    # There is a maximum of 4 photos per page in any layout
    if request.method == 'GET':
        if "search-result-url" in request.GET:
            photono = request.GET["photono"] if "photono" in request.GET else None 
            if photono in photosdict:
                photo = photosdict[photono]
            else:
                photo = Photo(albumpage_id=albumpage.id, photono=photono)
                photosdict[photono] = photo
            photo.url = request.GET["search-result-url"]
            photo.unsaved = True
            context["unsaved"] = True
            
 
    # If this was an edit, update the objects with the new values
    if request.method == 'POST':
        # There is a maximum of 4 photos per page in any layout
        for photono in range(1, 5):
            newcaption = request.POST.get("photo-%d-caption" % photono, None)
            newurl = request.POST.get("photo-%d-url" % photono, None)
            if newcaption or newurl:
                if photono in photosdict:
                    photo = photosdict[photono]
                else:
                    photo = Photo(albumpage_id=albumpage.id, photono=photono)
                    photosdict[photono] = photo
                photo.caption = newcaption
                photo.url = newurl
                photo.save()
                album.cover = photo
                album.save()
            

    # Render response.
    # First choose the template to use for this page's layout.
    context["layouttemplate"] = 'albumpage-layout-%d.html' % albumpage.layout

    # for convenience, editmode is passed to the template as a string that can
    # be appended to URLs
    if "edit" in request.GET:
        context["editmode"] = "?edit=true"

    return render_to_response('albumpage.html', context, context_instance=RequestContext(request))
Ejemplo n.º 13
0
def importdialog(request):
    if request.is_ajax():
        user = Helpers.getUser(request)
        albums = Album.objects.filter(owner=user).order_by('created_date')
        return render_to_response('import-dialog.html', { "albums": albums }, context_instance=RequestContext(request))
    return redirect('albums')
Ejemplo n.º 14
0
from google.cloud import firestore
import argparse
import datetime
import helpers

script_version = 1


def deleteRequest(db, request):
    doc_ref = db.collection(u'requests').document(request.id)
    helpers.printSnapshot(doc_ref.get())
    doc_ref.delete()


if __name__ == '__main__':
    parser = argparse.ArgumentParser()
    args = parser.parse_args()
    db = firestore.Client()

    users = helpers.queryUsers(db)
    requests = helpers.queryRequests(db)
    for request in requests:
        sender = helpers.getUser(request.get(u'senderId'), users)
        receiver = helpers.getUser(request.get(u'receiverId'), users)

        if sender is None or receiver is None:
            deleteRequest(db, request)
Ejemplo n.º 15
0
    # randomize in case the user was specified
    users = [userA, userB]
    random.shuffle(users)
    return createRequest(db, users[0], users[1])


if __name__ == '__main__':
    parser = argparse.ArgumentParser()
    parser.add_argument("-c", "--count", type=int, default=3)
    parser.add_argument("--user")
    args = parser.parse_args()
    db = firestore.Client()

    users = helpers.queryUsers(db)
    requests = helpers.queryRequests(db)
    for i in range(0, args.count):
        if args.user is None:
            request = addRandomRequest(db, users, requests)
        else:
            request = addUserRequest(db, helpers.getUser(args.user, users),
                                     users, requests)
        if request is None:
            print("Adding a request failed at count:" + str(i))
            break
        requests.append(request)
        helpers.printSnapshot(request)

    # Uncomment to query all users
    # queryUsers(db)