--- a/script/lib/iri_tweet/models.py Tue Sep 20 16:55:16 2011 +0200
+++ b/script/lib/iri_tweet/models.py Thu Sep 22 12:37:53 2011 +0200
@@ -1,10 +1,11 @@
from sqlalchemy import (Boolean, Column, Enum, BigInteger, Integer, String,
ForeignKey, DateTime, create_engine)
from sqlalchemy.ext.declarative import declarative_base
-from sqlalchemy.orm import relationship
+from sqlalchemy.orm import relationship, sessionmaker
import anyjson
import datetime
import email.utils
+import iri_tweet
Base = declarative_base()
@@ -44,7 +45,7 @@
__tablename__ = "tweet_process_event"
id = Column(Integer, primary_key=True, autoincrement=True)
ts = Column(DateTime, default=datetime.datetime.utcnow, index=True)
- type = Column(Enum("start","pid","shutdown","error", "start_worker", "stop_worker", name="process_event_type_enum"), nullable=False)
+ type = Column(Enum("start","pid","shutdown","error", "start_worker", "stop_worker", "model_version", "application_name", "application_version", name="process_event_type_enum"), nullable=False)
args = Column(String)
class EntityType(Base):
@@ -255,19 +256,35 @@
media_id = Column(BigInteger, ForeignKey('tweet_media.id'))
media = relationship(Media, primaryjoin=(media_id == Media.id))
+def add_model_version(session, must_commit=True):
+ pe = ProcessEvent(args=iri_tweet.get_version(), type="model_version")
+ session.add(pe)
+ if must_commit:
+ session.commit()
def setup_database(*args, **kwargs):
-
- create_all = True
- if "create_all" in kwargs:
- create_all = kwargs["create_all"]
- del(kwargs["create_all"])
+
+ session_argname = [ 'autoflush','binds', "class_", "_enable_transaction_accounting","expire_on_commit", "extension", "query_cls", "twophase", "weak_identity_map", "autocommit"]
+
+ kwargs_ce = dict((k, v) for k,v in kwargs.items() if (k not in session_argname and k != "create_all"))
+
+ engine = create_engine(*args, **kwargs_ce)
+ metadata = Base.metadata
+
+ kwargs_sm = {'bind': engine}
+
+ kwargs_sm.update([(argname, kwargs[argname]) for argname in session_argname if argname in kwargs])
- engine = create_engine(*args, **kwargs)
- metadata = Base.metadata
-
- if create_all:
+ Session = sessionmaker(**kwargs_sm)
+ #set model version
+
+ if kwargs.get('create_all', True):
metadata.create_all(engine)
+ session = Session()
+ try:
+ add_model_version(session)
+ finally:
+ session.close()
- return (engine, metadata)
+ return (engine, metadata, Session)