Subversion Repositories SmartDukaan

Rev

Rev 1273 | Rev 1491 | 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
from shop2020.utils.Utils import log_entry
557 chandransh 7
from shop2020.model.v1.user.impl.UserDataAccessors import create_user, update_user, get_user_by_id, update_password,\
8
    set_user_as_logged_out, set_user_as_logged_in, remove_address_for_user,\
9
    add_address_for_user, delete_user, authenticate_user, user_exists, get_user_state, initialize, set_default_address,\
1273 varun.gupt 10
    create_anonymous_user, forgot_password, get_all_addresses_for_user, get_default_address_id, get_default_pincode,\
11
    create_user_communication
557 chandransh 12
from shop2020.model.v1.user.impl.CartDataAccessors import create_cart, get_cart,\
13
    get_cart_by_id, get_cart_by_user_id_and_status, get_carts_by_status,\
14
    get_carts_between, change_cart_status, add_item_to_cart,\
643 chandransh 15
    change_item_status, add_address_to_cart, commit_cart,\
691 chandransh 16
    validate_cart, merge_cart, delete_item_from_cart, check_out, reset_cart
594 rajveer 17
from shop2020.model.v1.user.impl.Converters import to_t_user, to_t_user_state, to_t_cart, to_t_address
576 chandransh 18
 
557 chandransh 19
from shop2020.thriftpy.model.v1.user.ttypes import ShoppingCartException
130 ashish 20
 
772 rajveer 21
from shop2020.model.v1.user.impl.WidgetDataAccessor import update_my_research, get_browse_history,\
22
    update_browse_history, delete_item_from_my_research, merge_browse_history, get_my_research
23
from shop2020.model.v1.user.impl.WidgetConverters import to_t_widget
766 rajveer 24
from shop2020.model.v1.user.impl import UserDataAccessors, CartDataAccessors,\
25
    WidgetDataAccessor
557 chandransh 26
 
130 ashish 27
class UserContextServiceHandler:
28
 
404 rajveer 29
 
1249 chandransh 30
    def __init__(self, dbname='user'):
31
        initialize(dbname)
557 chandransh 32
 
130 ashish 33
    """
557 chandransh 34
    service
130 ashish 35
    """
557 chandransh 36
    def createAnonymousUser(self, jsessionId):
766 rajveer 37
        try:
38
            cart = create_cart(-1)
39
            return to_t_user(create_anonymous_user(jsessionId, cart))
40
        finally:
41
            UserDataAccessors.close_session()
557 chandransh 42
    def getUserById(self, userId):
130 ashish 43
        """
44
        Parameters:
557 chandransh 45
        - userId
130 ashish 46
        """
766 rajveer 47
        try:
48
            return to_t_user(get_user_by_id(userId))
49
        finally:
50
            UserDataAccessors.close_session()
51
 
557 chandransh 52
    def createUser(self, user):
130 ashish 53
        """
54
        Parameters:
557 chandransh 55
        - user
130 ashish 56
        """
766 rajveer 57
        try:
58
            cart = create_cart(-1)
59
            return to_t_user(create_user(user, cart))
60
        finally:
61
            UserDataAccessors.close_session()
62
 
557 chandransh 63
    def updateUser(self, user):
130 ashish 64
        """
65
        Parameters:
557 chandransh 66
        - user
130 ashish 67
        """
766 rajveer 68
        try:
69
            return to_t_user(update_user(user))
70
        finally:
71
            UserDataAccessors.close_session()
72
 
557 chandransh 73
    def deleteUser(self, userId):
130 ashish 74
        """
75
        Parameters:
557 chandransh 76
        - userId
130 ashish 77
        """
766 rajveer 78
        try:
79
            return delete_user(userId)
80
        finally:
81
            UserDataAccessors.close_session()
82
 
557 chandransh 83
    def getUserState(self, userId):
84
        """
85
        Parameters:
86
        - userId
87
        """
130 ashish 88
        log_entry(self, "get State")
766 rajveer 89
        try:
90
            return to_t_user_state(get_user_state(userId))
91
        finally:
92
            UserDataAccessors.close_session()
93
 
557 chandransh 94
    def authenticateUser(self, email, password):
130 ashish 95
        """
96
        Parameters:
557 chandransh 97
        - email
98
        - password
99
        """
100
        log_entry(self, "authenticate user")
766 rajveer 101
        try:
102
            return to_t_user(authenticate_user(email, password))
103
        finally:
104
            UserDataAccessors.close_session()
105
 
557 chandransh 106
    def userExists(self, email):
107
        """
108
        Parameters:
109
        - email
110
        """
111
        log_entry(self, "user exists")
766 rajveer 112
        try:
113
            return user_exists(email)
114
        finally:
115
            UserDataAccessors.close_session()
116
 
567 rajveer 117
    def addAddressForUser(self, userId, address, setDefault):
557 chandransh 118
        """
119
        Parameters:
120
        - userId
121
        - address
122
        - setDefault
123
        """
124
        log_entry(self, "add address for user")
766 rajveer 125
        try:
126
            return add_address_for_user(address, userId, setDefault)
127
        finally:
128
            UserDataAccessors.close_session()
129
 
557 chandransh 130
    def removeAddressForUser(self, userid, addressId):
131
        """
132
        Parameters:
133
        - userid
134
        - addressId
135
        """
136
        log_entry(self, "removing address")
766 rajveer 137
        try:
138
            return remove_address_for_user(userid, addressId)
139
        finally:
140
            UserDataAccessors.close_session()
141
 
557 chandransh 142
    def setUserAsLoggedIn(self, userId, timestamp):
143
        """
144
        Parameters:
145
        - userId
146
        - timestamp
147
        """
148
        log_entry(self, "set_user_as_logged_in")
766 rajveer 149
        try:
150
            return set_user_as_logged_in(userId, timestamp)
151
        finally:
152
            UserDataAccessors.close_session()
153
 
557 chandransh 154
    def setUserAsLoggedOut(self, userId, timestamp):
155
        """
156
        Parameters:
157
        - userId
158
        - timestamp
159
        """
160
        log_entry(self, "set user as logged out")
766 rajveer 161
        try:
162
            return set_user_as_logged_out(userId, timestamp)
163
        finally:
164
            UserDataAccessors.close_session()
165
 
557 chandransh 166
    def setDefaultAddress(self, userId, addressId):
167
        """
168
        Parameters:
169
        - userId
170
        - addressId
171
        """
766 rajveer 172
        try:
173
            return set_default_address(userId, addressId)
174
        finally:
175
            UserDataAccessors.close_session()
176
 
594 rajveer 177
    def updatePassword(self, userid, oldPassword, newPassword):
557 chandransh 178
        """
179
        Parameters:
594 rajveer 180
         - userid
181
         - oldPassword
182
         - newPassword
557 chandransh 183
        """
184
        log_entry(self, "updating password")
766 rajveer 185
        try:
186
            return update_password(userid, oldPassword, newPassword)
187
        finally:
188
            UserDataAccessors.close_session()
189
 
884 rajveer 190
    def forgotPassword(self, email, password):
581 rajveer 191
        """
192
        Parameters:
193
         - email
194
        """
195
        log_entry(self, "forgot password")
766 rajveer 196
        try:
884 rajveer 197
            return forgot_password(email, password)
766 rajveer 198
        finally:
199
            UserDataAccessors.close_session()
200
 
594 rajveer 201
    def getAllAddressesForUser(self, userId):
202
        """
203
        Parameters:
204
         - userId
205
        """
766 rajveer 206
        try:
207
            addresses = get_all_addresses_for_user(userId)
208
 
209
            t_addresses = list()
210
            for address in addresses:
211
                t_addresses.append(to_t_address(address))
212
            return t_addresses
213
        finally:
214
            UserDataAccessors.close_session()
594 rajveer 215
 
216
    def getDefaultAddressId(self, userId):
217
        """
218
        Parameters:
219
         - userId
220
        """
766 rajveer 221
        try:
785 rajveer 222
            return get_default_address_id(userId)
766 rajveer 223
        finally:
224
            UserDataAccessors.close_session()
785 rajveer 225
 
226
    def getDefaultPincode(self, userId):
227
        """
228
        Parameters:
229
         - userId
230
        """
231
        try:
232
            return get_default_pincode(userId)
233
        finally:
234
            UserDataAccessors.close_session()
235
 
557 chandransh 236
    def createCart(self, userId):
237
        """
238
        Parameters:
239
        - userId
240
        """
766 rajveer 241
        try:
242
            return create_cart(userId).id
243
        finally:
244
            UserDataAccessors.close_session()
245
 
557 chandransh 246
    def getCurrentCart(self, userId):
247
        """
248
        Parameters:
130 ashish 249
         - userId
250
        """
766 rajveer 251
        try:
252
            cart = get_cart(userId)
253
            if cart:
254
                return to_t_cart(cart)
255
            else:
256
                raise ShoppingCartException(101, "not cart attached to this user")
257
        finally:
258
            CartDataAccessors.close_session()
259
 
557 chandransh 260
    def getCart(self, cartId):
261
        """
262
        Parameters:
263
         - cartId
264
        """
766 rajveer 265
        try:
266
            cart = get_cart_by_id(cartId)
267
            if cart:
268
                return to_t_cart(cart)
269
            else:
270
                raise ShoppingCartException(101, "not cart attached to this id")
271
        finally:
272
            CartDataAccessors.close_session()
273
 
557 chandransh 274
    def getCartsForUser(self, userId, status):
130 ashish 275
        """
276
        Parameters:
277
         - userId
557 chandransh 278
         - status
130 ashish 279
        """
766 rajveer 280
        try:
281
            if not userId:
282
                raise ShoppingCartException(101, "user_id is not provided")
283
 
284
            carts = get_cart_by_user_id_and_status(userId, status)
285
            t_carts = []
286
            if carts:
287
                for cart in carts:
288
                    t_carts.append(to_t_cart(cart))
289
            return t_carts
290
        finally:
291
            CartDataAccessors.close_session()
292
 
557 chandransh 293
    def getCartsByStatus(self, status):
130 ashish 294
        """
295
        Parameters:
557 chandransh 296
         - status
130 ashish 297
        """
766 rajveer 298
        try:
299
            carts = get_carts_by_status(status)
300
            t_carts = []
301
            if carts:
302
                for cart in carts:
303
                    t_carts.append(to_t_cart(cart))
304
            return t_carts
305
        finally:
306
            CartDataAccessors.close_session()
307
 
557 chandransh 308
    def getCartsByTime(self, from_time, to_time, status):
130 ashish 309
        """
310
        Parameters:
557 chandransh 311
         - from_time
312
         - to_time
313
         - status
130 ashish 314
        """
766 rajveer 315
        try:
316
            carts = get_carts_between(from_time, to_time, status)
317
            t_carts = []
318
            if carts:
319
                for cart in carts:
320
                    t_carts.append(to_t_cart(cart))
321
            return t_carts
322
        finally:
323
            CartDataAccessors.close_session()
324
 
557 chandransh 325
    def changeCartStatus(self, cartId, status):
130 ashish 326
        """
327
        Parameters:
557 chandransh 328
         - cartId
329
         - status
130 ashish 330
        """
766 rajveer 331
        try:
332
            change_cart_status(cartId, status)
333
        finally:
334
            CartDataAccessors.close_session()
335
 
557 chandransh 336
    def addItemToCart(self, cartId, itemId, quantity):
130 ashish 337
        """
338
        Parameters:
557 chandransh 339
         - cartId
340
         - itemId
341
         - quantity
130 ashish 342
        """
766 rajveer 343
        try:
344
            add_item_to_cart(cartId, itemId, quantity)
345
        finally:
346
            CartDataAccessors.close_session()
347
 
557 chandransh 348
    def deleteItemFromCart(self, cartId, itemId):
130 ashish 349
        """
350
        Parameters:
557 chandransh 351
         - cartId
352
         - itemId
130 ashish 353
        """
766 rajveer 354
        try:
355
            delete_item_from_cart(cartId, itemId)
356
        finally:
357
            CartDataAccessors.close_session()
358
 
557 chandransh 359
    def changeQuantity(self, cartId, itemId, quantity):
360
        """
361
        Parameters:
362
         - cartId
363
         - itemId
364
         - quantity
365
        """
766 rajveer 366
        try:
367
            add_item_to_cart(cartId, itemId, quantity)
368
        finally:
369
            CartDataAccessors.close_session()
370
 
557 chandransh 371
    def changeItemStatus(self, cartId, itemId, status):
130 ashish 372
        """
373
        Parameters:
557 chandransh 374
         - cartId
375
         - itemId
376
        """
766 rajveer 377
        try:
378
            return change_item_status(cartId, itemId, status)
379
        finally:
380
            CartDataAccessors.close_session()
381
 
557 chandransh 382
    def addAddressToCart(self, cartId, addressId):
383
        """
384
        Parameters:
385
         - cartId
130 ashish 386
         - addressId
387
        """
766 rajveer 388
        try:
389
            return add_address_to_cart(cartId, addressId)
390
        finally:
391
            CartDataAccessors.close_session()
392
 
690 chandransh 393
    def createOrders(self, cartId):
130 ashish 394
        """
395
        Parameters:
557 chandransh 396
         - cartId
130 ashish 397
        """
766 rajveer 398
        try:
399
            return commit_cart(cartId)
400
        finally:
401
            CartDataAccessors.close_session()
1466 ankur.sing 402
 
557 chandransh 403
    def validateCart(self, cartId):
130 ashish 404
        """
1466 ankur.sing 405
        Validates that:
406
        1. The checkout timestamp is greater than the updatedOn timestamp.
407
        2. All of the lines in the cart are active items.
408
        3. The estimate for any of the lines in cart doesn't change.
409
        If all three are true, returns empty string; else returns appropriate message.
410
 
130 ashish 411
        Parameters:
557 chandransh 412
         - cartId
130 ashish 413
        """
766 rajveer 414
        try:
415
            return validate_cart(cartId)
416
        finally:
417
            CartDataAccessors.close_session()
418
 
557 chandransh 419
    def mergeCart(self, fromCartId, toCartId):
513 rajveer 420
        """
421
        Parameters:
557 chandransh 422
         - fromCartId
423
         - toCartId
513 rajveer 424
        """
766 rajveer 425
        try:
426
            merge_cart(fromCartId, toCartId)
427
        finally:
428
            CartDataAccessors.close_session()
429
 
691 chandransh 430
    def checkOut(self, cartId):
431
        """
432
        Sets the checkedOutOn timestamp of the cart. Raises an exception if the specified cart can't be found.
433
 
434
        Parameters:
435
         - cartId
436
        """
766 rajveer 437
        try:
438
            return check_out(cartId)
439
        finally:
440
            CartDataAccessors.close_session()
441
 
691 chandransh 442
    def resetCart(self, cartId, items):
443
        """
444
        The second parameter is a map of item ids and their quantities which have been successfully processed.
445
        This methods removes the specified quantiry of the specified item from the cart.
446
 
447
        Parameters:
448
         - cartId
449
         - items
450
        """
766 rajveer 451
        try:
452
            return reset_cart(cartId, items)
453
        finally:
454
            CartDataAccessors.close_session()
772 rajveer 455
 
456
    #Widget related methods
457
    def getMyResearch(self, userId):
458
        """
459
        Parameters:
460
         - user_id
461
        """
462
        try:
463
            return to_t_widget(get_my_research(userId))
464
        finally:
465
            WidgetDataAccessor.close_session()
466
 
467
    def updateMyResearch(self, userId, itemId):
468
        """
469
        Parameters:
470
         - user_id
471
         - item_id
472
        """
473
        try:
474
            return update_my_research(userId, itemId)
475
        finally:
476
            WidgetDataAccessor.close_session()
477
 
478
    def deleteItemFromMyResearch(self, userId, itemId):
479
        """
480
        Parameters:
481
         - user_id
482
         - item_id
483
        """
484
        try:
485
            return delete_item_from_my_research(userId, itemId)
486
        finally:
487
            WidgetDataAccessor.close_session()
766 rajveer 488
 
772 rajveer 489
    def updateBrowseHistory(self, userId, itemId):
490
        """
491
        Parameters: 
492
        - user_id
493
        - item_id
494
        """
495
        try:
496
            update_browse_history(userId, itemId)
497
        finally:
498
            WidgetDataAccessor.close_session()
499
 
500
    def getBrowseHistory(self, userId):
501
        """
502
        Parameters:
503
         - user_id
504
        """
505
        try:
506
            return to_t_widget(get_browse_history(userId))
507
        finally:
508
            WidgetDataAccessor.close_session()
509
 
510
    def mergeBrowseHistory(self, fromUserId, toUserId):
511
        """
512
        Parameters:
513
         - user_id
514
        """
515
        try:
516
            return merge_browse_history(fromUserId, toUserId)
517
        finally:
518
            WidgetDataAccessor.close_session()
519
 
1273 varun.gupt 520
    def saveUserCommunication(self, userId, email, communicationType, orderId, awb, product, subject, message):
521
        """
522
        Parameters:
523
         - userId
524
         - email
525
         - communicationType
526
         - orderId
527
         - awb
528
         - product
529
         - subject
530
         - message
531
        """
532
        try:
533
            return create_user_communication(userId, email, communicationType, orderId, awb, product, subject, message)
534
        finally:
535
            WidgetDataAccessor.close_session()
536
 
772 rajveer 537
    def closeSession(self, ):
538
        CartDataAccessors.close_session()
539
        UserDataAccessors.close_session()
540
        WidgetDataAccessor.close_session()
541
 
542
    '''        
557 chandransh 543
    def addWidget(self, widget):
130 ashish 544
        """
545
        Parameters:
557 chandransh 546
         - widget
130 ashish 547
        """
766 rajveer 548
        try:
549
            add_widget(widget)
550
        finally:
551
            WidgetDataAccessor.close_session()
130 ashish 552
 
557 chandransh 553
    def addItemToWidget(self, widget_id, items):
130 ashish 554
        """
555
        Parameters:
557 chandransh 556
         - widget_id
557
         - items
130 ashish 558
        """
766 rajveer 559
        try:
560
            add_items_to_widget(widget_id, items)
561
        finally:
562
            WidgetDataAccessor.close_session()
563
 
557 chandransh 564
    def updateWidget(self, widgetId, enable):
130 ashish 565
        """
566
        Parameters:
557 chandransh 567
         - widgetId
568
         - enable
130 ashish 569
        """
766 rajveer 570
        try:
571
            update_widget(widgetId, enable)
572
        finally:
573
            WidgetDataAccessor.close_session()
574
 
557 chandransh 575
    def updateWidgetItem(self, widgetId, enable):
130 ashish 576
        """
577
        Parameters:
557 chandransh 578
         - widgetId
579
         - enable
130 ashish 580
        """
766 rajveer 581
        try:
582
            update_widget(widgetId, enable)
583
        finally:
584
            WidgetDataAccessor.close_session()
585
 
557 chandransh 586
    def deleteItemFromWidget(self, widget_id, item_id):
587
        """
588
        Parameters:
589
         - widget_id
590
         - item_id
591
        """
766 rajveer 592
        try:
593
            return delete_item_from_widget(widget_id, item_id)
594
        finally:
595
            WidgetDataAccessor.close_session()
596
 
557 chandransh 597
    def getWidget(self, type, userId, onlyEnabled):
130 ashish 598
        """
599
        Parameters:
557 chandransh 600
         - type
601
         - userId
602
         - onlyEnabled
130 ashish 603
        """
766 rajveer 604
        try:
605
            widget = get_widget_by_type(type, userId, onlyEnabled)
606
            return to_t_widget(widget)
607
        finally:
608
            WidgetDataAccessor.close_session()
609
 
557 chandransh 610
    def updateRatings(self, item_id, type, rating, user_id):
130 ashish 611
        """
612
        Parameters:
557 chandransh 613
        - item_id
614
        - type
615
        - rating
616
        - user_id
130 ashish 617
        """
766 rajveer 618
        try:
619
            update_ratings(user_id, item_id, rating, type)
620
        finally:
621
            WidgetDataAccessor.close_session()
557 chandransh 622
 
623
    def getRatings(self, item_id, user_id):
624
        """
625
        Parameters:
626
        - item_id
627
        - user_id
628
        """
766 rajveer 629
        try:
630
            all_ratings, user_ratings = get_ratings(user_id, item_id)
631
            return to_t_ratings(user_ratings, all_ratings, item_id, user_id)
632
        finally:
633
            WidgetDataAccessor.close_session()
634
 
772 rajveer 635
    '''
636