| 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 |
|