--- a/script/lib/iri_tweet/models.py Thu Aug 25 02:22:19 2011 +0200
+++ b/script/lib/iri_tweet/models.py Thu Aug 25 18:23:53 2011 +0200
@@ -27,27 +27,34 @@
else:
return anyjson.serialize(obj)
-class TweetBase(object):
-
- def __init__(self, **kwargs):
- for key, value in kwargs.items():
- if hasattr(self, key):
- setattr(self, key, value)
+class TweetMeta(type(Base)):
+
+ def __init__(cls, name, bases, ns): #@NoSelf
+ def init(self, **kwargs):
+ for key, value in kwargs.items():
+ if hasattr(self, key):
+ setattr(self, key, value)
+ super(cls, self).__init__()
+ setattr(cls, '__init__', init)
+ super(TweetMeta, cls).__init__(name, bases, ns)
-class ProcessEvent(Base, TweetBase):
+class ProcessEvent(Base):
+ __metaclass__ = TweetMeta
__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", name="process_event_type_enum"), nullable=False)
+ 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)
args = Column(String)
-class EntityType(Base, TweetBase):
+class EntityType(Base):
+ __metaclass__ = TweetMeta
__tablename__ = "tweet_entity_type"
id = Column(Integer, primary_key=True, autoincrement=True)
label = Column(String)
-class Entity(Base, TweetBase):
+class Entity(Base):
+ __metaclass__ = TweetMeta
__tablename__ = "tweet_entity"
id = Column(Integer, primary_key=True)
tweet_id = Column(BigInteger, ForeignKey('tweet_tweet.id'))
@@ -60,24 +67,26 @@
__mapper_args__ = {'polymorphic_on': type, 'polymorphic_identity': 'entity_entity', 'with_polymorphic':'*'}
-class TweetSource(Base, TweetBase):
+class TweetSource(Base):
+ __metaclass__ = TweetMeta
__tablename__ = 'tweet_tweet_source'
id = Column(Integer, primary_key=True, autoincrement=True)
original_json = Column(String)
- received_at = Column(DateTime, default=datetime.datetime.utcnow(), index=True)
+ received_at = Column(DateTime, default=datetime.datetime.utcnow, index=True)
-class TweetLog(Base, TweetBase):
-
+class TweetLog(Base):
+
TWEET_STATUS = {
'OK' : 1,
'ERROR' : 2,
'NOT_TWEET': 3,
}
+ __metaclass__ = TweetMeta
__tablename__ = 'tweet_tweet_log'
id = Column(Integer, primary_key=True, autoincrement=True)
- ts = Column(DateTime, default=datetime.datetime.utcnow(), index=True)
+ ts = Column(DateTime, default=datetime.datetime.utcnow, index=True)
tweet_source_id = Column(Integer, ForeignKey('tweet_tweet_source.id'))
tweet_source = relationship("TweetSource", backref="logs")
status = Column(Integer)
@@ -85,7 +94,8 @@
error_stack = Column(String)
-class Tweet(Base, TweetBase):
+class Tweet(Base):
+ __metaclass__ = TweetMeta
__tablename__ = 'tweet_tweet'
id = Column(BigInteger, primary_key=True, autoincrement=False)
@@ -111,28 +121,31 @@
tweet_source_id = Column(Integer, ForeignKey('tweet_tweet_source.id'))
tweet_source = relationship("TweetSource", backref="tweet")
entity_list = relationship(Entity, backref='tweet')
- received_at = Column(DateTime, default=datetime.datetime.utcnow(), index=True)
+ received_at = Column(DateTime, default=datetime.datetime.utcnow, index=True)
-class UserMessage(Base, TweetBase):
+class UserMessage(Base):
+ __metaclass__ = TweetMeta
__tablename__ = "tweet_user_message"
id = Column(Integer, primary_key=True)
user_id = Column(Integer, ForeignKey('tweet_user.id'))
user = relationship("User", backref="messages")
- created_at = Column(DateTime, default=datetime.datetime.utcnow())
+ created_at = Column(DateTime, default=datetime.datetime.utcnow)
message_id = Column(Integer, ForeignKey('tweet_message.id'))
-class Message(Base, TweetBase):
+class Message(Base):
+ __metaclass__ = TweetMeta
__tablename__ = "tweet_message"
id = Column(Integer, primary_key=True)
- created_at = Column(DateTime, default=datetime.datetime.utcnow())
+ created_at = Column(DateTime, default=datetime.datetime.utcnow)
text = Column(String)
users = relationship(UserMessage, backref='message')
-class User(Base, TweetBase):
+class User(Base):
+ __metaclass__ = TweetMeta
__tablename__ = "tweet_user"
id = Column(BigInteger, primary_key=True, autoincrement=False)
@@ -156,10 +169,12 @@
profile_background_image_url = Column(String)
profile_background_tile = Column(Boolean)
profile_image_url = Column(String)
+ profile_image_url_https = Column(String)
profile_link_color = Column(String)
profile_sidebar_border_color = Column(String)
profile_sidebar_fill_color = Column(String)
profile_text_color = Column(String)
+ default_profile_image = Column(String)
profile_use_background_image = Column(Boolean)
protected = Column(Boolean)
screen_name = Column(String, index=True)
@@ -171,27 +186,31 @@
verified = Column(Boolean)
-class Hashtag(Base, TweetBase):
+class Hashtag(Base):
+ __metaclass__ = TweetMeta
__tablename__ = "tweet_hashtag"
id = Column(Integer, primary_key=True)
text = Column(String, unique=True, index=True)
-class Url(Base, TweetBase):
+class Url(Base):
+ __metaclass__ = TweetMeta
__tablename__ = "tweet_url"
id = Column(Integer, primary_key=True)
url = Column(String, unique=True)
expanded_url = Column(String)
-class MediaType(Base, TweetBase):
+class MediaType(Base):
+ __metaclass__ = TweetMeta
__tablename__ = "tweet_media_type"
id = Column(Integer, primary_key=True, autoincrement=True)
label = Column(String, unique=True, index=True)
-class Media(Base, TweetBase):
+class Media(Base):
+ __metaclass__ = TweetMeta
__tablename__ = "tweet_media"
id = Column(BigInteger, primary_key=True, autoincrement=False)
id_str = Column(String, unique=True)