Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/controllers/default.py
diff options
context:
space:
mode:
Diffstat (limited to 'controllers/default.py')
-rw-r--r--controllers/default.py120
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)