Subversion Repositories SmartDukaan

Rev

Rev 414 | Rev 509 | Go to most recent revision | Details | Compare with Previous | 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)
414 ashish 37
    name = Field(String(100))
38
    phone = Field(String(20))
130 ashish 39
    primary_info = ManyToOne("PrimaryInfo")
40
 
41
class Phone(Entity):
42
    id = Field(Integer, primary_key=True, autoincrement=True)
43
    country_code = Field(String(5))
44
    area_code = Field(String(10))
45
    number = Field(String(20))
46
    extension = Field(String(10))
47
    type = Field(Integer)
48
    enabled = Field(Boolean)
49
    primary_info = ManyToOne("PrimaryInfo")
50
 
51
class Date(Entity):
52
    id = Field(Integer, primary_key=True, autoincrement=True)
53
    date = Field(Integer)
54
    month = Field(Integer)
55
    year = Field(Integer)
56
    type = Field(Integer)
57
    primary_info = ManyToOne("PrimaryInfo")
58
 
59
class IPMap(Entity):
60
    id = Field(Integer, primary_key=True, autoincrement=True)
61
    timestamp = Field(DateTime)
62
    ip = Field(String(30))
63
    user_info = ManyToOne("State")
64
 
65
class PrimaryInfo(Entity):
66
    id = Field(Integer, primary_key=True, autoincrement=True)
67
    title = Field(String(50))
68
    first_name = Field(String(50))
69
    middle_name = Field(String(50))
70
    last_name = Field(String(50))
71
    occupation = Field(String(50))
72
    hint_question = Field(String(200))
73
    hint_answer = Field(String(50))
74
    picture_id = Field(String(100))
75
    email = Field(String(100))
76
    user_handle = Field(String(100))
77
    password = Field(String(50))
78
    shipment_option = Field(Integer)
504 rajveer 79
    default_address_id = Field(Integer)
80
    communication_email = Field(String(100))
130 ashish 81
    phones = OneToMany("Phone")
82
    dates = OneToMany("Date")
83
    addresses = OneToMany("Address")
84
    social_handles = OneToMany("SocialHandle")
85
    user = ManyToOne("User")
504 rajveer 86
 
130 ashish 87
class State(Entity):
88
    id = Field(Integer, primary_key=True, autoincrement=True)
89
    is_enrolled = Field(Boolean)
90
    is_email_verified = Field(Boolean)
91
    is_sms_verified =Field(Boolean)
92
    last_login_timestamp = Field(DateTime)
93
    last_logout = Field(DateTime)
94
    email_verification_sent_on = Field(DateTime)
95
    sms_verification_sent_on = Field(DateTime)
96
    active_since = Field(DateTime)
97
    current_shopping_cart = Field(Integer)
98
    is_logged_in = Field(Boolean)
99
    account_status = Field(Integer)
100
    ip_list = OneToMany("IPMap")
101
    user = ManyToOne("User")
102
 
103
class InternalInfo(Entity):
104
    id = Field(Integer, primary_key=True, autoincrement=True)
105
    geo_zone = Field(Integer)
106
    shipment_zone = Field(Integer)
107
    tax_zone = Field(Integer)
108
    rank_score = Field(Float)
109
    user = ManyToOne("User")
110
 
111
class User(Entity):
112
    id = Field(Integer, primary_key=True, autoincrement=True)
413 rajveer 113
    session_id = Field(Integer, autoincrement=True)
130 ashish 114
    primary_info = OneToOne("PrimaryInfo")
115
    internal_info = OneToOne("InternalInfo")
116
    state = OneToOne("State")   
117
 
118
def initialize():
119
    metadata.bind = "sqlite:///user.sqlite" #need to read it from configserver.
120
    metadata.bind.echo = True
121
    setup_all(True)
122
 
123
if __name__=="__main__":
124
    initialize()