Test suite runs and passes!
[zzz-floof.git] / floof / websetup.py
index 705c342..8f3d896 100644 (file)
@@ -1,15 +1,52 @@
+# -*- coding: utf-8 -*-
 """Setup the floof application"""
 import logging
 
 from floof.config.environment import load_environment
-from floof.model import meta
-import elixir
 
 log = logging.getLogger(__name__)
 
+from pylons import config
+from elixir import *
+from floof import model as model
+
+import os
+
 def setup_app(command, conf, vars):
     """Place any commands to setup floof here"""
     load_environment(conf.global_conf, conf.local_conf)
 
-    # Create the tables if they don't already exist
-    elixir.create_all(bind=meta.engine, checkfirst=False)
+    # We try to recreate the db when it already exists, like, a lot.  This
+    # fucks everything.  Do a dumb check for it.
+    assert not model.User.table.exists(), \
+           "Database is already initialized; please purge it first."
+
+    ### Database schema
+    model.metadata.create_all()
+
+    ### Sample data
+    # Users
+    identity_url = model.IdentityURL(url=u'http://eevee.livejournal.com/')
+    user = model.User(name=u'eevee', display_name=u'Eevee')
+    user.identity_urls.append(identity_url)
+
+    model.Session.commit()
+
+    ### Filesystem stuff
+    # Only necessary if we're using the filesystem for storage.
+    # And we are!
+    art_path = os.path.join(config['app_conf']['static_root'], 'art')
+    # Test that we can write to the art directory
+    if os.access(art_path, os.W_OK | os.X_OK):
+        # Create directories for various image sizes
+        for subdir in ['original', 'medium', 'thumbnail']:
+            path = os.path.join(art_path, subdir)
+            # If it exists, it should be writeable.  If not, create it.
+            if os.path.exists(path):
+                if not os.access(path, os.W_OK | os.X_OK):
+                    print "*** WARNING: Can't write to the art/{0} " \
+                          "directory!".format(subdir)
+                continue
+            os.makedirs(path)
+    else:
+        print "*** WARNING: Can't write to the art directory!"