Exemplo n.º 1
0
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
Exemplo n.º 3
0
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)
Exemplo n.º 4
0
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))
Exemplo n.º 5
0
    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
Exemplo n.º 6
0
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)