Rev 16323 | Blame | Compare with Previous | Last modification | View Log | RSS feed
#!/usr/bin/pythonfrom elixir import *from dtr.storage import DataServicefrom dtr.storage.DataService import Feedbacks, Usersfrom shop2020.clients.CRMClient import CRMClientfrom shop2020.clients.UserClient import UserClientfrom shop2020.utils.Utils import to_java_date, to_py_datefrom shop2020.thriftpy.crm.ttypes import SearchFilter, TicketCategory, Ticket, \Activity, TicketPriority, TicketStatus, ActivityTypefrom string import Templateimport sysimport tracebackDataService.initialize(db_hostname='192.168.158.89')customerFeedbacks = []class __Feedback:def __init__(self, feedbackObj, userObj):self.id = feedbackObj.idself.user_id = feedbackObj.user_idself.email = feedbackObj.emailself.subject = feedbackObj.subjectself.message = feedbackObj.messageself.created = to_java_date(feedbackObj.created)self.mobile = userObj.mobile_numberself.customerName = userObj.first_name +' '+ userObj.last_namedef getAllFeedbacks():global customerFeedbacksfeedbacksAndUsers = session.query(Users,Feedbacks).join((Feedbacks,Users.id==Feedbacks.user_id)).filter(Feedbacks.isTicketCreated==False).all()for feedbackNUser in feedbacksAndUsers:feedback = feedbackNUser[1]user = feedbackNUser[0]feedbackInfo = __Feedback(feedback, user)customerFeedbacks.append(feedbackInfo)def createTicketsForCustomerQueries(customerFeedbacks):crmServiceClient = CRMClient().get_client()userServiceClient = UserClient().get_client()for customerFeedBack in customerFeedbacks:ticket = Ticket()activity = Activity()ticket.creatorId = 1user = userServiceClient.getUserByEmail(customerFeedBack.email)if 'Cant see my order' in customerFeedBack.subject:ticket.category = TicketCategory.PROFITMANDI_ORDER_NOT_SEENticket.priority = TicketPriority.HIGHelif 'Cashback' in customerFeedBack.subject:ticket.category = TicketCategory.PROFITMANDI_CASHBACKticket.priority = TicketPriority.HIGHelif 'Feedback' in customerFeedBack.subject:ticket.category = TicketCategory.PROFITMANDI_FEEDBACKticket.priority = TicketPriority.MEDIUMelif 'Recharge Related' in customerFeedBack.subject:ticket.category = TicketCategory.PROFITMANDI_RECHARGE_ISSUEticket.priority = TicketPriority.HIGHelse:ticket.category = TicketCategory.PROFITMANDI_OTHERticket.priority = TicketPriority.MEDIUMticket.description = 'User Specified Subject :- '+ customerFeedBack.subject + ' | ' + customerFeedBack.messageticket.customerEmailId = customerFeedBack.emailif user is not None and user.userId !=-1:ticket.customerId = user.userIdticket.status = TicketStatus.OPENticket.openDate = customerFeedBack.createdticket.customerMobileNumber = customerFeedBack.mobileticket.customerName = customerFeedBack.customerNameactivity.creatorId = 1activity.ticketAssigneeId = ticket.assigneeIdactivity.type = ActivityType.RECEIVED_EMAIL_FROM_CUSTOMERactivity.description = 'User Specified Subject :- '+ customerFeedBack.subject + ' | ' + customerFeedBack.messageactivity.ticketCategory = ticket.categoryactivity.ticketDescription = ticket.descriptionactivity.ticketPriority = ticket.priorityactivity.ticketStatus = ticket.statusactivity.customerEmailId = customerFeedBack.emailif user is not None and user.userId !=-1:activity.customerId = user.userIdactivity.customerName = customerFeedBack.customerNameactivity.customerMobileNumber = customerFeedBack.mobileactivity.creationTimestamp = customerFeedBack.createdactivity.customerEmailId= customerFeedBack.emailif not crmServiceClient.isAlive():crmServiceClient = CRMClient().get_client()ticketId = crmServiceClient.insertTicket(ticket, activity)if ticketId >0:feedback = Feedbacks.get_by(id = customerFeedBack.id)feedback.isTicketCreated = Truesession.commit()def main():try:getAllFeedbacks()createTicketsForCustomerQueries(customerFeedbacks)finally:session.close()if __name__ == '__main__':main()