Subversion Repositories SmartDukaan

Rev

Rev 13401 | Rev 14819 | 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
'''
12696 amit.gupta 6
from elixir import session
130 ashish 7
from shop2020.model.v1.user.impl import Dataservice
12696 amit.gupta 8
from shop2020.model.v1.user.impl.CartDataAccessors import create_cart
9
from shop2020.model.v1.user.impl.Dataservice import User, UserCommunication, \
10
    Address, Affiliate, Tracker, TrackLog, MasterAffiliate, UserWidgetItem, \
11
    FacebookUser, UserSource, PrivateDealUser, Counter
12
from shop2020.thriftpy.model.v1.user.ttypes import UserContextException, \
13
    AuthenticationException, Sex, WidgetType as WType
2981 rajveer 14
from shop2020.utils.Utils import log_entry, to_py_date
12696 amit.gupta 15
from sqlalchemy import desc, select
16
from sqlalchemy.sql import and_
12722 amit.gupta 17
from sqlalchemy.sql.expression import or_
2981 rajveer 18
import datetime
130 ashish 19
 
12696 amit.gupta 20
CounterStateMap = {"Telangana" : "TS", "Andhra Pradesh" : "AP"}
21
 
3187 rajveer 22
def initialize(dbname='user', db_hostname="localhost"):
130 ashish 23
    log_entry("initialize@DataAccessor", "Initializing data service")
3187 rajveer 24
    Dataservice.initialize(dbname, db_hostname)
557 chandransh 25
 
5326 rajveer 26
def create_anonymous_user(jsession_id):
576 chandransh 27
    user=User.get_by(jsession_id=jsession_id)
5036 rajveer 28
    #user=User.query.with_lockmode("update").filter_by(jsession_id=jsession_id)
576 chandransh 29
    if not user is None:
30
        return user
5326 rajveer 31
    cart = create_cart()
557 chandransh 32
    user = User()
33
    anonymous_str = "anonymous"
576 chandransh 34
    user.email = jsession_id + "@anonymous.com"
557 chandransh 35
    user.password = anonymous_str
36
    user.name = anonymous_str
37
    user.communication_email = jsession_id + "@anonymous.com"
38
    user.jsession_id = jsession_id
39
    user.is_anonymous = True
40
    user.sex = Sex.WONT_SAY
5326 rajveer 41
    user.active_cart = cart
3499 mandeep.dh 42
    user.trust_level = 0
5326 rajveer 43
    user.active_since = datetime.datetime.now()
2747 chandransh 44
    session.commit()
557 chandransh 45
 
46
    return user
47
 
48
def get_user_by_id(user_id):
49
    return User.get_by(id=user_id)
50
 
5326 rajveer 51
def get_user_by_cart_id(cart_id):
52
    return User.get_by(active_cart_id=cart_id)
53
 
3032 mandeep.dh 54
def get_user_by_mobile_number(mobile_number):
55
    return User.get_by(mobile_number=mobile_number)
56
 
1491 vikas 57
def get_user_by_email(email):
58
    return User.get_by(email=email)
59
 
5326 rajveer 60
def create_user(user_to_add):
7825 amar.kumar 61
    user = User.get_by(email=user_to_add.email)
62
    if user:
13661 amit.gupta 63
        if user.password == user_to_add.password  or user_to_add.password == "":
64
            if user_to_add.password == "":
65
                add_private_deal_user(user.id)
7825 amar.kumar 66
            return user
67
        else:
68
            raise UserContextException(109, "User already exists with this email id.")
5326 rajveer 69
 
70
    cart = create_cart()
71
 
557 chandransh 72
    user = User()
73
    user.email = user_to_add.email
74
    user.password = user_to_add.password
13661 amit.gupta 75
    if user_to_add.password == "":
76
        add_private_deal_user(user.id)
557 chandransh 77
    user.name = user_to_add.name
78
    user.communication_email = user_to_add.communicationEmail
79
    user.jsession_id = user_to_add.jsessionId
80
    user.is_anonymous = False
81
    user.sex = user_to_add.sex
567 rajveer 82
    user.date_of_birth = user_to_add.dateOfBirth
5326 rajveer 83
    user.active_cart = cart
567 rajveer 84
    user.mobile_number = user_to_add.mobileNumber
2020 vikas 85
    user.source = user_to_add.source
2815 vikas 86
    user.source_start_time = to_py_date(user_to_add.sourceStartTime)
3499 mandeep.dh 87
    user.trust_level = 0
5326 rajveer 88
    user.active_since = datetime.datetime.now()
12696 amit.gupta 89
    addresses = []
90
    if user_to_add.addresses:
91
        address = user_to_add.addresses[0]
92
        address_to_add = Address()
93
        address_to_add.line_1 = address.line1
94
        address_to_add.line_2 = address.line2
95
        address_to_add.landmark = address.landmark
96
        address_to_add.city = address.city
97
        address_to_add.country = address.country
98
        address_to_add.state = address.state
99
        address_to_add.pin = address.pin
100
        address_to_add.type = address.type
101
        address_to_add.name = address.name
102
        address_to_add.phone = address.phone
103
        address_to_add.added_on = to_py_date(address.addedOn)
104
        address_to_add.enabled = True
105
        address_to_add.user = user
106
        address_to_add.type = 1
107
        address_to_add.added_on = datetime.datetime.now()
108
        addresses.append(address_to_add)
109
        user.addresses = addresses
8201 rajveer 110
    us = UserSource()
111
    us.user = user
112
    us.source_id = 1
113
    if user_to_add.sourceId:
114
        us.source_id = user_to_add.sourceId
7883 rajveer 115
 
116
    if user_to_add.isFacebookUser:
117
        fuser = FacebookUser()
118
        fuser.facebook_access_token = user_to_add.facebookAccessToken
119
        fuser.facebook_id = user_to_add.facebookId
120
        fuser.user = user
130 ashish 121
    session.commit()
12696 amit.gupta 122
    if user_to_add.addresses:
123
        user.default_address_id = user.addresses[0].id
124
    session.commit()
557 chandransh 125
    return user
130 ashish 126
 
127
#===============================================================================
128
# Need to provide the update apis here for relevant fields in PrimaryInfo.
129
#===============================================================================
557 chandransh 130
def update_user(user_to_update):
594 rajveer 131
    if not user_to_update.userId:
415 ashish 132
        raise UserContextException(110, "user does not exist")
594 rajveer 133
    user = get_user_by_id(user_to_update.userId)
134
    user.email = user_to_update.email
135
    user.password = user_to_update.password
136
    user.name = user_to_update.name
137
    user.communication_email = user_to_update.communicationEmail
138
    user.jsession_id = user_to_update.jsessionId
139
    user.is_anonymous = user_to_update.isAnonymous
140
    user.sex = user_to_update.sex
141
    user.date_of_birth = user_to_update.dateOfBirth
142
    user.mobile_number = user_to_update.mobileNumber
7883 rajveer 143
    if user_to_update.isFacebookUser:
7884 rajveer 144
        if user.fbusers and user.fbusers[0]:
145
            fuser = user.fbusers[0]
146
        else:
147
            fuser = FacebookUser()
7883 rajveer 148
        if user_to_update.facebookAccessToken is not None:
149
            fuser.facebook_access_token = user_to_update.facebookAccessToken
150
        if user_to_update.facebookId is not None:
151
            fuser.facebook_id = user_to_update.facebookId
152
        fuser.user = user
415 ashish 153
    session.commit()
594 rajveer 154
    return user
415 ashish 155
 
557 chandransh 156
def authenticate_user(user_handle, password):
157
    user = User.get_by(email=user_handle)
130 ashish 158
    if not user:
557 chandransh 159
        raise AuthenticationException("This email address is not registered.", 102)
130 ashish 160
 
557 chandransh 161
    if user.password == get_db_password(password):
162
        return user
130 ashish 163
    else:
164
        raise AuthenticationException("Wrong username or password", 102)
165
 
166
def user_exists(email):
413 rajveer 167
    try:
557 chandransh 168
        user = User.get_by(email=email)
169
        if user:
170
            return True
171
        else:
172
            return False
413 rajveer 173
    except:
130 ashish 174
        return False
175
 
567 rajveer 176
def add_address_for_user(address, user_id, set_default):
557 chandransh 177
    user = get_user_by_id(user_id)
766 rajveer 178
 
130 ashish 179
    if not user:
180
        raise_user_exception(user_id)
181
    if not address:
182
        raise UserContextException(103,"Address cannot be null")
183
 
184
    address_to_add = Address()
185
    address_to_add.line_1 = address.line1
186
    address_to_add.line_2 = address.line2
187
    address_to_add.landmark = address.landmark
188
    address_to_add.city = address.city
189
    address_to_add.country = address.country
190
    address_to_add.state = address.state
191
    address_to_add.pin = address.pin
192
    address_to_add.type = address.type
414 ashish 193
    address_to_add.name = address.name
194
    address_to_add.phone = address.phone
130 ashish 195
    address_to_add.added_on = to_py_date(address.addedOn)
196
    address_to_add.enabled = True
557 chandransh 197
    address_to_add.user = user
130 ashish 198
    session.commit()
509 rajveer 199
 
557 chandransh 200
    if set_default is True:
201
        user.default_address_id = address_to_add.id
567 rajveer 202
    #set default address if nothing is default    
203
    if user.default_address_id is None:
204
        user.default_address_id = address_to_add.id
205
 
557 chandransh 206
    session.commit()
513 rajveer 207
 
567 rajveer 208
    return address_to_add.id
513 rajveer 209
 
130 ashish 210
def remove_address_for_user(user_id, address_id):
211
    address = get_address(address_id) 
212
 
213
    if not address:
557 chandransh 214
        raise UserContextException(103, "Address not found")
215
    if address.user.id != user_id:
216
        raise UserContextException(104, "This address belongs to some other user")
130 ashish 217
    address.enabled = False
10714 amit.gupta 218
    user = User.get_by(id=user_id)
219
    if user.default_address_id == address_id:
220
        firstValidAddress = Address.query.filter_by(user_id = user_id, enabled=True).first()
221
        if firstValidAddress is None:
222
            user.default_address_id = None
223
        else:
224
            user.default_address_id = firstValidAddress.id
130 ashish 225
    session.commit()
226
    return True
227
 
228
def set_user_as_logged_in(user_id, time_stamp):
5326 rajveer 229
    user = User.get_by(id=user_id)
130 ashish 230
 
5326 rajveer 231
    if not user:
557 chandransh 232
        raise_user_exception(user_id)
130 ashish 233
 
234
    if not time_stamp:
5326 rajveer 235
        user.last_login = datetime.datetime.now()
557 chandransh 236
    else:
5326 rajveer 237
        user.last_login = to_py_date(time_stamp)
130 ashish 238
    session.commit()
239
    return True
240
 
557 chandransh 241
def set_user_as_logged_out(user_id, time_stamp):
5326 rajveer 242
    user = User.get_by(id=user_id)
130 ashish 243
 
5326 rajveer 244
    if not user:
130 ashish 245
        raise_user_exception(user_id)
246
 
247
    if not time_stamp:
5326 rajveer 248
        user.last_logout = datetime.datetime.now()
557 chandransh 249
    else:
5326 rajveer 250
        user.last_logout = to_py_date(time_stamp)
130 ashish 251
    session.commit()
252
    return True
253
 
557 chandransh 254
def set_default_address(user_id, address_id):
255
    user = get_user_by_id(user_id)
256
    address = Address.get_by(id=address_id)
257
    if not user:
258
        raise_user_exception(user_id)
259
    if not address:
260
        raise UserContextException(103, "Address not found")
261
    if address.user.id != user.id:
262
        raise UserContextException(104, "This address belongs to some other user")
263
 
264
    user.default_address_id = address_id 
265
    session.commit()
266
 
594 rajveer 267
def update_password(user_id, old_password, new_password):
557 chandransh 268
    user = get_user_by_id(user_id)
130 ashish 269
 
270
    if not user:
271
        raise_user_exception(user_id)
272
 
594 rajveer 273
    if user.password != old_password:
274
        return False
275
 
276
    if check_for_valid_password(new_password):
277
        user.password = get_db_password(new_password)
130 ashish 278
        session.commit()
279
        return True
280
    else:
281
        return False
1273 varun.gupt 282
 
283
 
284
def create_user_communication(user_id, email, communication_type, order_id, awb, product, subject, message):
285
 
286
    user_communication = UserCommunication()
287
    user_communication.user_id = user_id
288
    user_communication.communication_type = communication_type
1743 varun.gupt 289
 
290
    if order_id > 0:
291
        user_communication.order_id = order_id
1273 varun.gupt 292
    user_communication.airwaybill_no = awb
293
    user_communication.reply_to = email
294
    user_communication.product_name = product
295
    user_communication.subject = subject
296
    user_communication.message = message
1301 varun.gupt 297
    user_communication.communication_timestamp = datetime.datetime.now()
1273 varun.gupt 298
    session.commit()
3206 mandeep.dh 299
    return True
300
 
1583 varun.gupt 301
def get_user_communication_by_id(user_communication_id):
302
    return UserCommunication.get_by(id = user_communication_id)
303
 
304
def get_user_communication_by_user(user_communication_user_id):
1607 vikas 305
    return UserCommunication.query.filter_by(user_id = user_communication_user_id).order_by(-UserCommunication.id).all()
1583 varun.gupt 306
 
307
def get_all_user_communications():
1863 vikas 308
    return UserCommunication.query.order_by(-UserCommunication.id).all()
1583 varun.gupt 309
 
5407 amar.kumar 310
def remove_user_communication(commId):
311
    UserCommunication.query.filter_by(id=commId).delete()
312
    session.commit()
313
 
1859 vikas 314
def create_master_affiliate(name, added_on):
1845 vikas 315
    master_affiliate = MasterAffiliate()
316
    master_affiliate.name = name
1859 vikas 317
    master_affiliate.added_on = to_py_date(added_on)
1845 vikas 318
    session.commit()
319
    return master_affiliate
320
 
1899 vikas 321
def get_all_master_affiliates():
322
    return MasterAffiliate.query.all()
323
 
1845 vikas 324
def get_master_affiliate_by_id(id):
325
    return MasterAffiliate.get_by(id = id)
326
 
327
def get_master_affiliate_by_name(name):
328
    return MasterAffiliate.get_by(name = name)
329
 
1859 vikas 330
def create_affiliate(name, url, master_affiliate_id, added_on):
1845 vikas 331
    affiliate = Affiliate()
332
    affiliate.name = name
333
    if url is not None:
334
        affiliate.url = url
335
    affiliate.master_affiliate_id = master_affiliate_id
1859 vikas 336
    affiliate.added_on = to_py_date(added_on)
1845 vikas 337
    session.commit()
338
    return affiliate
339
 
340
def get_affiliate_by_id(id):
341
    return Affiliate.get_by(id = id)
342
 
343
def get_affiliate_by_name(name):
344
    return Affiliate.get_by(name = name)
345
 
346
def get_affiliates_by_master_affiliate(master_affiliate_id):
347
    return MasterAffiliate.get_by(id =  master_affiliate_id).affiliates
348
 
349
def get_tracker_by_id(id):
350
    return Tracker.get_by(id = id)
351
 
1996 vikas 352
def add_track_log(affiliate_id, user_id, event, url, data, added_on):
1845 vikas 353
    track_log = TrackLog()
1996 vikas 354
    track_log.affiliate_id = affiliate_id
1845 vikas 355
    if user_id:
356
        track_log.user_id = user_id
3378 vikas 357
    track_log.event_id = event
1845 vikas 358
    if url:
359
        track_log.url = url
360
    if data:
1859 vikas 361
        track_log.data = data
362
    track_log.added_on = to_py_date(added_on)
1845 vikas 363
    session.commit()
364
    return track_log.id
365
 
366
def get_track_log_by_id(id):
367
    return TrackLog.get_by(id = id)
368
 
3293 vikas 369
def get_track_logs_by_affiliate(affiliate_id, start_date, end_date):
370
    query = TrackLog.query
371
 
372
    if affiliate_id:
373
        query = query.filter(TrackLog.affiliate_id == affiliate_id)
374
    if start_date:
375
        query = query.filter(TrackLog.added_on >= to_py_date(start_date))
376
    if end_date:
377
        query = query.filter(TrackLog.added_on <= to_py_date(end_date))
378
    return query.all()
1845 vikas 379
 
380
def get_track_logs_by_user(user_id):
381
    return TrackLog.query.filter(TrackLog.user_id == user_id).all()
382
 
1996 vikas 383
def get_track_logs(affiliate_id, user_id, event, url):
1845 vikas 384
    query = TrackLog.query
385
 
1996 vikas 386
    if affiliate_id:
387
        query = query.filter(TrackLog.affiliate_id == affiliate_id)
388
    if user_id:
389
        query = query.filter(TrackLog.user_id == user_id)
1845 vikas 390
    if event:
391
        query = query.filter(TrackLog.event == event)
392
    if url:
393
        query = query.filter(TrackLog.url == url)
394
    return query.all()
395
 
396
 
557 chandransh 397
def get_address(address_id):
398
    address = Address.get_by(id=address_id)
399
    return address
400
 
884 rajveer 401
def forgot_password(email, password):
402
    try:
403
        user = User.get_by(email=email)
404
        if user:
405
            user.password = password
900 rajveer 406
            session.commit()
884 rajveer 407
            return True
408
        else:
409
            return False
410
    except:
411
        return False
412
 
594 rajveer 413
def get_all_addresses_for_user(userId):
2895 chandransh 414
    return Address.query.filter_by(user_id = userId, enabled=True).all()
581 rajveer 415
 
785 rajveer 416
def get_default_address_id(userId):
594 rajveer 417
    user = get_user_by_id(userId);
840 chandransh 418
    if user.default_address_id is None:
419
        return 0
594 rajveer 420
    return user.default_address_id
581 rajveer 421
 
785 rajveer 422
def get_default_pincode(user_id):
423
    user = get_user_by_id(user_id)
424
    if not user:
425
        raise_user_exception(user_id)
426
    default_address_id = user.default_address_id
427
    if default_address_id:
428
        address = Address.get_by(id=default_address_id)
429
        default_pincode = address.pin 
430
    else:
431
        default_pincode = '110001' 
432
    return default_pincode     
1596 ankur.sing 433
 
434
def get_user_count(user_type):
435
    if user_type is None:
436
        return User.query.count()
437
    else:
438
        return User.query.filter_by(is_anonymous = user_type).count()
785 rajveer 439
 
1891 ankur.sing 440
def get_users(user_type, start_date, end_date):
5326 rajveer 441
    query = session.query(User)
1891 ankur.sing 442
    if start_date != -1:
5326 rajveer 443
        query = query.filter(User.active_since >= to_py_date(start_date))
1891 ankur.sing 444
    if end_date != -1:
5326 rajveer 445
        query = query.filter(User.active_since <= to_py_date(end_date))
1891 ankur.sing 446
    if user_type is not None:
447
        query = query.filter(User.is_anonymous == user_type)
448
    return query.all()
1673 ankur.sing 449
 
130 ashish 450
#=============================================================================
451
# Helper functions 
452
#=============================================================================
453
 
454
'''
455
This function returns the password as stored in the db
456
'''    
457
def get_db_password(password):
458
    return password
459
 
460
def check_for_valid_password(password):
461
    if not password:
462
        raise UserContextException(105,"password cannot be null")
463
    return True
464
#------------------------------------------------------------------------------ 
465
 
466
#===============================================================================
467
# raises the UserContextException
468
#===============================================================================
469
def raise_user_exception(user_id):
766 rajveer 470
    raise UserContextException(101, "no such user in system %d" %(user_id))
471
 
2981 rajveer 472
def get_my_research_items(userId):
473
    query = UserWidgetItem.query.filter_by(userId=userId)
474
    query = query.filter_by(widgetId=WType.MY_RESEARCH)
475
    query = query.order_by(desc(UserWidgetItem.addedOn))
476
    widgetItems = query.all()
477
    return [widgetItem.itemId for widgetItem in widgetItems]
478
 
479
def get_browse_history_items(userId):
480
    query = UserWidgetItem.query.filter_by(userId=userId)
481
    query = query.filter_by(widgetId=WType.BROWSE_HISTORY)
482
    query = query.order_by(desc(UserWidgetItem.addedOn)).limit(10)
483
    widgetItems = query.all()
484
    return [widgetItem.itemId for widgetItem in widgetItems]
485
 
486
def update_my_research(userId, itemId):
487
    isNew = False
488
    query = UserWidgetItem.query.filter_by(userId=userId)
489
    query = query.filter_by(widgetId=WType.MY_RESEARCH)
490
    query = query.filter_by(itemId=itemId)
491
    widgetItem = query.first()
492
    if not widgetItem:
493
        isNew = True
494
        widgetItem = UserWidgetItem()
495
        widgetItem.userId = userId
496
        widgetItem.widgetId = WType.MY_RESEARCH
497
        widgetItem.itemId = itemId  
498
    widgetItem.addedOn = datetime.datetime.now()
499
    session.commit()
500
    return isNew
501
 
502
def update_browse_history(userId, itemId):
503
    query = UserWidgetItem.query.filter_by(userId=userId)
504
    query = query.filter_by(widgetId=WType.BROWSE_HISTORY)
505
    query = query.filter_by(itemId=itemId)
506
    widgetItem = query.first()
507
    if not widgetItem:
508
        widgetItem = UserWidgetItem()
509
        widgetItem.userId = userId
510
        widgetItem.widgetId = WType.BROWSE_HISTORY
511
        widgetItem.itemId = itemId
512
    widgetItem.addedOn = datetime.datetime.now()
513
    session.commit()
514
 
515
def delete_item_from_my_research(userId, itemId):
516
    query = UserWidgetItem.query.filter_by(userId=userId)
517
    query = query.filter_by(widgetId=WType.MY_RESEARCH)
518
    query = query.filter_by(itemId=itemId)
519
    widgetItem = query.first()
520
    if widgetItem:
521
        widgetItem.delete()
522
        session.commit()
523
    else:
11499 amit.gupta 524
        print "Not item in my research to delete with itemId " + str(itemId)
2981 rajveer 525
 
3499 mandeep.dh 526
def increase_trust_level(userId, trustLevelDelta):
527
    user = User.query.filter_by(id = userId).with_lockmode('update').first()
528
    user.trust_level += trustLevelDelta
529
    session.commit()
530
 
5407 amar.kumar 531
def get_trust_level(userId):
532
    user = User.query.filter_by(id = userId).first()
533
    return user.trust_level
5623 anupam.sin 534
 
535
def get_user_emails(start_date, end_date):
536
    emails = select([User.table.c.communication_email], and_(User.table.c.active_since >= start_date, User.table.c.active_since <= end_date, User.table.c.is_anonymous==0)).execute()
537
    email_addresses = []
5407 amar.kumar 538
 
5623 anupam.sin 539
    for email in emails:
540
        email_addresses.append(str(email[0]))
541
 
542
    return email_addresses
7825 amar.kumar 543
 
11679 vikram.rag 544
def is_private_deal_user(userId):
545
    try:
546
        user = PrivateDealUser.get_by(id=userId)
547
        if user is None:
548
            return False
549
        elif not user.isActive:
550
            return False
551
        else:
552
            return True
553
    except:
554
        print("Error : Unable to get details for User Id : " + str(userId))
555
        return False
556
    finally:
557
        close_session()
558
 
11890 kshitij.so 559
def add_private_deal_user(userId):
560
    user = PrivateDealUser.get_by(id=userId)
561
    if user is None:
562
        try:
563
            pd = PrivateDealUser()
564
            pd.id = userId
565
            pd.created_on = datetime.datetime.now()
566
            pd.isActive = True
13401 manish.sha 567
            pd.bulkShipmentAmountLimit=50000
11890 kshitij.so 568
            session.commit()
569
            return True
570
        except Exception as e:
571
            print "Unable to add user to private deals",e
572
            return False
573
    else:
13661 amit.gupta 574
        return True
11679 vikram.rag 575
 
11890 kshitij.so 576
def change_private_deal_user_status(userId,isActive):
577
    user = PrivateDealUser.get_by(id=userId)
578
    if user is None:
579
        return False
580
    else:
581
        user.isActive = isActive
582
        session.commit()
583
        return True
584
 
585
def get_private_deal_user(userId):
586
    return PrivateDealUser.get_by(id=userId)
587
 
12696 amit.gupta 588
def register_counter(tCounter, userId):
589
    firstValidAddress = Address.query.filter_by(user_id = userId, enabled=True).first()
590
    counter = Counter()
591
    _setCounter(counter, tCounter, firstValidAddress)
592
    pDealUser = PrivateDealUser() 
593
    pDealUser.counter = counter
594
    pDealUser.tin = tCounter.tin
595
    pDealUser.id = userId
596
    pDealUser.created_on = datetime.datetime.now()
597
    pDealUser.isActive = True
13401 manish.sha 598
    pDealUser.bulkShipmentAmountLimit=50000
12696 amit.gupta 599
    session.commit()
600
    m = {}
601
    m['counter_code'] = counter.code
602
    return m 
603
 
604
def _setCounter(counter,tCounter,address):
605
    #counter = Counter()
606
    counter.name = tCounter.name
607
    counter.ownerName = tCounter.ownerName
608
    counter.createdOn = datetime.datetime.now()
609
    counter.email = tCounter.email
610
    counter.mobile = tCounter.mobile
611
    counter.addressId = address.id
12790 amit.gupta 612
    counter.dob = tCounter.dob
12696 amit.gupta 613
    counter.tin = tCounter.tin 
614
    query = Counter.query.filter(Counter.code.like(CounterStateMap[address.state] + '%')).order_by(Counter.id.desc())
615
    lastStateCounter = query.first()
616
    if lastStateCounter:
12698 amit.gupta 617
        counter.code = CounterStateMap[address.state] + str(int(lastStateCounter.code[2:])+1).zfill(6)
12696 amit.gupta 618
    else:
12698 amit.gupta 619
        counter.code = CounterStateMap[address.state] + "000001"
12696 amit.gupta 620
    counter.striker = tCounter.striker
621
    if tCounter.alternateMobile:
622
        counter.alternateMobile = tCounter.alternateMobile
623
    if tCounter.spCounterSize:
624
        counter.spCounterSize = tCounter.spCounterSize
625
    if tCounter.fpCounterSize:
626
        counter.fpCounterSize = tCounter.fpCounterSize
12722 amit.gupta 627
 
628
def search_counter(type1, searchString):
629
    if type1=="counter_code":
630
        return Counter.query.filter(Counter.code==searchString).all()
631
    elif type1=="mobile":
632
        return Counter.query.filter(or_(Counter.alternateMobile==searchString, Counter.mobile==searchString)).all()
633
    elif type1=="email":
634
        return Counter.query.filter(Counter.email==searchString).all()
635
    elif type1=="counter_name":
636
        return Counter.query.filter(Counter.name.like("%" + searchString + "%")).all()
637
    else:
638
        return []
639
 
640
def get_all_users_by_counter(counterid):
641
    dealers = PrivateDealUser.query.filter(PrivateDealUser.counter_id == counterid).all()
642
    dealerids = [dealer.id for dealer in dealers]
643
    print dealerids  
644
    if len(dealerids) > 0:
645
        return User.query.filter(User.id.in_(dealerids)).all()
646
    return []
647
 
648
 
12696 amit.gupta 649
 
766 rajveer 650
def close_session():
651
    if session.is_active:
652
        print "session is active. closing it."
3376 rajveer 653
        session.close()
654
 
655
def is_alive():
656
    try:
657
        session.query(User.id).limit(1).one()
658
        return True
659
    except:
660
        return False