Subversion Repositories SmartDukaan

Rev

Rev 413 | Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
130 ashish 1
'''
2
Created on 28-Apr-2010
3
 
4
@author: ashish
5
'''
6
 
7
from elixir import *
8
from elixir.entity import Entity
9
from elixir.fields import Field
10
from sqlalchemy.types import Integer
11
from elixir.relationships import OneToMany, ManyToOne
12
import datetime
13
 
14
class SocialService(Entity):
15
    id = Field(Integer, primary_key=True, autoincrement=True)
16
    name = Field(String(100))
17
    handles = OneToMany("SocialHandle")
18
 
19
class SocialHandle(Entity):
20
    id = Field(Integer, primary_key=True, autoincrement=True)
21
    handle = Field(String(100))
22
    service = ManyToOne("SocialService")
23
    primary_info = ManyToOne("PrimaryInfo")
24
 
25
class Address(Entity):
26
    id = Field(Integer, primary_key=True, autoincrement=True)
27
    line_1 = Field(String(100))
28
    line_2 = Field(String(100))
29
    landmark = Field(String(100))
30
    city = Field(String(100))
31
    state = Field(String(100))
32
    pin = Field(String(10))
33
    country = Field(String(100))
34
    enabled = Field(Boolean)
35
    type = Field(Integer)
36
    added_on = Field(DateTime)
37
    primary_info = ManyToOne("PrimaryInfo")
38
 
39
class Phone(Entity):
40
    id = Field(Integer, primary_key=True, autoincrement=True)
41
    country_code = Field(String(5))
42
    area_code = Field(String(10))
43
    number = Field(String(20))
44
    extension = Field(String(10))
45
    type = Field(Integer)
46
    enabled = Field(Boolean)
47
    primary_info = ManyToOne("PrimaryInfo")
48
 
49
class Date(Entity):
50
    id = Field(Integer, primary_key=True, autoincrement=True)
51
    date = Field(Integer)
52
    month = Field(Integer)
53
    year = Field(Integer)
54
    type = Field(Integer)
55
    primary_info = ManyToOne("PrimaryInfo")
56
 
57
class IPMap(Entity):
58
    id = Field(Integer, primary_key=True, autoincrement=True)
59
    timestamp = Field(DateTime)
60
    ip = Field(String(30))
61
    user_info = ManyToOne("State")
62
 
63
class PrimaryInfo(Entity):
64
    id = Field(Integer, primary_key=True, autoincrement=True)
65
    title = Field(String(50))
66
    first_name = Field(String(50))
67
    middle_name = Field(String(50))
68
    last_name = Field(String(50))
69
    occupation = Field(String(50))
70
    hint_question = Field(String(200))
71
    hint_answer = Field(String(50))
72
    picture_id = Field(String(100))
73
    email = Field(String(100))
74
    user_handle = Field(String(100))
75
    password = Field(String(50))
76
    shipment_option = Field(Integer)
77
    phones = OneToMany("Phone")
78
    dates = OneToMany("Date")
79
    addresses = OneToMany("Address")
80
    social_handles = OneToMany("SocialHandle")
81
    user = ManyToOne("User")
82
 
83
class State(Entity):
84
    id = Field(Integer, primary_key=True, autoincrement=True)
85
    is_enrolled = Field(Boolean)
86
    is_email_verified = Field(Boolean)
87
    is_sms_verified =Field(Boolean)
88
    last_login_timestamp = Field(DateTime)
89
    last_logout = Field(DateTime)
90
    email_verification_sent_on = Field(DateTime)
91
    sms_verification_sent_on = Field(DateTime)
92
    active_since = Field(DateTime)
93
    current_shopping_cart = Field(Integer)
94
    is_logged_in = Field(Boolean)
95
    account_status = Field(Integer)
96
    ip_list = OneToMany("IPMap")
97
    user = ManyToOne("User")
98
 
99
class InternalInfo(Entity):
100
    id = Field(Integer, primary_key=True, autoincrement=True)
101
    geo_zone = Field(Integer)
102
    shipment_zone = Field(Integer)
103
    tax_zone = Field(Integer)
104
    rank_score = Field(Float)
105
    user = ManyToOne("User")
106
 
107
class User(Entity):
108
    id = Field(Integer, primary_key=True, autoincrement=True)
109
    session_id = Field(Integer)
110
    primary_info = OneToOne("PrimaryInfo")
111
    internal_info = OneToOne("InternalInfo")
112
    state = OneToOne("State")   
113
 
114
def initialize():
115
    metadata.bind = "sqlite:///user.sqlite" #need to read it from configserver.
116
    metadata.bind.echo = True
117
    setup_all(True)
118
 
119
if __name__=="__main__":
120
    initialize()