Subversion Repositories SmartDukaan

Rev

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

Rev 14847 Rev 15539
Line 7... Line 7...
7
from datetime import datetime, date, timedelta
7
from datetime import datetime, date, timedelta
8
from dtr import main
8
from dtr import main
9
from dtr.dao import AffiliateInfo, Order, SubOrder, FlipkartAffiliateInfo
9
from dtr.dao import AffiliateInfo, Order, SubOrder, FlipkartAffiliateInfo
10
from dtr.main import getBrowserObject, getStore, ParseException, ungzipResponse, \
10
from dtr.main import getBrowserObject, getStore, ParseException, ungzipResponse, \
11
    Store as MStore, sourceMap, tprint
11
    Store as MStore, sourceMap, tprint
-
 
12
from dtr.reports.affiliatereco import getSkuData
-
 
13
from dtr.storage.DataService import Clicks, Users, FlipkartOrders
-
 
14
from dtr.utils.utils import fetchResponseUsingProxy
-
 
15
from elixir import *
12
from pprint import pprint
16
from pprint import pprint
13
from pymongo.mongo_client import MongoClient
17
from pymongo.mongo_client import MongoClient
14
import hashlib
18
import hashlib
15
import importlib
19
import importlib
16
import json
20
import json
17
import mechanize
21
import mechanize
18
import pymongo
22
import pymongo
19
import re
23
import re
20
import traceback
24
import traceback
21
import urllib
25
import urllib
22
from dtr.utils.utils import fetchResponseUsingProxy
-
 
23
 
26
 
24
USERNAME='saholic1@gmail.com'
27
USERNAME='saholic1@gmail.com'
25
PASSWORD='spice@2020'
28
PASSWORD='spice@2020'
26
ORDER_TRACK_URL='https://m.flipkart.com/order_details'
29
ORDER_TRACK_URL='https://m.flipkart.com/order_details'
27
AFFILIATE_URL='https://www.flipkart.com/affiliate/login'
30
AFFILIATE_URL='https://www.flipkart.com/affiliate/login'
Line 29... Line 32...
29
AFF_REPORT_URL='http://www.flipkart.com/affiliate/reports/ordersReport?order_status_filter=%s&startdate=%s&enddate=%s'
32
AFF_REPORT_URL='http://www.flipkart.com/affiliate/reports/ordersReport?order_status_filter=%s&startdate=%s&enddate=%s'
30
AFF_STATUS_CANCELLED='cancelled'
33
AFF_STATUS_CANCELLED='cancelled'
31
AFF_STATUS_APPROVED='approved'
34
AFF_STATUS_APPROVED='approved'
32
AFF_STATUS_DISAPPROVED='disapproved'
35
AFF_STATUS_DISAPPROVED='disapproved'
33
AFF_STATUS_PENDING='pending'
36
AFF_STATUS_PENDING='pending'
-
 
37
categoryMap = {3:"Mobiles", 5:"Tablets"}
34
 
38
 
35
 
39
 
36
class Store(MStore):
40
class Store(MStore):
37
    OrderStatusMap = {
41
    OrderStatusMap = {
38
                      main.Store.ORDER_PLACED : ['approval', 'processing', 'shipping'],
42
                      main.Store.ORDER_PLACED : ['approval', 'processing', 'shipping'],
Line 155... Line 159...
155
        data = {'__FK':token,
159
        data = {'__FK':token,
156
                'email':'saholic1@gmail.com',
160
                'email':'saholic1@gmail.com',
157
                'password':'e8aacf6fc1e3998186a4a8e56e428f66'
161
                'password':'e8aacf6fc1e3998186a4a8e56e428f66'
158
        }
162
        }
159
        br.open(AFFILIATE_LOGIN_URL, urllib.urlencode(data))
163
        br.open(AFFILIATE_LOGIN_URL, urllib.urlencode(data))
160
        for delta in range(0,45):
164
        for delta in range(1,2):
161
            yester5date = date.today() - timedelta(delta)
165
            yester5date = date.today() - timedelta(delta)
162
            syester5date = yester5date.strftime('%Y-%m-%d')
166
            syester5date = yester5date.strftime('%Y-%m-%d')
163
            for status in [AFF_STATUS_PENDING, AFF_STATUS_CANCELLED, AFF_STATUS_DISAPPROVED]:
167
            for status in [AFF_STATUS_PENDING, AFF_STATUS_CANCELLED, AFF_STATUS_DISAPPROVED]:
164
                try:
168
                try:
165
                    br.open(AFF_REPORT_URL % (status, syester5date, syester5date))
169
                    br.open(AFF_REPORT_URL % (status, syester5date, syester5date))
Line 187... Line 191...
187
                    affiliateInfo.productTitle =  tdElements[0].find('a').text
191
                    affiliateInfo.productTitle =  tdElements[0].find('a').text
188
                    #updateMap['subOrders.$.unitPrice'] = price
192
                    #updateMap['subOrders.$.unitPrice'] = price
189
                    #updateMap['subOrders.$.cashBackAmount'], updateMap['subOrders.$.cashBacPercentage'] = self.getCashbackAmount(productCode, price)
193
                    #updateMap['subOrders.$.cashBackAmount'], updateMap['subOrders.$.cashBacPercentage'] = self.getCashbackAmount(productCode, price)
190
                    offers.append(affiliateInfo)
194
                    offers.append(affiliateInfo)
191
        self._saveToAffiliate(offers)
195
        self._saveToAffiliate(offers)
-
 
196
        
-
 
197
        yester5date = date.today() - timedelta(1)
-
 
198
        syester5date = yester5date.strftime('%Y-%m-%d')
-
 
199
        self.db.flipkartOrderAffiliateInfo.find({"saleDate":syester5date})
-
 
200
        for order in self.db.flipkartOrderAffiliateInfo.find({"saleDate":syester5date}):
-
 
201
            userId = None
-
 
202
            subTagId = None
-
 
203
            email = None
-
 
204
            subTagId = order.get("subTagId")
-
 
205
            if subTagId:
-
 
206
                click = session.query(Clicks).filter_by(tag = subTagId).first()
-
 
207
                if click is not None:
-
 
208
                    userId= click.user_id 
-
 
209
                    user = session.query(Users.email).filter_by(id = userId).first()
-
 
210
                    if user is not None:
-
 
211
                        email = user.email
-
 
212
            
-
 
213
            flipkartOrder = FlipkartOrders()
-
 
214
            flipkartOrder.user_id = userId
-
 
215
            flipkartOrder.identifier = order.get("identifier")
-
 
216
            flipkartOrder.email = email
-
 
217
            flipkartOrder.subtagId = order.get("subTagId")
-
 
218
            flipkartOrder.created = datetime.strptime(order.get("saleDate"), "%Y-%m-%d")
-
 
219
            flipkartOrder.status = order.get("conversionStatus")
-
 
220
            flipkartOrder.title = order.get("productTitle")
-
 
221
            flipkartOrder.price = order.get("price")
-
 
222
            flipkartOrder.quantity = order.get("quantity")
-
 
223
            flipkartOrder.productCode = order.get("productCode")
-
 
224
            skuData = getSkuData(2, order.get("productCode"))
-
 
225
            if skuData is not None:
-
 
226
                flipkartOrder.catalogId = skuData.get("skuBundleId")
-
 
227
                flipkartOrder.brand = skuData.get("brand")
-
 
228
                flipkartOrder.model = skuData.get("model_name")
-
 
229
                flipkartOrder.category = categoryMap.get(skuData.get("category_id"))
-
 
230
                flipkartOrder.title =skuData.get("source_product_name")
-
 
231
                        
-
 
232
        session.commit()
192
    
233
    
193
    def _saveToAffiliate(self, offers):
234
    def _saveToAffiliate(self, offers):
194
        collection = self.db.flipkartOrderAffiliateInfo
235
        collection = self.db.flipkartOrderAffiliateInfo
195
        mcollection = self.db.merchantOrder
236
        mcollection = self.db.merchantOrder
196
        for offer in offers:
237
        for offer in offers: