diff options
Diffstat (limited to 'controllers/default.py')
-rw-r--r-- | controllers/default.py | 120 |
1 files changed, 120 insertions, 0 deletions
diff --git a/controllers/default.py b/controllers/default.py new file mode 100644 index 0000000..d9f9a6d --- /dev/null +++ b/controllers/default.py @@ -0,0 +1,120 @@ +import os + +def sort_by_views(L): + if len(L) <= 1: return L + return sort_by_views( [ lt for lt in L[1:] if lt.views < L[0].views ] ) + [ L[0] ] + sort_by_views( [ ge for ge in L[1:] if ge.views >= L[0].views ] ) + +def sort_by_id(L): + if len(L) <= 1: return L + return sort_by_id( [ lt for lt in L[1:] if lt.id < L[0].id ] ) + [ L[0] ] + sort_by_id( [ ge for ge in L[1:] if ge.id >= L[0].id ] ) + +def index(): + sorts = ["newest", "views"] + if "page" in request.vars.keys(): page = int(request.vars["page"]) - 1 + else: page = 0 + if "sort" in request.vars.keys(): sort = request.vars["sort"] + else: sort = 'newest' + if sort not in sorts: + sort = "newest" + if "profile" in request.vars.keys(): profile = request.vars["profile"] + else: profile = None + table = [] + raw_images = db().select(db.image.ALL) + i = 0 + row = [] + count = 0 + images = [] + for image in raw_images: + if profile != None: + if image.creator == profile: + images.append(image) + else: images.append(image) + if sort == 'views': + #images = sort_by_views(images) + images.reverse() + if sort == 'newest': + images.sort(cmp=lambda x,y:cmp(x.id,y.id)) + images.reverse() + for image in images: + if count >= page * 12 and page*12+12 > count: + if i == 4: + table.append(row) + row = [] + i = 0 + i += 1 + row.append(image) + count += 1 + table.append(row) + pages = count / 12 + if count%12 > 0: pages += 1 + page += 1 + return dict(images=table, pages=pages, page=page, sort=sort, profile=profile) + +def upload(): + form = SQLFORM(db.image, fields = ['title', 'file', 'newimage', 'description']) + if form.accepts(request.vars, session): + session.new_image_title = form.vars.title + db(db.image.title==session.new_image_title).update(creator = auth.user.username) + db(db.image.title==session.new_image_title).update(views = 0) + redirect(URL(r=request, f='index')) + return dict(form=form) + +"""@service.xmlrpc +def upload_remote(username,password,image,ta_file,title,description): + logged_in = auth.login_bare(username,password) + if logged_in: + db.image.insert(file=ta_file, + image=image, + title=title, + description=description, + creator=auth.user.username, + views=0)""" + + + +def image(): + images = db().select(db.image.ALL) + image_id = int(request.vars["image"]) + for image in images: + if image.id == image_id: + real_image = image + title=real_image.title + if real_image == None: + redirect(URL(r=request, f='index')) + if auth.is_logged_in(): + if auth.user.username != real_image.creator: + views = int(real_image.views) + 1 + db(db.image.title==real_image.title).update(views = views) + form = SQLFORM(db.comment, fields = ['body']) + if form.accepts(request.vars, session): + db(db.comment.id==form.vars.id).update(author = auth.user.username) + db(db.comment.id==form.vars.id).update(image_id = real_image.id) + comments=db().select(db.comment.ALL) + image_comments = [] + for comment in comments: + if comment.image_id == real_image.id: + image_comments.append(comment) + return dict(image = real_image, form= form,comments=image_comments) + + +def testimage(): + return db(db.image.title=="hellotest") + +def user(): + return dict(form=auth()) + +def delete(): + images = db().select(db.image.ALL) + image_id = int(request.vars["id"]) + for image in images: + if image.id == image_id: + real_image = image + if auth.is_logged_in(): + if auth.user.username == real_image.creator: + query=(db.image.id==real_image.id) + db(query).delete() + redirect(URL(r=request, f='index')) + + +def download(): + return response.download(request, db) |