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