def __create_defendants_and_services(services): for data in services: # For identified (service, defendant, items) tuple data['defendant'] = database.get_or_create_defendant(data['defendant']) data['service'] = database.get_or_create_service(data['service'])
def __create_contact_tickets(services, campaign_name, ip_address, category, email_subject, email_body, user): # Create fake report report_subject = 'Campaign %s for ip %s' % (campaign_name, ip_address) report_body = 'Campaign: %s\nIP Address: %s\n' % (campaign_name, ip_address) filename = hashlib.sha256(report_body.encode('utf-8')).hexdigest() __save_email(filename, report_body) for data in services: # For identified (service, defendant, items) tuple actions = [] # Create report report = Report.objects.create(**{ 'provider': database.get_or_create_provider('mass_contact'), 'receivedDate': datetime.now(), 'subject': report_subject, 'body': report_body, 'category': category, 'filename': filename, 'status': 'Archived', 'defendant': database.get_or_create_defendant(data['defendant']), 'service': database.get_or_create_service(data['service']), }) database.log_new_report(report) # Create item item_dict = {'itemType': 'IP', 'report_id': report.id, 'rawItem': ip_address} item_dict.update(utils.get_reverses_for_item(ip_address, nature='IP')) ReportItem.objects.create(**item_dict) # Create ticket ticket = database.create_ticket( report.defendant, report.category, report.service, priority=report.provider.priority, attach_new=False, ) database.add_mass_contact_tag(ticket, campaign_name) actions.append({'ticket': ticket, 'action': 'create_masscontact', 'campaign_name': campaign_name}) actions.append({'ticket': ticket, 'action': 'change_treatedby', 'new_value': user.username}) report.ticket = ticket report.save() Logger.debug(unicode( 'ticket %d successfully created for (%s, %s)' % (ticket.id, report.defendant.customerId, report.service.name) )) # Send email to defendant __send_mass_contact_email(ticket, email_subject, email_body) actions.append({'ticket': ticket, 'action': 'send_email', 'email': report.defendant.details.email}) # Close ticket/report ticket.resolution = Resolution.objects.get(codename=settings.CODENAMES['fixed_customer']) ticket.previousStatus = ticket.status ticket.status = 'Closed' ticket.save() actions.append({ 'ticket': ticket, 'action': 'change_status', 'previous_value': ticket.previousStatus, 'new_value': ticket.status, 'close_reason': ticket.resolution.codename }) for action in actions: database.log_action_on_ticket(**action)