Subversion Repositories SmartDukaan

Rev

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