from crc.scripts.script import Script from crc.api.common import ApiError from crc import session from crc.models.email import EmailModel, EmailModelSchema from crc.services.email_service import EmailService import datetime class EmailData(Script): def get_description(self): return """This is my description""" def do_task_validate_only(self, task, study_id, workflow_id, *args, **kwargs): if 'email_id' in kwargs or 'workflow_spec_id' in kwargs: subject = 'My Test Email' recipients = 'user@example.com' content = "Hello" content_html = "

Hello

" email_model = EmailModel(subject=subject, recipients=recipients, content=content, content_html=content_html, timestamp=datetime.datetime.utcnow()) return EmailModelSchema(many=True).dump([email_model]) else: raise ApiError.from_task(code='missing_email_id', message='You must include an email_id or workflow_spec_id with the get_email_data script.', task=task) def do_task(self, task, study_id, workflow_id, *args, **kwargs): email_models = None email_data = None if 'email_id' in kwargs: email_models = session.query(EmailModel).filter(EmailModel.id == kwargs['email_id']).all() elif 'workflow_spec_id' in kwargs: email_models = session.query(EmailModel)\ .filter(EmailModel.study_id == study_id)\ .filter(EmailModel.workflow_spec_id == str(kwargs['workflow_spec_id']))\ .all() else: raise ApiError.from_task(code='missing_email_id', message='You must include an email_id or workflow_spec_id with the get_email_data script.', task=task) if email_models: email_data = EmailModelSchema(many=True).dump(email_models) return email_data