mirror of
https://github.com/fuckpiracyshield/service.git
synced 2024-05-19 21:46:17 +02:00
67 lines
1.7 KiB
Python
67 lines
1.7 KiB
Python
from piracyshield_service.task.base import BaseTask
|
|
|
|
from piracyshield_data_model.ticket.status.model import TicketStatusModel
|
|
|
|
from piracyshield_data_storage.ticket.storage import TicketStorage
|
|
|
|
from piracyshield_service.log.ticket.create import LogTicketCreateService
|
|
|
|
class TicketInitializeTask(BaseTask):
|
|
|
|
"""
|
|
Operations scheduled after the creation of a ticket.
|
|
"""
|
|
|
|
ticket_id = None
|
|
|
|
ticket_storage = None
|
|
|
|
log_ticket_create_service = None
|
|
|
|
def __init__(self, ticket_id: str):
|
|
super().__init__()
|
|
|
|
self.ticket_id = ticket_id
|
|
|
|
def run(self) -> bool:
|
|
"""
|
|
Starts the operations for the new ticket.
|
|
The status gets set to `open` as we make it visible for API pulls and notifications
|
|
"""
|
|
|
|
# TODO: must check if the ticket exists.
|
|
|
|
# change status
|
|
self.ticket_storage.update_status(
|
|
ticket_id = self.ticket_id,
|
|
ticket_status = TicketStatusModel.OPEN.value
|
|
)
|
|
|
|
def before_run(self):
|
|
"""
|
|
Initialize required modules.
|
|
"""
|
|
self.ticket_storage = TicketStorage()
|
|
|
|
self.log_ticket_create_service = LogTicketCreateService()
|
|
|
|
def after_run(self):
|
|
# log the operation
|
|
self.log_ticket_create_service.execute(
|
|
ticket_id = self.ticket_id,
|
|
message = f'Changed status to `{TicketStatusModel.OPEN.value}`.'
|
|
)
|
|
|
|
def on_failure(self):
|
|
self.logger.error(f'Could not update the ticket `{self.ticket_id}`')
|
|
|
|
self.ticket_storage.update_status(
|
|
ticket_id = self.ticket_id,
|
|
ticket_status = TicketStatusModel.CREATED.value
|
|
)
|
|
|
|
def ticket_initialize_task_caller(**kwargs):
|
|
t = TicketInitializeTask(**kwargs)
|
|
|
|
return t.execute()
|