Rev 413 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
'''Created on 28-Apr-2010@author: ashish'''from elixir import *from elixir.entity import Entityfrom elixir.fields import Fieldfrom sqlalchemy.types import Integerfrom elixir.relationships import OneToMany, ManyToOneimport datetimeclass SocialService(Entity):id = Field(Integer, primary_key=True, autoincrement=True)name = Field(String(100))handles = OneToMany("SocialHandle")class SocialHandle(Entity):id = Field(Integer, primary_key=True, autoincrement=True)handle = Field(String(100))service = ManyToOne("SocialService")primary_info = ManyToOne("PrimaryInfo")class Address(Entity):id = Field(Integer, primary_key=True, autoincrement=True)line_1 = Field(String(100))line_2 = Field(String(100))landmark = Field(String(100))city = Field(String(100))state = Field(String(100))pin = Field(String(10))country = Field(String(100))enabled = Field(Boolean)type = Field(Integer)added_on = Field(DateTime)primary_info = ManyToOne("PrimaryInfo")class Phone(Entity):id = Field(Integer, primary_key=True, autoincrement=True)country_code = Field(String(5))area_code = Field(String(10))number = Field(String(20))extension = Field(String(10))type = Field(Integer)enabled = Field(Boolean)primary_info = ManyToOne("PrimaryInfo")class Date(Entity):id = Field(Integer, primary_key=True, autoincrement=True)date = Field(Integer)month = Field(Integer)year = Field(Integer)type = Field(Integer)primary_info = ManyToOne("PrimaryInfo")class IPMap(Entity):id = Field(Integer, primary_key=True, autoincrement=True)timestamp = Field(DateTime)ip = Field(String(30))user_info = ManyToOne("State")class PrimaryInfo(Entity):id = Field(Integer, primary_key=True, autoincrement=True)title = Field(String(50))first_name = Field(String(50))middle_name = Field(String(50))last_name = Field(String(50))occupation = Field(String(50))hint_question = Field(String(200))hint_answer = Field(String(50))picture_id = Field(String(100))email = Field(String(100))user_handle = Field(String(100))password = Field(String(50))shipment_option = Field(Integer)phones = OneToMany("Phone")dates = OneToMany("Date")addresses = OneToMany("Address")social_handles = OneToMany("SocialHandle")user = ManyToOne("User")class State(Entity):id = Field(Integer, primary_key=True, autoincrement=True)is_enrolled = Field(Boolean)is_email_verified = Field(Boolean)is_sms_verified =Field(Boolean)last_login_timestamp = Field(DateTime)last_logout = Field(DateTime)email_verification_sent_on = Field(DateTime)sms_verification_sent_on = Field(DateTime)active_since = Field(DateTime)current_shopping_cart = Field(Integer)is_logged_in = Field(Boolean)account_status = Field(Integer)ip_list = OneToMany("IPMap")user = ManyToOne("User")class InternalInfo(Entity):id = Field(Integer, primary_key=True, autoincrement=True)geo_zone = Field(Integer)shipment_zone = Field(Integer)tax_zone = Field(Integer)rank_score = Field(Float)user = ManyToOne("User")class User(Entity):id = Field(Integer, primary_key=True, autoincrement=True)session_id = Field(Integer)primary_info = OneToOne("PrimaryInfo")internal_info = OneToOne("InternalInfo")state = OneToOne("State")def initialize():metadata.bind = "sqlite:///user.sqlite" #need to read it from configserver.metadata.bind.echo = Truesetup_all(True)if __name__=="__main__":initialize()