server/lib/iri_tweet/models.py
author veltr
Sat, 25 Feb 2012 00:45:20 +0100
changeset 45 49c818cf7c3a
parent 1 e0dbcf98c13e
permissions -rw-r--r--
z-index
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
     1
from sqlalchemy import (Boolean, Column, Enum, BigInteger, Integer, String, 
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
     2
    ForeignKey, DateTime, create_engine)
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
     3
from sqlalchemy.ext.declarative import declarative_base
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
     4
from sqlalchemy.orm import relationship, sessionmaker
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
     5
import anyjson
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
     6
import datetime
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
     7
import email.utils
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
     8
import iri_tweet
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
     9
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
    10
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
    11
Base = declarative_base()
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
    12
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
    13
APPLICATION_NAME = "IRI_TWITTER" 
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
    14
CONSUMER_KEY = "54ThDZhpEjokcMgHJOMnQA"
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
    15
CONSUMER_SECRET = "wUoL9UL2T87tfc97R0Dff2EaqRzpJ5XGdmaN2XK3udA"
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
    16
ACCESS_TOKEN_KEY = None
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
    17
ACCESS_TOKEN_SECRET = None
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
    18
#ACCESS_TOKEN_KEY= "47312923-LiNTtz0I18YXMVIrFeTuhmH7bOvYsK6p3Ln2Dc"
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
    19
#ACCESS_TOKEN_SECRET = "r3LoXVcjImNAElUpWqTu2SG2xCdWFHkva7xeQoncA"
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
    20
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
    21
def adapt_date(date_str):
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
    22
    ts = email.utils.parsedate_tz(date_str) #@UndefinedVariable
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
    23
    return datetime.datetime(*ts[0:7])
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
    24
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
    25
def adapt_json(obj):
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
    26
    if obj is None:
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
    27
        return None
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
    28
    else:
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
    29
        return anyjson.serialize(obj)
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
    30
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
    31
class TweetMeta(type(Base)):
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
    32
            
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
    33
    def __init__(cls, name, bases, ns): #@NoSelf
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
    34
        def init(self, **kwargs):
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
    35
            for key, value in kwargs.items():
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
    36
                if hasattr(self, key):
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
    37
                    setattr(self, key, value)
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
    38
            super(cls, self).__init__()
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
    39
        setattr(cls, '__init__', init)
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
    40
        super(TweetMeta, cls).__init__(name, bases, ns)
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
    41
    
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
    42
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
    43
class ProcessEvent(Base):
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
    44
    __metaclass__ = TweetMeta
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
    45
    __tablename__ = "tweet_process_event"
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
    46
    id = Column(Integer, primary_key=True, autoincrement=True)
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
    47
    ts = Column(DateTime, default=datetime.datetime.utcnow, index=True)
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
    48
    type = Column(Enum("start","pid","shutdown","error", "start_worker", "stop_worker", "model_version", "application_name", "application_version", name="process_event_type_enum"), nullable=False)
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
    49
    args = Column(String)
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
    50
    
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
    51
class EntityType(Base):
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
    52
    __metaclass__ = TweetMeta
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
    53
    __tablename__ = "tweet_entity_type"
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
    54
    id = Column(Integer, primary_key=True, autoincrement=True)
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
    55
    label = Column(String)
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
    56
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
    57
class Entity(Base):
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
    58
    __metaclass__ = TweetMeta
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
    59
    __tablename__ = "tweet_entity"
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
    60
    id = Column(Integer, primary_key=True)
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
    61
    tweet_id = Column(BigInteger, ForeignKey('tweet_tweet.id'))
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
    62
    type = Column(String)
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
    63
    entity_type_id = Column(Integer, ForeignKey('tweet_entity_type.id'), nullable=False)
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
    64
    entity_type = relationship("EntityType", backref="entities")
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
    65
    indice_start = Column(Integer)
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
    66
    indice_end = Column(Integer)
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
    67
    source = Column(String)
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
    68
    __mapper_args__ = {'polymorphic_on': type, 'polymorphic_identity': 'entity_entity', 'with_polymorphic':'*'}
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
    69
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
    70
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
    71
class TweetSource(Base):
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
    72
    __metaclass__ = TweetMeta
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
    73
    __tablename__ = 'tweet_tweet_source'
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
    74
    id = Column(Integer, primary_key=True, autoincrement=True)
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
    75
    original_json = Column(String)
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
    76
    received_at = Column(DateTime, default=datetime.datetime.utcnow, index=True)
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
    77
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
    78
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
    79
class TweetLog(Base):
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
    80
        
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
    81
    TWEET_STATUS = {
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
    82
        'OK' : 1,
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
    83
        'ERROR' : 2,
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
    84
        'NOT_TWEET': 3,
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
    85
    }
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
    86
    __metaclass__ = TweetMeta
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
    87
    
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
    88
    __tablename__ = 'tweet_tweet_log'
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
    89
    id = Column(Integer, primary_key=True, autoincrement=True)
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
    90
    ts = Column(DateTime, default=datetime.datetime.utcnow, index=True)
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
    91
    tweet_source_id = Column(Integer, ForeignKey('tweet_tweet_source.id'))
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
    92
    tweet_source = relationship("TweetSource", backref="logs")
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
    93
    status = Column(Integer)
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
    94
    error = Column(String)
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
    95
    error_stack = Column(String)
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
    96
 
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
    97
    
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
    98
class Tweet(Base):
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
    99
    __metaclass__ = TweetMeta
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   100
    __tablename__ = 'tweet_tweet'
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   101
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   102
    id = Column(BigInteger, primary_key=True, autoincrement=False)
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   103
    id_str = Column(String)
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   104
    contributors = Column(String)
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   105
    coordinates = Column(String) 
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   106
    created_at = Column(DateTime, index=True)
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   107
    favorited = Column(Boolean)
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   108
    geo = Column(String)
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   109
    in_reply_to_screen_name = Column(String)
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   110
    in_reply_to_status_id = Column(BigInteger) 
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   111
    in_reply_to_status_id_str = Column(String)
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   112
    in_reply_to_user_id = Column(BigInteger)
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   113
    in_reply_to_user_id_str = Column(String)
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   114
    place = Column(String)
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   115
    retweet_count = Column(String)
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   116
    retweeted = Column(Boolean)
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   117
    source = Column(String)
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   118
    text = Column(String)
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   119
    truncated = Column(Boolean)
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   120
    user_id = Column(Integer, ForeignKey('tweet_user.id'))
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   121
    user = relationship("User", backref="tweets")
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   122
    tweet_source_id = Column(Integer, ForeignKey('tweet_tweet_source.id'))
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   123
    tweet_source = relationship("TweetSource", backref="tweet")
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   124
    entity_list = relationship(Entity, backref='tweet')
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   125
    received_at = Column(DateTime, default=datetime.datetime.utcnow, index=True)
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   126
        
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   127
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   128
class UserMessage(Base):
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   129
    __metaclass__ = TweetMeta
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   130
    __tablename__ = "tweet_user_message"
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   131
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   132
    id = Column(Integer, primary_key=True)
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   133
    user_id = Column(Integer, ForeignKey('tweet_user.id'))
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   134
    user = relationship("User", backref="messages")
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   135
    created_at = Column(DateTime, default=datetime.datetime.utcnow)
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   136
    message_id = Column(Integer, ForeignKey('tweet_message.id'))
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   137
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   138
class Message(Base):
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   139
    __metaclass__ = TweetMeta
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   140
    __tablename__ = "tweet_message"
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   141
    
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   142
    id = Column(Integer, primary_key=True)
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   143
    created_at = Column(DateTime, default=datetime.datetime.utcnow)
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   144
    text = Column(String)
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   145
    users = relationship(UserMessage, backref='message')
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   146
        
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   147
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   148
class User(Base):
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   149
    __metaclass__ = TweetMeta
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   150
    __tablename__ = "tweet_user"
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   151
    
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   152
    id = Column(BigInteger, primary_key=True, autoincrement=False)
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   153
    id_str = Column(String)
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   154
    contributors_enabled = Column(Boolean)
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   155
    created_at = Column(DateTime)
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   156
    description = Column(String)
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   157
    favourites_count = Column(Integer)
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   158
    follow_request_sent = Column(Boolean)
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   159
    followers_count = Column(Integer)
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   160
    following = Column(String)
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   161
    friends_count = Column(Integer)
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   162
    geo_enabled = Column(Boolean)
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   163
    is_translator = Column(Boolean)
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   164
    lang = Column(String)
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   165
    listed_count = Column(Integer)
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   166
    location = Column(String)
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   167
    name = Column(String)
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   168
    notifications = Column(String)
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   169
    profile_background_color = Column(String)
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   170
    profile_background_image_url = Column(String)
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   171
    profile_background_tile = Column(Boolean)
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   172
    profile_image_url = Column(String)
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   173
    profile_image_url_https = Column(String)
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   174
    profile_link_color = Column(String)
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   175
    profile_sidebar_border_color = Column(String)
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   176
    profile_sidebar_fill_color = Column(String)
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   177
    profile_text_color = Column(String)
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   178
    default_profile_image = Column(String)
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   179
    profile_use_background_image = Column(Boolean)
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   180
    protected = Column(Boolean)
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   181
    screen_name = Column(String, index=True)
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   182
    show_all_inline_media = Column(Boolean)
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   183
    statuses_count = Column(Integer)
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   184
    time_zone = Column(String)
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   185
    url = Column(String)
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   186
    utc_offset = Column(Integer)
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   187
    verified = Column(Boolean)
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   188
    
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   189
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   190
class Hashtag(Base):
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   191
    __metaclass__ = TweetMeta
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   192
    __tablename__ = "tweet_hashtag"
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   193
    id = Column(Integer, primary_key=True)
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   194
    text = Column(String, unique=True, index=True)
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   195
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   196
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   197
class Url(Base):
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   198
    __metaclass__ = TweetMeta
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   199
    __tablename__ = "tweet_url"
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   200
    id = Column(Integer, primary_key=True)
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   201
    url = Column(String, unique=True)
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   202
    expanded_url = Column(String)
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   203
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   204
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   205
class MediaType(Base):
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   206
    __metaclass__ = TweetMeta
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   207
    __tablename__ = "tweet_media_type"
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   208
    id = Column(Integer, primary_key=True, autoincrement=True)
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   209
    label = Column(String, unique=True, index=True)
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   210
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   211
    
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   212
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   213
class Media(Base):
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   214
    __metaclass__ = TweetMeta
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   215
    __tablename__ = "tweet_media"
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   216
    id = Column(BigInteger, primary_key=True, autoincrement=False)
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   217
    id_str = Column(String, unique=True)
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   218
    media_url = Column(String, unique=True)
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   219
    media_url_https = Column(String, unique=True)
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   220
    url = Column(String)
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   221
    display_url = Column(String)
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   222
    expanded_url = Column(String)
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   223
    sizes = Column(String)
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   224
    type_id = Column(Integer, ForeignKey("tweet_media_type.id"))
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   225
    type = relationship(MediaType, primaryjoin=type_id == MediaType.id)
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   226
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   227
    
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   228
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   229
class EntityHashtag(Entity):
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   230
    __tablename__ = "tweet_entity_hashtag"
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   231
    __mapper_args__ = {'polymorphic_identity': 'entity_hashtag'}
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   232
    id = Column(Integer, ForeignKey('tweet_entity.id'), primary_key=True)
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   233
    hashtag_id = Column(Integer, ForeignKey("tweet_hashtag.id"))
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   234
    hashtag = relationship(Hashtag, primaryjoin=hashtag_id == Hashtag.id)
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   235
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   236
    
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   237
class EntityUrl(Entity):
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   238
    __tablename__ = "tweet_entity_url"
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   239
    __mapper_args__ = {'polymorphic_identity': 'entity_url'}
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   240
    id = Column(Integer, ForeignKey('tweet_entity.id'), primary_key=True)
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   241
    url_id = Column(Integer, ForeignKey("tweet_url.id"))
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   242
    url = relationship(Url, primaryjoin=url_id == Url.id)
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   243
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   244
class EntityUser(Entity):
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   245
    __tablename__ = "tweet_entity_user"
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   246
    __mapper_args__ = {'polymorphic_identity': 'entity_user'}
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   247
    id = Column(Integer, ForeignKey('tweet_entity.id'), primary_key=True)
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   248
    user_id = Column(BigInteger, ForeignKey('tweet_user.id'))
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   249
    user = relationship(User, primaryjoin=(user_id == User.id))
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   250
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   251
                
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   252
class EntityMedia(Entity):
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   253
    __tablename__ = "tweet_entity_media"
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   254
    __mapper_args__ = {'polymorphic_identity': 'entity_media'}
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   255
    id = Column(Integer, ForeignKey('tweet_entity.id'), primary_key=True)
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   256
    media_id = Column(BigInteger, ForeignKey('tweet_media.id'))
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   257
    media = relationship(Media, primaryjoin=(media_id == Media.id))
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   258
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   259
def add_model_version(session, must_commit=True):
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   260
    pe = ProcessEvent(args=iri_tweet.get_version(), type="model_version")
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   261
    session.add(pe)
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   262
    if must_commit:
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   263
        session.commit()
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   264
                
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   265
def setup_database(*args, **kwargs):
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   266
    
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   267
    session_argname = [ 'autoflush','binds', "class_", "_enable_transaction_accounting","expire_on_commit", "extension", "query_cls", "twophase", "weak_identity_map", "autocommit"]
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   268
    
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   269
    kwargs_ce = dict((k, v) for k,v in kwargs.items() if (k not in session_argname and k != "create_all"))
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   270
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   271
    engine = create_engine(*args, **kwargs_ce)
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   272
    metadata = Base.metadata        
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   273
                
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   274
    kwargs_sm = {'bind': engine}
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   275
    
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   276
    kwargs_sm.update([(argname, kwargs[argname]) for argname in session_argname if argname in kwargs])
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   277
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   278
    Session = sessionmaker(**kwargs_sm)
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   279
    #set model version
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   280
    
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   281
    if kwargs.get('create_all', True):
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   282
        metadata.create_all(engine)
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   283
        session = Session()
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   284
        try:
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   285
            add_model_version(session)
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   286
        finally:
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   287
            session.close()
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   288
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   289
    return (engine, metadata, Session)
e0dbcf98c13e Added server code
veltr
parents:
diff changeset
   290