Subversion Repositories SmartDukaan

Rev

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