Subversion Repositories SmartDukaan

Rev

Rev 13519 | Rev 13947 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 13519 Rev 13709
Line 10... Line 10...
10
from shop2020.clients.InventoryClient import InventoryClient
10
from shop2020.clients.InventoryClient import InventoryClient
11
from shop2020.config.client.ConfigClient import ConfigClient
11
from shop2020.config.client.ConfigClient import ConfigClient
12
from shop2020.model.v1.catalog.impl import DataService
12
from shop2020.model.v1.catalog.impl import DataService
13
from shop2020.model.v1.catalog.impl.CategoryManager import CategoryManager
13
from shop2020.model.v1.catalog.impl.CategoryManager import CategoryManager
14
from shop2020.model.v1.catalog.impl.Convertors import to_t_item, to_t_source, \
14
from shop2020.model.v1.catalog.impl.Convertors import to_t_item, to_t_source, \
15
    to_t_brand_info, to_t_private_deal, to_t_exclusive_affiliate_item_info
15
    to_t_brand_info, to_t_private_deal
16
from shop2020.model.v1.catalog.impl.DataService import Item, ItemChangeLog, \
16
from shop2020.model.v1.catalog.impl.DataService import Item, ItemChangeLog, \
17
    Category, EntityIDGenerator, SimilarItems, ProductNotification, Source, \
17
    Category, EntityIDGenerator, SimilarItems, ProductNotification, Source, \
18
    SourceItemPricing, AuthorizationLog, VoucherItemMapping, CategoryVatMaster, \
18
    SourceItemPricing, AuthorizationLog, VoucherItemMapping, CategoryVatMaster, \
19
    OOSTracker, EntityTag, ItemInsurerMapping, Insurer, Banner, BannerMap, \
19
    OOSTracker, EntityTag, ItemInsurerMapping, Insurer, Banner, BannerMap, \
20
    FreebieItem, BrandInfo, Amazonlisted, StorePricing, ItemVatMaster, \
20
    FreebieItem, BrandInfo, Amazonlisted, StorePricing, ItemVatMaster, \
Line 22... Line 22...
22
    ProductFeedSubmit, MarketplaceItems, MarketPlaceItemPrice, \
22
    ProductFeedSubmit, MarketplaceItems, MarketPlaceItemPrice, \
23
    SourcePercentageMaster, SourceItemPercentage, FlipkartItem, \
23
    SourcePercentageMaster, SourceItemPercentage, FlipkartItem, \
24
    MarketPlaceUpdateHistory, SourceCategoryPercentage, MarketPlaceHistory, \
24
    MarketPlaceUpdateHistory, SourceCategoryPercentage, MarketPlaceHistory, \
25
    PrivateDeals, AmazonOutOfSync, PrivateDealsPriceComparison, \
25
    PrivateDeals, AmazonOutOfSync, PrivateDealsPriceComparison, \
26
    SourceReturnPercentage, CompetitorPricing, CompetitorPricingRequest, \
26
    SourceReturnPercentage, CompetitorPricing, CompetitorPricingRequest, \
27
    AmazonPromotion, ExclusiveAffiliateItemInfo, OutboundAffiliateMaster
27
    AmazonPromotion, ExclusiveAffiliateItemInfo, OutboundAffiliateMaster, HsItem
28
from shop2020.thriftpy.model.v1.catalog.ttypes import status, ItemShippingInfo, \
28
from shop2020.thriftpy.model.v1.catalog.ttypes import status, ItemShippingInfo, \
29
    ItemType, PremiumType, FreebieItem as t_FreebieItem, \
29
    ItemType, PremiumType, FreebieItem as t_FreebieItem, \
30
    StorePricing as tStorePricing, CatalogServiceException, BannerType, InsurerType, \
30
    StorePricing as tStorePricing, CatalogServiceException, BannerType, InsurerType, \
31
    Banner as t_banner, CompetitorPricing as TCompetitorPricing, AmazonPromotionType
31
    Banner as t_banner, CompetitorPricing as TCompetitorPricing, AmazonPromotionType
32
from shop2020.thriftpy.model.v1.inventory.ttypes import VatType, \
32
from shop2020.thriftpy.model.v1.inventory.ttypes import VatType, \
33
    InventoryServiceException, IgnoredInventoryUpdateItems, SnapdealInventoryItem
33
    InventoryServiceException, IgnoredInventoryUpdateItems, SnapdealInventoryItem
-
 
34
from shop2020.thriftpy.utils.ttypes import UserSmsInfo, SmsType
34
from shop2020.thriftpy.model.v1.order.ttypes import OrderSource
35
from shop2020.thriftpy.model.v1.order.ttypes import OrderSource
35
from shop2020.utils import EmailAttachmentSender
36
from shop2020.utils import EmailAttachmentSender
36
from shop2020.utils.EmailAttachmentSender import mail
37
from shop2020.utils.EmailAttachmentSender import mail
37
from shop2020.utils.Utils import to_py_date, log_risky_flag
38
from shop2020.utils.Utils import to_py_date, log_risky_flag, to_java_date
38
from sqlalchemy import desc, asc
39
from sqlalchemy import desc, asc
39
from sqlalchemy.sql.expression import or_, distinct, func, and_
40
from sqlalchemy.sql.expression import or_, distinct, func, and_
40
from sqlalchemy.sql.functions import now
41
from sqlalchemy.sql.functions import now
41
from string import Template
42
from string import Template
42
import datetime
43
import datetime
43
import math
44
import math
44
import sys
45
import sys
45
import threading
46
import threading
46
import urllib2
47
import urllib2
-
 
48
from shop2020.clients.UserClient import UserClient
47
 
49
 
48
sourceId = int(ConfigClient().get_property("sourceid"))
50
sourceId = int(ConfigClient().get_property("sourceid"))
49
to_addresses = ["khushal.bhatia@shop2020.in", "chandan.kumar@shop2020.in",  "chaitnaya.vats@shop2020.in",'manoj.kumar@shop2020.in']
51
to_addresses = ["khushal.bhatia@shop2020.in", "chandan.kumar@shop2020.in",  "chaitnaya.vats@shop2020.in",'manoj.kumar@shop2020.in']
50
to_store_addresses = ["rajveer.singh@shop2020.in"]
52
to_store_addresses = ["rajveer.singh@shop2020.in"]
51
mail_user = "cnc.center@shop2020.in"
53
mail_user = "cnc.center@shop2020.in"
Line 1216... Line 1218...
1216
        helper_client = HelperClient().get_client()
1218
        helper_client = HelperClient().get_client()
1217
        helper_client.saveUserEmailForSending([email], "", "Product requested by you is available now.", html, str(itemId), "ProductNotification", [], [],sourceId)
1219
        helper_client.saveUserEmailForSending([email], "", "Product requested by you is available now.", html, str(itemId), "ProductNotification", [], [],sourceId)
1218
    except Exception as e:
1220
    except Exception as e:
1219
        print e
1221
        print e
1220
        print sys.exc_info()[0]
1222
        print sys.exc_info()[0]
-
 
1223
    
-
 
1224
    try:
-
 
1225
        user_client = UserClient().get_client()
-
 
1226
        user = user_client.getUserByEmail(email)
-
 
1227
        if user is not None and user.id !=-1:
-
 
1228
            if user.mobileNumber is not None:
-
 
1229
                mobileNo = user.mobileNumber
-
 
1230
            elif user.default_address_id is not None:
-
 
1231
                defaultAddress = user_client.getAddressById(user.default_address_id)
-
 
1232
                mobileNo = defaultAddress.mobileNumber
-
 
1233
            else:
-
 
1234
                print 'Sms not sent for email id- ', email
-
 
1235
                mobileNo = None
-
 
1236
            if mobileNo is not None:
-
 
1237
                helper_client = HelperClient().get_client()
-
 
1238
                helper_client.saveUserSmsForSending(user.id, mobileNo, "Dear, Customer, Product "+ product +" requested by you is now available at Saholic.com. Limited Stocks", SmsType.SERVICE_ALERT)
-
 
1239
                userSmsInfo = helper_client.getUserSmsInfo(user.id);
-
 
1240
                if userSmsInfo and mobileNo == userSmsInfo.mobileNo:
-
 
1241
                    userSmsInfo.dailyCount = userSmsInfo.dailyCount +1
-
 
1242
                    userSmsInfo.weeklyCount = userSmsInfo.weeklyCount +1
-
 
1243
                    helper_client.updateUserSmsInfo(userSmsInfo)
-
 
1244
                elif userSmsInfo and mobileNo != userSmsInfo.mobileNo:
-
 
1245
                    userSmsInfo.updateTimestamp = to_java_date(datetime.datetime.now())
-
 
1246
                    userSmsInfo.mobileNo = mobileNo
-
 
1247
                    userSmsInfo.dailyCount = 1
-
 
1248
                    userSmsInfo.weeklyCount = 1
-
 
1249
                    helper_client.updateUserSmsInfo(userSmsInfo)
-
 
1250
                else:
-
 
1251
                    userSmsInfo = UserSmsInfo()
-
 
1252
                    userSmsInfo.userId = user.id
-
 
1253
                    userSmsInfo.mobileNo = mobileNo
-
 
1254
                    userSmsInfo.createdTimestamp = to_java_date(datetime.datetime.now())
-
 
1255
                    userSmsInfo.updateTimestamp = to_java_date(datetime.datetime.now())
-
 
1256
                    helper_client.addUserSmsInfo(userSmsInfo);             
-
 
1257
            
-
 
1258
    except Exception as e:
-
 
1259
        print e
-
 
1260
        print sys.exc_info()[0]
1221
 
1261
 
1222
def get_all_sources():
1262
def get_all_sources():
1223
    sources = Source.query.all()
1263
    sources = Source.query.all()
1224
    return [to_t_source(source) for source in sources]
1264
    return [to_t_source(source) for source in sources]
1225
 
1265
 
Line 2842... Line 2882...
2842
    return AmazonOutOfSync.get_by(item_id=itemId)
2882
    return AmazonOutOfSync.get_by(item_id=itemId)
2843
 
2883
 
2844
def get_all_private_deals_comparison():
2884
def get_all_private_deals_comparison():
2845
    return session.query(PrivateDealsPriceComparison,Item).join((Item,PrivateDealsPriceComparison.item_id==Item.id)).all()
2885
    return session.query(PrivateDealsPriceComparison,Item).join((Item,PrivateDealsPriceComparison.item_id==Item.id)).all()
2846
 
2886
 
-
 
2887
'''    
-
 
2888
def get_all_deal_tags():
-
 
2889
    return session.query(DealTag).all()
-
 
2890
 
-
 
2891
def get_active_tags_for_item(itemId):
-
 
2892
    return session.query(ItemTag).filter(ItemTag.itemId == itemId).filter(ItemTag.status == True).all()
-
 
2893
 
-
 
2894
def get_item_tag_for_item(itemId, tagId):
-
 
2895
    tag = session.query(ItemTag).filter(ItemTag.itemId == itemId).filter(ItemTag.tagId == tagId).first()
-
 
2896
    if tag:
-
 
2897
        return tag
-
 
2898
    else:
-
 
2899
        return None
-
 
2900
 
-
 
2901
def get_all_item_tags_by_item_id(itemId):
-
 
2902
    tag_list = []
-
 
2903
    tag_list.append(session.query(ItemTag).filter(ItemTag.itemId == itemId).filter(ItemTag.status == True).first())
-
 
2904
    return tag_list
-
 
2905
 
-
 
2906
def add_update_item_tag(itemTag, makeStatusInactive):
-
 
2907
    if itemTag is None:
-
 
2908
        raise CatalogServiceException(109, "Item Tag not found")
-
 
2909
        
-
 
2910
    exist_tag = get_item_tag_for_item(itemTag.itemId, itemTag.tagId)
-
 
2911
    if makeStatusInactive :
-
 
2912
        for tag in get_active_tags_for_item(itemTag.itemId):
-
 
2913
            tag.status = False
-
 
2914
            session.commit()
-
 
2915
        return True
-
 
2916
    else:
-
 
2917
        if exist_tag:
-
 
2918
            exist_tag.startDate = to_py_date(itemTag.startDate)
-
 
2919
            if itemTag.endDate:
-
 
2920
                exist_tag.endDate = to_py_date(itemTag.endDate)
-
 
2921
            else:
-
 
2922
                exist_tag.endDate = None
-
 
2923
            exist_tag.status = True
-
 
2924
            session.commit()
-
 
2925
            return True
-
 
2926
        else:
-
 
2927
            tag = ItemTag()
-
 
2928
            tag.itemId = itemTag.itemId
-
 
2929
            tag.tagId = itemTag.tagId
-
 
2930
            tag.startDate = to_py_date(itemTag.startDate)
-
 
2931
            if itemTag.endDate:
-
 
2932
                tag.endDate = to_py_date(itemTag.endDate)
-
 
2933
            tag.status = True
-
 
2934
            session.commit()
-
 
2935
            return True    
-
 
2936
    
-
 
2937
    return False
-
 
2938
'''  
-
 
2939
 
2847
def get_all_snapdeal_marketplaceItem():
2940
def get_all_snapdeal_marketplaceItem():
2848
    return session.query(SnapdealItem,MarketplaceItems,Item).join((MarketplaceItems,SnapdealItem.item_id==MarketplaceItems.itemId)).join((Item,SnapdealItem.item_id==Item.id)).filter(MarketplaceItems.source==OrderSource.SNAPDEAL).all()
2941
    return session.query(SnapdealItem,MarketplaceItems,Item).join((MarketplaceItems,SnapdealItem.item_id==MarketplaceItems.itemId)).join((Item,SnapdealItem.item_id==Item.id)).filter(MarketplaceItems.source==OrderSource.SNAPDEAL).all()
2849
 
2942
 
2850
def get_all_flipkart_marketplaceItem():
2943
def get_all_flipkart_marketplaceItem():
2851
    return session.query(FlipkartItem,MarketplaceItems,Item).join((MarketplaceItems,FlipkartItem.item_id==MarketplaceItems.itemId)).join((Item,FlipkartItem.item_id==Item.id)).filter(MarketplaceItems.source==OrderSource.FLIPKART).all()
2944
    return session.query(FlipkartItem,MarketplaceItems,Item).join((MarketplaceItems,FlipkartItem.item_id==MarketplaceItems.itemId)).join((Item,FlipkartItem.item_id==Item.id)).filter(MarketplaceItems.source==OrderSource.FLIPKART).all()
Line 3014... Line 3107...
3014
def get_all_items_to_list_on_fbg():
3107
def get_all_items_to_list_on_fbg():
3015
    return Amazonlisted.query.filter(Amazonlisted.isFbg==False).filter(or_(Amazonlisted.fbgtaxCode!=None,Amazonlisted.fbgtaxCode!="")).all()
3108
    return Amazonlisted.query.filter(Amazonlisted.isFbg==False).filter(or_(Amazonlisted.fbgtaxCode!=None,Amazonlisted.fbgtaxCode!="")).all()
3016
 
3109
 
3017
def get_all_fbg_listed_items():
3110
def get_all_fbg_listed_items():
3018
    return Amazonlisted.query.filter(Amazonlisted.isFbg==True).all()
3111
    return Amazonlisted.query.filter(Amazonlisted.isFbg==True).all()
-
 
3112
 
-
 
3113
def add_hs_item(hsItems):
-
 
3114
    for hsItem in hsItems:
-
 
3115
        hs_item = HsItem.get_by(hsItemId = hsItem.hsItemId)
-
 
3116
        if hs_item is None:
-
 
3117
            hs_item = HsItem()
-
 
3118
        hs_item.addedBy = hsItem.addedBy
-
 
3119
        hs_item.addedTimestamp = to_py_date(hsItem.addedTimestamp)
-
 
3120
        hs_item.defaultWarehouseId = hsItem.defaultWarehouseId
-
 
3121
        hs_item.hsItemId = hsItem.hsItemId
-
 
3122
        hs_item.hsProductId = hsItem.hsProductId
-
 
3123
        hs_item.itemId = hsItem.itemId
-
 
3124
        hs_item.listingPrice = hsItem.listingPrice
-
 
3125
    session.commit()
-
 
3126
    
-
 
3127
def update_hs_item(hsItem):
-
 
3128
    hs_item = HsItem.get_by(hsItemId = hsItem.hsItemId)
-
 
3129
    hs_item.addedBy = hsItem.addedBy
-
 
3130
    hs_item.addedTimestamp = to_py_date(hsItem.addedTimestamp)
-
 
3131
    hs_item.defaultWarehouseId = hsItem.defaultWarehouseId
-
 
3132
    hs_item.itemId = hsItem.itemId
-
 
3133
    hs_item.listingPrice = hsItem.listingPrice
-
 
3134
    session.commit()
-
 
3135
 
-
 
3136
def get_hs_item(hs_ItemId):
-
 
3137
    hsItem = HsItem.get_by(hsItemId = hs_ItemId)
-
 
3138
    return hsItem
3019
3139