Rev 746 | Rev 1249 | 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 datetimeimport elixirclass SocialService(Entity):id = Field(Integer, primary_key=True, autoincrement=True)name = Field(String(100))handles = OneToMany("SocialHandle")using_options(shortnames=True)using_table_options(mysql_engine="InnoDB")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)using_table_options(mysql_engine="InnoDB")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)using_table_options(mysql_engine="InnoDB")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)using_table_options(mysql_engine="InnoDB")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)using_table_options(mysql_engine="InnoDB")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)using_table_options(mysql_engine="InnoDB")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)using_table_options(mysql_engine="InnoDB")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)using_table_options(mysql_engine="InnoDB")class Line(Entity):cart = ManyToOne("Cart", primary_key=True)item_id = Field(Integer, primary_key=True, autoincrement=False)quantity = Field(Float)line_status = Field(Integer)estimate = Field(Integer)created_on = Field(DateTime)updated_on = Field(DateTime)using_options(shortnames=True)using_table_options(mysql_engine="InnoDB")class Cart(Entity):id = Field(Integer, primary_key=True, autoincrement=True)user_id = Field(Integer)cart_status = Field(Integer)address_id = Field(Integer)checked_out_on = Field(DateTime)created_on = Field(DateTime)updated_on = Field(DateTime)lines = OneToMany("Line")using_options(shortnames=True)using_table_options(mysql_engine="InnoDB")#===============================================================================# Different entities for the Widget service#===============================================================================class Widget(Entity):id = Field(Integer, primary_key=True, autoincrement=True)type = Field(Integer)user_id = Field(Integer)name = Field(String(100))enabled = Field(Boolean)items = OneToMany("WidgetItem")using_options(shortnames=True)using_table_options(mysql_engine="InnoDB")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)using_table_options(mysql_engine="InnoDB")class Item(Entity):id = Field(Integer, primary_key=True, autoincrement=True)item_id = Field(Integer)enabled = Field(Boolean)widget_items=OneToMany("WidgetItem")using_options(shortnames=True)using_table_options(mysql_engine="InnoDB")def initialize():#metadata.bind = "sqlite:///user.sqlite" #need to read it from configserver.metadata.bind = 'mysql://root:shop2020@localhost/user'metadata.bind.echo = Truesetup_all(True)if __name__=="__main__":initialize()'''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)using_table_options(mysql_engine="InnoDB")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)using_table_options(mysql_engine="InnoDB")'''