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))
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)
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)
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))