{% extends "layouts/dashboard.html" %} {% block extra_head %} {% endblock %} {% block breadcrumbs %} {% endblock %} {% block content %}

Your profile

Manage your personal details and preferences.

Two-factor settings
{% include "components/rims_page_intro.html" with eyebrow="Account" heading="A complete profile unlocks the right opportunities." description="Your name, country, and degree level help match you to grant calls, mentorship requests, and learning paths. Keep contact details current so award notices and deadline reminders reach you." %}
{% if next %}
Complete the fields below to continue — you'll be returned to where you left off once your profile is complete.
{% endif %}
{% csrf_token %} {% if next %}{% endif %} {% if form.non_field_errors %}
{{ form.non_field_errors }}
{% endif %}
{# ── Personal information ── #}
{{ form.first_name }} {% if form.first_name.errors %}

{{ form.first_name.errors.0 }}

{% endif %}
{{ form.last_name }} {% if form.last_name.errors %}

{{ form.last_name.errors.0 }}

{% endif %}
{{ form.phone }} {% if form.phone.errors %}

{{ form.phone.errors.0 }}

{% endif %}
{# ── Profile ── #}

A short introduction displayed on your public profile.

{% if form.bio.errors %}

{{ form.bio.errors.0 }}

{% endif %}
{% if form.instance.avatar %}
Current photo Current photo — upload a new file to replace it.
{% endif %} {{ form.avatar }}

JPEG or PNG, max 2 MB.

{% if form.avatar.errors %}

{{ form.avatar.errors.0 }}

{% endif %}
{{ form.country }}

Search and select your country.

{% if form.country.errors %}

{{ form.country.errors.0 }}

{% endif %}
{{ form.degree_level }}

Used for automated eligibility on some grant calls.

{% if form.degree_level.errors %}

{{ form.degree_level.errors.0 }}

{% endif %}
{# ── Professional background (UR006) ── #}
{{ form.professional_background }}

A short narrative — surfaced to mentors and instructors when matching is requested.

{% if form.professional_background.errors %}

{{ form.professional_background.errors.0 }}

{% endif %}
{{ form.areas_of_interest }}

Comma-separated topics — drives course recommendations and mentor suggestions.

{% if form.areas_of_interest.errors %}

{{ form.areas_of_interest.errors.0 }}

{% endif %}
{# ── Demographics (optional, used for AR010 equity indicators) ── #}
Optional

These fields help RUFORUM measure equitable participation across our programmes. They are used only in aggregate reporting — never displayed on your public profile or shared with reviewers.

{{ form.gender }}

Self-reported. Leave blank or pick “Prefer not to say”.

{% if form.gender.errors %}

{{ form.gender.errors.0 }}

{% endif %}
{{ form.date_of_birth }}

Used to derive the youth participation indicator (≤35 years).

{% if form.date_of_birth.errors %}

{{ form.date_of_birth.errors.0 }}

{% endif %}
{# ── Preferences ── #}
{{ form.timezone }}

Used to show deadlines and dates in your local time.

{% if form.timezone.errors %}

{{ form.timezone.errors.0 }}

{% endif %}
{{ form.preferred_language }}

Sets the language for notifications and platform emails.

{% if form.preferred_language.errors %}

{{ form.preferred_language.errors.0 }}

{% endif %}
{# ── Actions ── #}
{# ── Academic qualifications (repeatable) ── #} {{ form.instance.qualifications|json_script:"qualifications-data" }}

Add every degree, diploma, or certificate — as many as apply.

{% if form.instance.qualifications %} {% for q in form.instance.qualifications %}

{{ q.qualification }}{% if q.field_of_study %} — {{ q.field_of_study }}{% endif %}

{{ q.institution }}{% if q.year %} · {{ q.year }}{% endif %}

{% url 'accounts:qualification_delete' entry_id=q.id as qual_delete_url %} {% include "components/confirm_button.html" with trigger_label="Delete" trigger_class="btn-secondary btn-sm !text-red-700" action_url=qual_delete_url title="Delete this qualification?" lede="This can't be undone." danger=True confirm_label="Delete" %}
{% endfor %} {% else %}

No qualifications added yet.

{% endif %}
{# ── Work experience (repeatable) ── #} {{ form.instance.experience|json_script:"experience-data" }}

Add every relevant role — as many as apply.

{% if form.instance.experience %} {% for x in form.instance.experience %}

{{ x.title }} — {{ x.organization }}

{% if x.start_year %}{{ x.start_year }} – {% endif %}{% if x.is_current %}Present{% elif x.end_year %}{{ x.end_year }}{% endif %}

{% if x.description %}

{{ x.description }}

{% endif %}
{% url 'accounts:experience_delete' entry_id=x.id as exp_delete_url %} {% include "components/confirm_button.html" with trigger_label="Delete" trigger_class="btn-secondary btn-sm !text-red-700" action_url=exp_delete_url title="Delete this experience?" lede="This can't be undone." danger=True confirm_label="Delete" %}
{% endfor %} {% else %}

No experience added yet.

{% endif %}
{# ── Privacy / visibility (WS5.2 / FRREP-UR012) ── #}
{% csrf_token %}

Choose what other learners and instructors see on your public profile. Demographic fields (gender, date of birth) are never shown publicly — they only feed aggregate equity reporting.

{# Master toggle — appearance in directory / discovery #} {# Per-field toggles #}
{% for field in visibility_form %} {% if field.name != "appear_in_directory" %} {% endif %} {% endfor %}
{# ── Sidebar ── #}
{# ── Profile completeness (FRREP-UR006) ── #}
{{ completion.percent }}%
{% if completion.percent == 100 %}

Your profile is complete.

{% else %}

Finish these to unlock matching and eligibility:

{% endif %}
    {% for item in completion.items %}
  • {% if item.done %} {{ item.label|capfirst }} {% else %} {{ item.label|capfirst }} {% endif %}
  • {% endfor %}
Email
{{ request.user.email }}
Role
{{ request.user.get_role_display|default:"—" }}
Member since
{{ request.user.date_joined|date:"N j, Y" }}
{% endblock %} {% block extra_js %} {% include "components/select2_auto_init.html" %} {% endblock %}