Source code for submissions
import sqlalchemy as sql
from celery import shared_task
from celery.utils.log import get_task_logger
from db import FLASK_DB
from app.model.orm import Submission, Study
_LOGGER = get_task_logger(__name__)
@shared_task
[docs]
def export_submission_data(submission_id):
db_session = FLASK_DB.session
_export_submission_data(db_session, submission_id)
@shared_task
[docs]
def publish_eligible_studies():
db_session = FLASK_DB.session
_publish_eligible_studies(db_session)
def _export_submission_data(db_session, submission_id):
submission = db_session.get(Submission, submission_id)
message = "Study update."
if submission.changelogText:
changelog_text = " ".join(submission.changelogText.splitlines())
message += f" Changes: {changelog_text}"
submission.export_data(message=message)
def _publish_eligible_studies(db_session):
unpublished_studies = db_session.scalars(
sql.select(Study)
.where(Study.embargoExpiresAt.is_not(None))
).all()
for study in unpublished_studies:
if study.isPublishable:
_LOGGER.info(f"Publishing study: {study.publicId}")
study.publish(db_session)
db_session.add(study)
if submission := study.lastSubmission:
_LOGGER.info(f"Exporting data for study: {study.publicId}")
submission.export_data(message="Study published")
db_session.commit()