This commit is contained in:
Matthew Scragg 2014-08-20 10:28:25 -05:00
parent d0777e2b85
commit b02d3db684
41 changed files with 426 additions and 647 deletions

View file

@ -1,10 +1,11 @@
from flask.ext.assets import Bundle, Environment
# This can be done better, make it better
assets = Environment()
filters = 'uglifyjs'
output = 'assets/%(version)s.js'
def register(*files):
assets.debug = True
filters = 'uglifyjs'
output = 'assets/%(version)s.js'
assets.add(Bundle(*files, filters=filters, output=output))
def register(name, *files):
assets.register(name, Bundle(*files, filters=filters, output=output))

View file

@ -1,7 +1,7 @@
import time
from functools import update_wrapper
from flask import request, g
from services import cache
from services import db
class RateLimit(object):
@ -13,7 +13,7 @@ class RateLimit(object):
self.limit = limit
self.per = per
self.send_x_headers = send_x_headers
p = cache.pipeline()
p = db.pipeline()
p.incr(self.key)
p.expireat(self.key, self.reset + self.expiration_window)
self.current = min(p.execute()[0], limit)

View file

@ -1,8 +1,4 @@
import redis
from flask.ext.sqlalchemy import SQLAlchemy
from realms import config
db = SQLAlchemy()
# Default Cache connection
cache = redis.StrictRedis(host=config.REDIS_HOST, port=config.REDIS_PORT)
db = redis.StrictRedis(host=config.REDIS_HOST, port=config.REDIS_PORT, db=config.REDIS_DB)

View file

@ -3,11 +3,7 @@ import os
import hashlib
import json
from flask import request
from recaptcha.client import captcha
from realms import config
from realms.lib.services import cache
from realms.lib.services import db
class AttrDict(dict):
@ -41,7 +37,7 @@ def to_dict(data):
def cache_it(fn):
def wrap(*args, **kw):
key = "%s:%s" % (args[0].table, args[1])
data = cache.get(key)
data = db.get(key)
# Assume strings are JSON encoded
try:
data = json.loads(data)
@ -63,20 +59,11 @@ def cache_it(fn):
data = json.dumps(data, separators=(',', ':'))
except TypeError:
pass
cache.set(key, data)
db.set(key, data)
return ret
return wrap
def validate_captcha():
response = captcha.submit(
request.form['recaptcha_challenge_field'],
request.form['recaptcha_response_field'],
config.RECAPTCHA_PRIVATE_KEY,
request.remote_addr)
return response.is_valid
def mkdir_safe(path):
if path and not(os.path.exists(path)):
os.makedirs(path)
@ -134,4 +121,4 @@ def to_canonical(s):
def gravatar_url(email):
return "//www.gravatar.com/avatar/" + hashlib.md5(email).hexdigest()
return "//www.gravatar.com/avatar/" + hashlib.md5(email).hexdigest()

View file

@ -67,7 +67,7 @@ class Wiki():
if not page:
# Page not found
return None
commit_info = gittle.utils.git.commit_info(self.repo[commit_sha])
commit_info = gittle.utils.git.commit_info(self.repo[commit_sha.encode('latin-1')])
message = commit_info['message']
return self.write_page(name, page['data'], message=message, username=username)
@ -104,9 +104,8 @@ class Wiki():
content = re.sub(r"```(.*?)```", unescape_repl, content, flags=re.DOTALL)
filename = self.cname_to_filename(to_canonical(name))
f = open(self.path + "/" + filename, 'w')
f.write(content)
f.close()
with open(self.path + "/" + filename, 'w') as f:
f.write(content)
if create:
self.repo.add(filename)
@ -118,7 +117,7 @@ class Wiki():
username = self.default_committer_name
if not email:
email = "%s@realms.io" % username
email = self.default_committer_email
return self.repo.commit(name=username,
email=email,
@ -135,7 +134,9 @@ class Wiki():
def get_page(self, name, sha='HEAD'):
# commit = gittle.utils.git.commit_info(self.repo[sha])
name = self.cname_to_filename(name)
name = self.cname_to_filename(name).encode('latin-1')
sha = sha.encode('latin-1')
try:
return self.repo.get_commit_files(sha, paths=[name]).get(name)
except KeyError: