Subversion Repositories SmartDukaan

Rev

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

Rev 8020 Rev 12691
Line 9... Line 9...
9
from email.mime.multipart import MIMEMultipart
9
from email.mime.multipart import MIMEMultipart
10
from email.mime.text import MIMEText
10
from email.mime.text import MIMEText
11
from shop2020.helpers.impl import DataService
11
from shop2020.helpers.impl import DataService
12
from shop2020.helpers.impl.DataService import Message, UserEmail, EntitiesShared, \
12
from shop2020.helpers.impl.DataService import Message, UserEmail, EntitiesShared, \
13
    Report, ReportRoleAuthority, CatalogDashboardUser, UserEmailArchive, QuickLink, \
13
    Report, ReportRoleAuthority, CatalogDashboardUser, UserEmailArchive, QuickLink, \
14
    AgentWarehouseMapping
14
    AgentWarehouseMapping, UserSms, UserSmsInfo, UserSmsArchive
15
from shop2020.helpers.impl.model.Agent import Agent
15
from shop2020.helpers.impl.model.Agent import Agent
16
from shop2020.helpers.impl.model.DashboardUser import DashboardUser
16
from shop2020.helpers.impl.model.DashboardUser import DashboardUser
17
from shop2020.thriftpy.utils.ttypes import HelperServiceException, Mail, \
17
from shop2020.thriftpy.utils.ttypes import HelperServiceException, Mail, \
18
    Message as Msg
18
    Message as Msg, SmsStatus, SmsType, SmsDeliveryStatus
19
from shop2020.utils.Utils import log_entry, to_py_date
19
from shop2020.utils.Utils import log_entry, to_py_date
20
from sqlalchemy.orm import query
20
from sqlalchemy.orm import query
-
 
21
from sqlalchemy.orm.exc import NoResultFound, MultipleResultsFound
-
 
22
from sqlalchemy.sql import func
-
 
23
from sqlalchemy.sql.expression import and_, or_, desc, not_, distinct, cast, \
-
 
24
    between
21
from string import Template
25
from string import Template
22
import datetime
26
import datetime
23
import os
27
import os
24
import smtplib
28
import smtplib
25
from shop2020.clients.CatalogClient import CatalogClient
29
from shop2020.clients.CatalogClient import CatalogClient
Line 268... Line 272...
268
            warehouseIds.append(mapping.warehouseId)
272
            warehouseIds.append(mapping.warehouseId)
269
        except:
273
        except:
270
            raise HelperServiceException(108, "Exception while getting warehouseIds for Agent")
274
            raise HelperServiceException(108, "Exception while getting warehouseIds for Agent")
271
    return warehouseIds
275
    return warehouseIds
272
 
276
 
-
 
277
def save_user_sms_for_sending(userId, mobileNo, text, type):
-
 
278
    userSms = UserSms()
-
 
279
    userSms.user_id = userId
-
 
280
    userSms.createdTimestamp = datetime.datetime.now()
-
 
281
    userSms.mobileNumber = mobileNo
-
 
282
    userSms.attempts = 0
-
 
283
    userSms.smsText = text
-
 
284
    userSms.type = type
-
 
285
    userSms.status = SmsStatus.IN_PROCESS
-
 
286
    userSms.deliveryStatus = SmsDeliveryStatus.NOT_SENT
-
 
287
    session.commit()
-
 
288
    return userSms.id
-
 
289
    
-
 
290
def get_sms_to_be_sent():
-
 
291
    print "get_emails_to_be_sent"
-
 
292
    return UserSms.query.filter(UserSms.deliveryStatus==SmsDeliveryStatus.NOT_SENT).all()
-
 
293
 
-
 
294
def mark_sms_as_sent(smsId, status, responseId, responseText):
-
 
295
    sms = UserSms.get_by(id = smsId)
-
 
296
    if sms:
-
 
297
        sms.attempts = sms.attempts+1
-
 
298
        sms.status = status
-
 
299
        sms.responseId = responseId
-
 
300
        sms.responseText = responseText
-
 
301
        session.commit()
-
 
302
    query = 'INSERT INTO ' + str(UserSmsArchive.table) + ' (select * from ' + str(UserSms.table) + ' where id = ' + str(smsId) + ')'
-
 
303
    session.execute(query, mapper=UserSmsArchive)
-
 
304
    if sms:
-
 
305
        sms.delete()
-
 
306
    session.commit()
-
 
307
    
-
 
308
def mark_sms_as_retry(smsId, status, responseId, responseText):
-
 
309
    sms = UserSms.get_by(id==smsId)
-
 
310
    if sms:
-
 
311
        if sms.attempts<3:
-
 
312
            sms.attempts = sms.attempts+1
-
 
313
            sms.status = status
-
 
314
            sms.responseId = responseId
-
 
315
            sms.responseText = responseText
-
 
316
            session.commit()
-
 
317
            return True
-
 
318
        else:
-
 
319
            return False
-
 
320
    else:
-
 
321
        return False
-
 
322
 
-
 
323
def add_user_sms_info(userSms_Info):
-
 
324
    userSmsInfo = UserSmsInfo()
-
 
325
    userSmsInfo.userId = userSms_Info.userId
-
 
326
    userSmsInfo.mobileNo = userSms_Info.mobileNo
-
 
327
    userSmsInfo.createdTimestamp = to_py_date(userSms_Info.createdTimestamp)
-
 
328
    userSmsInfo.updateTimestamp = to_py_date(userSms_Info.updateTimestamp)
-
 
329
    userSmsInfo.dailyCount = 0
-
 
330
    userSmsInfo.weeklyCount = 0
-
 
331
    userSmsInfo.dndStatus = False
-
 
332
    userSmsInfo.smsSubscribed = True
-
 
333
    session.commit()
-
 
334
    
-
 
335
def update_user_sms_info(userSms_Info):
-
 
336
    userSmsInfo = UserSmsInfo.query.filter(UserSmsInfo.userId == userSms_Info.userId).first()
-
 
337
    if userSmsInfo:
-
 
338
        userSmsInfo.mobileNo = userSms_Info.mobileNo
-
 
339
        userSmsInfo.dndStatus = userSms_Info.dndStatus
-
 
340
        userSmsInfo.smsSubscribed = userSms_Info.smsSubscribed
-
 
341
        userSmsInfo.dailyCount = userSms_Info.dailyCount
-
 
342
        userSmsInfo.weeklyCount = userSmsInfo.weeklyCount
-
 
343
        userSmsInfo.updateTimestamp = datetime.datetime.now()
-
 
344
        session.commit()
-
 
345
        return True
-
 
346
    else:
-
 
347
        return False
-
 
348
    
-
 
349
def get_user_sms_info(userId):
-
 
350
    return UserSmsInfo.query.filter(UserSmsInfo.userId == userId).first()
-
 
351
 
-
 
352
def get_all_users_sms_info(dndStatus, smsSubscribed):
-
 
353
    print 'get all users sms infos'
-
 
354
    return UserSmsInfo.query.filter(UserSmsInfo.dndStatus == dndStatus).filter(UserSmsInfo.smsSubscribed == smsSubscribed).all()
-
 
355
 
-
 
356
def list_sms_to_get_delivery_info():
-
 
357
    print 'get all message waiting for delivery status'
-
 
358
    return UserSms.query.filter(or_(UserSms.deliveryStatus== SmsDeliveryStatus.SENT_TO_OPERATOR, UserSms.deliveryStatus== SmsDeliveryStatus.SUBMITTED_TO_SMSC)).all()
-
 
359
 
-
 
360
def mark_messages_as_sent_to_operator(userSmsList):
-
 
361
    for userSms in userSmsList:
-
 
362
        sms = UserSms.get_by(id==userSms.id)
-
 
363
        if sms:
-
 
364
            sms.deliveryStatus = userSms.deliveryStatus
-
 
365
            sms.attempts = userSms.attempts
-
 
366
            sms.responseId = userSms.responseId
-
 
367
            sms.responseText = userSms.responseText
-
 
368
            session.commit()
-
 
369
    return True
-
 
370
        
-
 
371
def mark_messages_as_submitted_to_smsc(userSmsList):
-
 
372
    for userSms in userSmsList:
-
 
373
        sms = UserSms.get_by(id==userSms.id)
-
 
374
        if sms:
-
 
375
            sms.deliveryStatus = userSms.deliveryStatus
-
 
376
            sms.responseText = userSms.responseText
-
 
377
            session.commit()
-
 
378
    return True
-
 
379
 
-
 
380
def mark_messages_as_sent(userSmsList):
-
 
381
    for userSms in userSmsList:
-
 
382
        sms = UserSms.get_by(id==userSms.id)
-
 
383
        if sms:
-
 
384
            sms.deliveryStatus = userSms.deliveryStatus
-
 
385
            sms.responseText = userSms.responseText
-
 
386
            sms.status = userSms.status
-
 
387
            session.commit()
-
 
388
        query = 'INSERT INTO ' + str(UserSmsArchive.table) + ' (select * from ' + str(UserSms.table) + ' where id = ' + str(smsId) + ')'
-
 
389
        session.execute(query, mapper=UserSmsArchive)
-
 
390
        if sms:
-
 
391
            sms.delete()
-
 
392
        session.commit()
-
 
393
    return True
-
 
394
 
-
 
395
def mark_messages_as_retry(userSmsList):
-
 
396
    for userSms in userSmsList:
-
 
397
        sms = UserSms.get_by(id==userSms.id)
-
 
398
        if sms:
-
 
399
            sms.deliveryStatus = userSms.deliveryStatus
-
 
400
            sms.responseText = userSms.responseText
-
 
401
            sms.status = userSms.status
-
 
402
            session.commit()
-
 
403
        query = 'INSERT INTO ' + str(UserSmsArchive.table) + ' (select * from ' + str(UserSms.table) + ' where id = ' + str(smsId) + ')'
-
 
404
        session.execute(query, mapper=UserSmsArchive)
-
 
405
        if userSms.attempts < 3:
-
 
406
            new_sms_id= save_user_sms_for_sending(userSms.user_id, userSms.mobileNumber, userSms.smsText, userSms.type)
-
 
407
            new_sms = UserSms.get_by(id==new_sms_id)
-
 
408
            new_sms.status = SmsStatus.IN_PROCESS
-
 
409
            new_sms.attempts = userSms.attempts
-
 
410
            new_sms.deliveryStatus = SmsDeliveryStatus.NOT_SENT 
-
 
411
            session.commit()
-
 
412
        if sms:
-
 
413
            sms.delete()
-
 
414
        session.commit()
-
 
415
    return True
-
 
416
        
-
 
417
 
273
def close_session():
418
def close_session():
274
    if session.is_active:
419
    if session.is_active:
275
        print "session is active. closing it."
420
        print "session is active. closing it."
276
        session.close()
421
        session.close()
277
 
422