Rev 14917 | Rev 14920 | Go to most recent revision | 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.assigneeId = 34ticket.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.id !=-1:ticket.customerId = user.idticket.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.id !=-1:activity.customerId = user.idactivity.customerName = customerFeedBack.customerNameactivity.customerMobileNumber = customerFeedBack.mobileactivity.creationTimestamp = customerFeedBack.createdactivity.userEmailId = 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()breakdef main():try:getAllFeedbacks()createTicketsForCustomerQueries(customerFeedbacks)finally:session.close()if __name__ == '__main__':main()