Subversion Repositories SmartDukaan

Rev

Rev 16713 | Rev 16734 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
16537 kshitij.so 1
from elixir import *
2
from dtr.storage import DataService
16595 manish.sha 3
from dtr.storage.DataService import app_offers, app_affiliates, appmasters
16537 kshitij.so 4
from dtr.utils.utils import AFFILIATE_OFFER_API, AFFILIATE_OFFER_DESC_API, fetchResponseUsingProxy
5
import json
16613 manish.sha 6
import math
16713 manish.sha 7
from dtr.utils.MailSender import Email
8
import traceback
16537 kshitij.so 9
 
10
AFFILIATE_ID = 1
11
DEVICE_ID = "SpiceRetail"
12
RETAILER_CODE = 123
13
ACTIVE_OFFERS = []
14
 
15
DataService.initialize(db_hostname='localhost' )
16
 
16713 manish.sha 17
def _sendAlertForNewApp(packageName, appName):
18
    m = Email('localhost')
19
    mFrom = "dtr@shop2020.in"
20
    m.setFrom(mFrom)
21
    #mTo = ['rajneesh.arora@saholic.com','kshitij.sood@saholic.com','chaitnaya.vats@saholic.com','manoj.kumar@saholic.com','manish.sharma@shop2020.in']
22
    mTo = ['manish.sharma@shop2020.in']
23
    for receipient in mTo:
24
        m.addRecipient(receipient)
25
 
26
    m.setSubject("New App have been found:- Package Name:-"+ packageName+" App Name:- "+appName)
27
 
28
    m.setTextBody(None)
29
 
30
    m.send()
16537 kshitij.so 31
 
16713 manish.sha 32
 
16537 kshitij.so 33
def dumpOffers():
16686 manish.sha 34
    global ACTIVE_OFFERS
16537 kshitij.so 35
    offer_url =  AFFILIATE_OFFER_API.get(AFFILIATE_ID)%(DEVICE_ID,RETAILER_CODE)
36
    response = fetchResponseUsingProxy(offer_url, proxy=False)
37
    input_json = json.loads(response)
38
    if input_json['status'].strip()=='ok' and input_json['message'] =="Success":
39
        offers = (input_json['payload'])['offers']
40
        for offer in offers:
16688 manish.sha 41
            ACTIVE_OFFERS.append(str(offer['offerId']))
16691 manish.sha 42
 
43
        print ACTIVE_OFFERS
16689 manish.sha 44
 
16686 manish.sha 45
        for offer in offers:
16537 kshitij.so 46
            fetchOfferDescriptionAndDump(offer)
47
 
48
 
49
def fetchOfferDescriptionAndDump(offer):
50
    offer_desc_url = AFFILIATE_OFFER_DESC_API.get(AFFILIATE_ID)%(DEVICE_ID,offer['offerId'],RETAILER_CODE)
51
    response = fetchResponseUsingProxy(offer_desc_url,proxy=False)
52
    offer_desc = json.loads(response)
53
    input_json = offer_desc['payload']
16600 manish.sha 54
    app_master = appmasters.get_by(package_name=offer['packageName'])
16595 manish.sha 55
    if app_master is None:
56
        app_master = appmasters()
57
        app_master.app_name = offer.get('appName')
58
        app_master.package_name = offer.get('packageName')
16598 manish.sha 59
        app_master.os_name = 'ANDROID'
16713 manish.sha 60
        try:
61
            _sendAlertForNewApp(offer.get('packageName'), offer.get('appName'))
62
        except:
63
            print traceback.print_exc()
64
 
16595 manish.sha 65
    session.commit()
66
    appMasterId = app_master.id
16603 manish.sha 67
    app_offer = app_offers.query.filter(app_offers.affiliate_id==AFFILIATE_ID).filter(app_offers.affiliate_offer_id==offer['offerId']).filter(app_offers.package_name==offer['packageName']).first()
68
 
69
    if app_offer is None:
70
        app_offer = app_offers()
71
        app_offer.affiliate_id = AFFILIATE_ID
72
        app_offer.affiliate_offer_id = offer['offerId']
73
        try:
16595 manish.sha 74
            app_offer.offer_price = float(offer['offerPrice'])
16603 manish.sha 75
        except:
76
            app_offer.offer_price = 0.0
16615 manish.sha 77
        app_offer.user_payout = math.floor(.64 * app_offer.offer_price)
16603 manish.sha 78
        app_offer.override_payout = False
79
        app_offer.overriden_payout = 0.0
80
        app_offer.app_name = offer.get('appName')
81
        app_offer.package_name = offer.get('packageName')
82
        app_offer.description = input_json.get('description')
83
        app_offer.shortDescription = offer.get('shortDesc')
84
        app_offer.longDescription = offer.get('longDesc')
85
        app_offer.link = offer.get('url')
86
        app_offer.priority = 0
87
        app_offer.offerCategory = offer.get('offerCategory')
88
        app_offer.promoImage = input_json.get('promoImage')
89
        app_offer.ratings = offer.get('appRating')
90
        app_offer.downloads = offer.get('appDownloads')
91
        app_offer.image_url = offer.get('iconUrl')
92
        app_offer.appmaster_id = appMasterId
16703 manish.sha 93
        app_offer.offer_active = True
16733 manish.sha 94
        app_offer.location = offer.get('location')
16603 manish.sha 95
        existingAppOffer = app_offers.query.filter(app_offers.affiliate_id==AFFILIATE_ID).filter(app_offers.package_name==offer['packageName']).filter(app_offers.show==True).first()
16686 manish.sha 96
 
16603 manish.sha 97
        if existingAppOffer is None:
16595 manish.sha 98
            app_offer.show = True
99
        else:
16686 manish.sha 100
            if existingAppOffer.affiliate_offer_id not in ACTIVE_OFFERS:
16603 manish.sha 101
                existingAppOffer.show = False
102
                app_offer.show = True
103
            else:
16686 manish.sha 104
                if existingAppOffer.offer_price <= float(offer['offerPrice']):
105
                    existingAppOffer.show = False
106
                    app_offer.show = True
107
                else:
108
                    existingAppOffer.show = True
109
                    existingAppOffer.offer_active = True
110
                    app_offer.show = False
16603 manish.sha 111
    else:
112
        try:
113
            app_offer.offer_price = float(offer['offerPrice'])
114
        except:
115
            app_offer.offer_price = 0.0
16615 manish.sha 116
        app_offer.user_payout = math.floor(.64 * app_offer.offer_price)
16603 manish.sha 117
        app_offer.description = input_json.get('description')
118
        app_offer.shortDescription = offer.get('shortDesc')
119
        app_offer.longDescription = offer.get('longDesc')
120
        app_offer.link = offer.get('url')
121
        app_offer.offerCategory = offer.get('offerCategory')
122
        app_offer.promoImage = input_json.get('promoImage')
123
        app_offer.ratings = offer.get('appRating')
124
        app_offer.downloads = offer.get('appDownloads')
125
        app_offer.image_url = offer.get('iconUrl')
16713 manish.sha 126
        app_offer.offer_active = True
16733 manish.sha 127
        app_offer.location = offer.get('location')
16603 manish.sha 128
        existingAppOffer = app_offers.query.filter(app_offers.affiliate_id==AFFILIATE_ID).filter(app_offers.package_name==offer['packageName']).filter(app_offers.show==True).first()
129
        if existingAppOffer is None:
130
            app_offer.show = True
131
        else:
16686 manish.sha 132
            if existingAppOffer.affiliate_offer_id not in ACTIVE_OFFERS:
16603 manish.sha 133
                existingAppOffer.show = False
134
                app_offer.show = True
16595 manish.sha 135
            else:
16686 manish.sha 136
                if existingAppOffer.offer_price <= float(offer['offerPrice']):
137
                    existingAppOffer.show = False
138
                    app_offer.show = True
139
                else:
140
                    existingAppOffer.show = True
16689 manish.sha 141
                    existingAppOffer.offer_active = True
16686 manish.sha 142
                    app_offer.show = False
16603 manish.sha 143
 
16595 manish.sha 144
    '''            
145
    app_offer = app_offers.get_by(affiliate_id=AFFILIATE_ID, affiliate_offer_id=offer['offerId'], package_name=offer['package_name'])
146
 
16537 kshitij.so 147
    if app_offer is None:
148
        app_offer = app_offers()
149
        app_offer.affiliate_id = AFFILIATE_ID
150
        app_offer.affiliate_offer_id = offer['offerId']
151
        try:
152
            app_offer.offer_price = float(offer['offerPrice'])
153
        except:
154
            app_offer.offer_price = 0.0
155
        app_offer.user_payout = .8 * app_offer.offer_price
156
        app_offer.override_payout = False
157
        app_offer.overriden_payout = 0.0
158
        app_offer.app_name = offer.get('appName')
159
        app_offer.package_name = offer.get('packageName')
160
        app_offer.description = input_json.get('description')
161
        app_offer.shortDescription = offer.get('shortDesc')
162
        app_offer.longDescription = offer.get('longDesc')
16578 manish.sha 163
        app_offer.link = offer.get('url')
16537 kshitij.so 164
        app_offer.offer_active = True
165
        app_offer.priority = 0
166
        app_offer.show = False
167
        app_offer.offerCategory = offer.get('offerCategory')
168
        app_offer.promoImage = input_json.get('promoImage')
16573 manish.sha 169
        app_offer.ratings = offer.get('appRating')
170
        app_offer.downloads = offer.get('appDownloads')
171
        app_offer.image_url = offer.get('iconUrl')
16537 kshitij.so 172
    else:
173
        try:
174
            app_offer.offer_price = float(offer['offerPrice'])
175
        except:
176
            app_offer.offer_price = 0.0
177
        app_offer.user_payout = .8 * app_offer.offer_price
178
        app_offer.description = input_json.get('description')
179
        app_offer.shortDescription = offer.get('shortDesc')
180
        app_offer.longDescription = offer.get('longDesc')
16578 manish.sha 181
        app_offer.link = offer.get('url')
16537 kshitij.so 182
        app_offer.offerCategory = offer.get('offerCategory')
183
        app_offer.promoImage = input_json.get('promoImage')
16573 manish.sha 184
        app_offer.ratings = offer.get('appRating')
185
        app_offer.downloads = offer.get('appDownloads')
186
        app_offer.image_url = offer.get('iconUrl')
16537 kshitij.so 187
    session.commit()
16595 manish.sha 188
    '''
16685 manish.sha 189
    session.commit()
190
 
16537 kshitij.so 191
def markOfferAsInactive():
16540 kshitij.so 192
    all_active_offers = app_offers.query.filter(app_offers.affiliate_id==AFFILIATE_ID).filter(~app_offers.affiliate_offer_id.in_(ACTIVE_OFFERS)).filter(app_offers.offer_active==True).all()
16537 kshitij.so 193
    for active_offer in all_active_offers:
194
        active_offer.offer_active = False
195
    session.commit()
196
 
197
 
198
 
199
 
200
 
201
def main():
202
    try:
203
        dumpOffers()
204
        markOfferAsInactive()
205
    finally:
206
        session.close()
207
 
208
if __name__ == '__main__':
209
    main()