def test_delete_cascade(app): """Test that deletion of user, also removes profile.""" with app.app_context(): with db.session.begin_nested(): u = User(email='*****@*****.**') db.session.add(u) p = UserProfile(user=u, username="******") db.session.add(p) db.session.commit() assert UserProfile.get_by_userid(u.id) is not None db.session.delete(u) db.session.commit() assert UserProfile.get_by_userid(u.id) is None
def test_delete_cascade(app): """Test that deletion of user, also removes profile.""" with app.app_context(): with db.session.begin_nested(): u = User(email='*****@*****.**') db.session.add(u) p = UserProfile(user=u, username="******") db.session.add(p) db.session.commit() assert UserProfile.get_by_userid(u.id) is not None db.session.delete(u) db.session.commit() assert UserProfile.get_by_userid(u.id) is None
def notify_submission_created(record, coordinator_id, uploader, reviewer): coordinator = get_user_from_id(coordinator_id) if not coordinator: return site_url = current_app.config.get('SITE_URL', 'https://www.hepdata.net') name = coordinator.email coordinator_profile = UserProfile.get_by_userid(coordinator_id) if coordinator_profile: name = coordinator_profile.full_name collaboration = _get_collaboration(coordinator_id) message_body = render_template('hepdata_theme/email/created.html', name=name, actor=coordinator.email, collaboration=collaboration, uploader=uploader, reviewer=reviewer, article=record['recid'], title=record['title'], site_url=site_url, link=site_url + "/record/{0}".format(record['recid'])) create_send_email_task( coordinator.email, '[HEPData] Submission {0} has been created'.format(record['recid']), message_body)
def prepare(record_uuid: str, presentation: Presentation): if current_user.is_anonymous: user_meta = { 'id': None, 'email': None, 'login_ip': None, 'current_ip': str(request.remote_addr), 'roles': [], 'full_name': 'Anonymous', 'username': None } else: profile_meta = {} profile: UserProfile = UserProfile.get_by_userid(current_user.id) if profile: profile_meta = { 'full_name': profile.full_name, 'username': profile.username, } user_meta = { 'id': current_user.id, 'email': current_user.email, 'current_ip': str(request.remote_addr), 'login_ip': str(current_user.current_login_ip), 'roles': [{ 'id': role.id, 'name': role.name } for role in current_user.roles] } user_meta.update(profile_meta) headers = {k: v for k, v in request.headers} try: result = presentation.prepare(record_uuid, user_meta, headers, delayed=True) if isinstance(result, AsyncResult): return jsonify({'job_id': result.task_id}) else: return jsonify({'job_id': result}) except WorkflowsPermissionError as e: logger.exception('Exception detected in prepare') abort(403, e) except WorkflowDefinitionError: logger.exception('Exception detected in prepare') abort( 400, 'There was an error in the {} workflow definition'.format( presentation.name))
def success_response(self, user): """Return response with current user's information.""" from invenio_app_ils.proxies import current_app_ils user_payload = default_user_payload(user) user_payload["roles"] = self.get_user_roles() # fetch user profile for extra info user_profile = UserProfile.get_by_userid(user.id) loc_pid_value, _ = current_app_ils.get_default_location_pid user_payload.update( dict( username=user_profile.username, full_name=user_profile.full_name, location_pid=loc_pid_value, )) return jsonify(user_payload), 200
def send_coordinator_notification_email(recid, version, user, message=None): """ :param recid: :param user: user object :param message: message to send :return: """ hepsubmission = get_latest_hepsubmission(publication_recid=recid) coordinator = get_user_from_id(hepsubmission.coordinator) if not coordinator: raise NoParticipantsException() site_url = current_app.config.get('SITE_URL', 'https://www.hepdata.net') record = get_record_by_id(recid) name = coordinator.email coordinator_profile = UserProfile.get_by_userid(hepsubmission.coordinator) if coordinator_profile: name = coordinator_profile.full_name collaboration = _get_collaboration(hepsubmission.coordinator) message_body = render_template('hepdata_theme/email/passed_review.html', name=name, actor=user.email, collaboration=collaboration, article=recid, version=version, message=message, title=record['title'], site_url=site_url, link=site_url + "/record/{0}".format(recid), dashboard_link=site_url + "/dashboard") create_send_email_task( coordinator.email, '[HEPData] Submission {0} is ready to be finalised'.format(recid), message_body)