default repo

This commit is contained in:
scragg 2013-09-30 09:34:16 -05:00
parent 32e152a2a7
commit 10b74fbc4f
4 changed files with 32 additions and 13 deletions

View file

@ -2,20 +2,21 @@ import config
import redis import redis
import logging import logging
import rethinkdb as rdb import rethinkdb as rdb
import os
from flask import Flask, request, render_template, url_for, redirect from flask import Flask, request, render_template, url_for, redirect
from flask.ext.bcrypt import Bcrypt from flask.ext.bcrypt import Bcrypt
from flask.ext.login import LoginManager from flask.ext.login import LoginManager
from flask.ext.assets import Environment from flask.ext.assets import Environment
from session import RedisSessionInterface from session import RedisSessionInterface
from gittle import Gittle from gittle import Gittle
from os import sep, path
from wiki import Wiki from wiki import Wiki
from util import mkdir_safe
app = Flask(__name__) app = Flask(__name__)
app.config.update(config.flask) app.config.update(config.flask)
app.debug = (config.ENV is not 'PROD') app.debug = (config.ENV is not 'PROD')
app.secret_key = config.secret_key app.secret_key = config.secret_key
app.static_path = sep + 'static' app.static_path = os.sep + 'static'
app.session_interface = RedisSessionInterface() app.session_interface = RedisSessionInterface()
bcrypt = Bcrypt(app) bcrypt = Bcrypt(app)
@ -29,13 +30,26 @@ assets.directory = app.static_folder
cache = redis.StrictRedis(host=config.cache['host'], port=config.cache['port']) cache = redis.StrictRedis(host=config.cache['host'], port=config.cache['port'])
conn = rdb.connect(config.db['host'], config.db['port']) conn = rdb.connect(config.db['host'], config.db['port'], db=config.db['dbname'])
if not config.db['dbname'] in rdb.db_list().run(conn) and config.ENV is not 'PROD':
# Create default db and repo
print "Creating DB %s" % config.db['dbname']
rdb.db_create(config.db['dbname']).run(conn)
for tbl in ['sites', 'users', 'pages']:
rdb.table_create(tbl).run(conn)
repo_dir = config.repos['dir'] + "/" + config.repos['main']
repo = Gittle(repo_dir)
mkdir_safe(repo_dir)
if not repo.has_index():
repo.init(repo_dir)
from models import Site from models import Site
site = Site.get_by_name(".") w = Wiki(repo_dir)
w = Wiki(site.get('repo'))
def redirect_url(): def redirect_url():

View file

@ -1,4 +1,5 @@
from reimagine import rdb, conn import rethinkdb as rdb
from reimagine import conn
def get_one(cur): def get_one(cur):
@ -7,9 +8,7 @@ def get_one(cur):
class BaseModel(): class BaseModel():
__db__ = None
__table__ = None __table__ = None
_rdb = rdb
_conn = conn _conn = conn
def __init__(self): def __init__(self):
@ -17,14 +16,13 @@ class BaseModel():
@classmethod @classmethod
def filter(cls, f, limit=None): def filter(cls, f, limit=None):
q = cls._rdb.db(cls.__db__).table(cls.__table__).filter(f) q = rdb.table(cls.__table__).filter(f)
if limit: if limit:
q.limit(int(limit)) q.limit(int(limit))
return q.run(cls._conn) return q.run(cls._conn)
class Site(BaseModel): class Site(BaseModel):
__db__ = 'lastdb'
__table__ = 'sites' __table__ = 'sites'
@classmethod @classmethod

View file

@ -2,6 +2,12 @@ import re
import os import os
def mkdir_safe(path):
if path and not(os.path.exists(path)):
os.makedirs(path)
return path
def extract_path(file_path): def extract_path(file_path):
if not file_path: if not file_path:
return None return None

View file

@ -18,7 +18,7 @@ nodaemon = false
minfds = 1024 minfds = 1024
minprocs = 200 minprocs = 200
umask = 022 umask = 022
user = deploy user = root
identifier = supervisor identifier = supervisor
directory = /tmp directory = /tmp
nocleanup = true nocleanup = true
@ -30,3 +30,4 @@ command=/usr/bin/python /vagrant/app.py
[program:rethinkdb] [program:rethinkdb]
command=/usr/bin/rethinkdb --config-file /etc/rethinkdb/rdb0.conf command=/usr/bin/rethinkdb --config-file /etc/rethinkdb/rdb0.conf
user=root