Rev 567 | Rev 612 | 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")using_options(shortnames=True)class SocialHandle(Entity):id = Field(Integer, primary_key=True, autoincrement=True)handle = Field(String(100))service = ManyToOne("SocialService")user = ManyToOne("User")using_options(shortnames=True)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)name = Field(String(100))phone = Field(String(20))user = ManyToOne("User")using_options(shortnames=True)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)user = ManyToOne("User")using_options(shortnames=True)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")using_options(shortnames=True)class IPMap(Entity):id = Field(Integer, primary_key=True, autoincrement=True)timestamp = Field(DateTime)ip = Field(String(30))user_state = ManyToOne("UserState")using_options(shortnames=True)class UserState(Entity):id = Field(Integer, primary_key=True, autoincrement=True)last_login = Field(DateTime)last_logout = Field(DateTime)email_verification_sent_on = Field(DateTime)sms_verification_sent_on = Field(DateTime)is_email_verified = Field(Boolean)is_sms_verified =Field(Boolean)active_since = Field(DateTime)account_status = Field(Integer)ip_list = OneToMany("IPMap")user = ManyToOne("User")using_options(shortnames=True)class User(Entity):id = Field(Integer, primary_key=True, autoincrement=True)email = Field(String(100))password = Field(String(50))name = Field(String(150))default_address_id = Field(Integer)communication_email = Field(String(100))active_cart_id = Field(Integer)jsession_id = Field(String(64))is_anonymous = Field(Boolean)date_of_birth = Field(String(20))sex = Field(Integer)mobile_number = Field(String(20))addresses = OneToMany("Address")social_handles = OneToMany("SocialHandle")using_options(shortnames=True)class Line(Entity):id = Field(Integer, primary_key=True, autoincrement=True)item_id = Field(Integer)quantity = Field(Float)line_status = Field(Integer)created_on = Field(DateTime)updated_on = Field(DateTime)cart = ManyToOne("Cart")using_options(shortnames=True)class Cart(Entity):id = Field(Integer, primary_key=True, autoincrement=True)user_id = Field(Integer)cart_status = Field(Integer)address_id = Field(Integer)estimate = Field(Integer)committed_on = Field(DateTime)created_on = Field(DateTime)updated_on = Field(DateTime)lines = OneToMany("Line")using_options(shortnames=True)#===============================================================================# Different entities for the Widget service#===============================================================================class Widget(Entity):id = Field(Integer, primary_key=True, autoincrement=True)type = Field(Integer)customer_id = Field(Integer)name = Field(String(100))enabled = Field(Integer)session_id = Field(Integer)items = OneToMany("WidgetItem")using_options(shortnames=True)class WidgetItem(Entity):id = Field(Integer, primary_key=True, autoincrement=True)added_on = Field(DateTime)item = ManyToOne("Item")widget = ManyToOne("Widget")using_options(shortnames=True)class Item(Entity):id = Field(Integer, primary_key=True, autoincrement=True)item_id = Field(Integer)snippet = Field(Integer)enabled = Field(Integer)widget_items=OneToMany("WidgetItem")using_options(shortnames=True)class Ratings(Entity):id = Field(Integer, primary_key=True, autoincrement=True)item_id = Field(Integer)type = Field(Integer)rating = Field(Float)using_options(shortnames=True)class UserRatings(Entity):id = Field(Integer, primary_key=True, autoincrement=True)item_id = Field(Integer)rating = Field(Float)user_id = Field(Integer)using_options(shortnames=True)def initialize():metadata.bind = "sqlite:///user.sqlite" #need to read it from configserver.metadata.bind.echo = Truesetup_all(True)if __name__=="__main__":initialize()