예제 #1
0
def _approval_preparation(context, pkg, message, data={}):
    reason = data.get('reason', 'Not defined')
    subject = data.get('subject', '')
    author = model.User.get(pkg['creator_user_id'])
    type = 'SEED dataset'
    if workflow_helpers.get_original_dataset_id_from_package(pkg):
        type = 'revision for SEED dataset'
    if 'dataset_url' not in data:
        dataset_url = helpers.url_for('dataset_read',
                                      id=pkg['id'],
                                      qualified=True)
    else:
        dataset_url = data['dataset_url']

    try:
        if author is None:
            raise Exception('User <{0}> not found'.format(
                pkg['creator_user_id']))
        if not author.email:
            raise Exception('User <{0}> has no email'.format(author.name))

        mailer.mail_recipient(
            author.fullname or author.name, author.email, subject,
            message.format(type=type,
                           title=pkg['title'],
                           dataset_url=dataset_url,
                           admin=context['user'],
                           reason=reason))
    except Exception as e:
        log.error('[workflow email] {0}'.format(e))
예제 #2
0
def approve_approval(context, pkg, data={}):
    message = ('Your {type} {title} ({dataset_url}) was'
               ' approved for publication by {admin}.')
    data['subject'] = 'SEED dataset approval'
    original_id = workflow_helpers.get_original_dataset_id_from_package(pkg)
    if original_id:
        data['dataset_url'] = helpers.url_for('dataset_read',
                                              id=original_id,
                                              qualified=True)

    return _approval_preparation(context, pkg, message, data)
예제 #3
0
def create_dataset_revision(context, data_dict):
    workflow, _ = workflow_helpers.get_workflow_from_package(data_dict)
    stage = workflow_helpers.get_stage_from_package(data_dict)

    if stage != workflow.finish:
        return _success(False, 'Dataset must be published')
    if workflow_helpers.get_original_dataset_id_from_package(data_dict):
        return _success(False, 'Cannot create revision of revision')
    if workflow_helpers.get_dataset_revision_query(data_dict['id']).count():
        return _success(False, 'Dataset already has revision')
    return authz.is_authorized('package_create', context, data_dict)
예제 #4
0
def submit_for_approval(context, pkg):
    site_admin_email = workflow_helpers.get_site_admin_email()
    dataset_type = 'SEED dataset'
    if workflow_helpers.get_original_dataset_id_from_package(pkg):
        dataset_type = 'revision for SEED dataset'
    if site_admin_email:
        try:
            mailer.mail_recipient(
                'Admin', site_admin_email, 'Submission for approval',
                ('A new {type} {title} ({dataset_url}) has'
                 ' been submitted for publication approval by {creator}.'
                 ).format(type=dataset_type,
                          title=pkg['title'],
                          dataset_url=helpers.url_for('dataset_read',
                                                      id=pkg['id'],
                                                      qualified=True),
                          creator=context['user']))
        except Exception as e:
            log.error('[workflow email] {0}'.format(e))