from django.db import models from django.utils.translation import gettext_lazy as _ from lib.models.base import MetaDataModel from apps.employee.models import Employee from jsonfield import JSONField import collections # Create your models here. class Schedule(MetaDataModel): class Meta: verbose_name = _('schedule') verbose_name_plural = _('schedules') employee = models.ForeignKey(Employee, on_delete=models.CASCADE, help_text=_('Select the employee that is responsible for this schedule request')) name = models.CharField(_('Name'), max_length=100, help_text=_('Name of the schedule')) email = models.CharField(_('Email address'), max_length=100, help_text=_('Email address where the results will be sent to.')) planning_source = JSONField(_('Schedule input'), blank=True, load_kwargs={'object_pairs_hook': collections.OrderedDict}, help_text=_('The schedule input in JSON format based on the form data')) planning_peregrine = models.TextField(_('Peregrine input'), blank=True, help_text=_('This is the translated content from the source for use with Peregrine cluster')) peregrine_accepted = models.BooleanField(_('Peregrine accepted'),default=False, help_text=_('When true, the Peregrine cluster has picked up the job.')) peregrine_result = JSONField(_('Peregrine JSON output'), blank=True, load_kwargs={'object_pairs_hook': collections.OrderedDict}, help_text=_('The results from the Peregrine job in JSON')) output_peregrine = models.BinaryField(_('Peregrine binary output'), blank=True, help_text=_('This is the output in binary format from the Peregrine cluster')) report_sent = models.DateTimeField(_('Report is send to user'), blank=True, null=True, help_text=_('The date and time when the report has sended to the user.')) peregrine_output_log = models.TextField(_('Peregrine logging'), blank=True, help_text=_('Here you can see the logging of the Peregrine job.')) def __str__(self): """str: Returns a readable name for the schedule. Format is [schedule_name] (employee_name).""" return '{} ({})'.format(self.name, self.employee)