Milimetric has submitted this change and it was merged.

Change subject: create_all is safe after all
......................................................................


create_all is safe after all

Change-Id: I078db666fd141587d0c61547175cac181a885088
---
M wikimetrics/database.py
M wikimetrics/metrics/metric.py
2 files changed, 12 insertions(+), 9 deletions(-)

Approvals:
  Milimetric: Verified; Looks good to me, approved



diff --git a/wikimetrics/database.py b/wikimetrics/database.py
index dab80dc..a795155 100644
--- a/wikimetrics/database.py
+++ b/wikimetrics/database.py
@@ -18,6 +18,10 @@
 
 
 class SerializableBase(object):
+    """
+    This is used as a base class for our declarative Bases.  It allows us to 
jsonify
+    instances of SQLAlchemy models more easily.
+    """
     
     def _asdict(self):
         """ simplejson (used by flask.jsonify) looks for a method with this 
name """
@@ -65,11 +69,10 @@
                 self.config['WIKIMETRICS_ENGINE_URL'],
                 echo=self.config['SQL_ECHO'],
             )
-            self.wikimetrics_sessionmaker = 
sessionmaker(self.wikimetrics_engine)
-            
             # This import is necessary here so WikimetricsBase knows about all 
its children.
             import wikimetrics.models
-            self.WikimetricsBase.metadata.create_all(self.wikimetrics_engine)
+            self.WikimetricsBase.metadata.create_all(self.wikimetrics_engine, 
checkfirst=True)
+            self.wikimetrics_sessionmaker = 
sessionmaker(self.wikimetrics_engine)
         
         return self.wikimetrics_sessionmaker()
     
@@ -87,10 +90,9 @@
         if project in self.mediawiki_sessionmakers:
             return self.mediawiki_sessionmakers[project]()
         else:
-            engine = self.get_mw_engine(project)
-            # TODO: this should probably check before calling create_all
             import wikimetrics.models.mediawiki
-            self.MediawikiBase.metadata.create_all(engine)
+            engine = self.get_mw_engine(project)
+            self.MediawikiBase.metadata.create_all(engine, checkfirst=True)
             
             project_sessionmaker = sessionmaker(engine)
             self.mediawiki_sessionmakers[project] = project_sessionmaker
diff --git a/wikimetrics/metrics/metric.py b/wikimetrics/metrics/metric.py
index 8476039..2ca47ce 100644
--- a/wikimetrics/metrics/metric.py
+++ b/wikimetrics/metrics/metric.py
@@ -12,9 +12,10 @@
     This class is the parent of all Metric implementations.
     Child implementations should be callable and should take in users
     and return the metric computation results for each user.
-    This class and its children also act as WTForms form creators by inheriting
-    from wtf.Form.  It makes sure to only call the __init__ in wtf.Form when we
-    are inside a flask context.
+    In addition, Metric inherits from wtf.Form and therefore child 
implementations
+    can provide WTForms field definitions of their parametrization.
+    To enable user interaction with child implementations, Metric also defines 
some
+    class level properties that can be introspected by an interface.
     """
     
     show_in_ui  = False

-- 
To view, visit https://gerrit.wikimedia.org/r/71111
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: I078db666fd141587d0c61547175cac181a885088
Gerrit-PatchSet: 1
Gerrit-Project: analytics/wikimetrics
Gerrit-Branch: master
Gerrit-Owner: Milimetric <[email protected]>
Gerrit-Reviewer: Milimetric <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to