diff --git a/aleksis/core/migrations/0023_add_permissions_person.py b/aleksis/core/migrations/0023_add_permissions_person.py index 7b4ffb22f4f290b96ade618336808c0f25c08be2..2f73d8d5e7d450ea0afca7ba836a3ee08088a0bf 100644 --- a/aleksis/core/migrations/0023_add_permissions_person.py +++ b/aleksis/core/migrations/0023_add_permissions_person.py @@ -12,6 +12,6 @@ class Migration(migrations.Migration): operations = [ migrations.AlterModelOptions( name='person', - options={'ordering': ['last_name', 'first_name'], 'permissions': (('view_address', 'Can view address'), ('view_contact_details', 'Can view contact details'), ('view_photo', 'Can view photo'), ('view_person_groups', 'Can view persons groups')), 'verbose_name': 'Person', 'verbose_name_plural': 'Persons'}, + options={'ordering': ['last_name', 'first_name'], 'permissions': (('view_address', 'Can view address'), ('view_contact_details', 'Can view contact details'), ('view_photo', 'Can view photo'), ('view_personal_details', 'Can view personal details'), ('view_person_groups', 'Can view persons groups')), 'verbose_name': 'Person', 'verbose_name_plural': 'Persons'}, ), ] diff --git a/aleksis/core/models.py b/aleksis/core/models.py index b13cd66278cc9aa0910e6a0b791169676e250530..0ea49774c79d08bcd15d8635fec71b3831e99cdd 100644 --- a/aleksis/core/models.py +++ b/aleksis/core/models.py @@ -100,6 +100,7 @@ class Person(ExtensibleModel): ("view_contact_details", _("Can view contact details")), ("view_photo", _("Can view photo")), ("view_person_groups", _("Can view persons groups")), + ("view_personal_details", _("Can view personal details")), ) icon_ = "person" diff --git a/aleksis/core/rules.py b/aleksis/core/rules.py index ef6740807a1d05ad6b886d7d1f661866e7d4f987..234d6f80159442633f3e45fbc753fe7ad39de6c4 100644 --- a/aleksis/core/rules.py +++ b/aleksis/core/rules.py @@ -131,3 +131,9 @@ add_perm("core.view_people_menu", has_person & (view_persons_predicate | view_gr # View admin menu view_admin_menu_predicate = has_person & (manage_data_predicate | manage_school_predicate | impersonate_predicate | view_system_status_predicate | view_announcements_predicate) add_perm("core.view_admin_menu", view_admin_menu_predicate) + +# View person personal details +view_personal_details_predicate = has_person & ( + has_global_perm("core.view_personal_details") | has_object_perm("core.view_personal_details") | is_current_person +) +add_perm("core.view_personal_details", view_personal_details_predicate) diff --git a/aleksis/core/templates/core/person_full.html b/aleksis/core/templates/core/person_full.html index d018cc15bac07a8e74df41298dff20358f2107e9..cf584d8ae87e203936c1c077a6a4345c06661cb9 100644 --- a/aleksis/core/templates/core/person_full.html +++ b/aleksis/core/templates/core/person_full.html @@ -77,12 +77,15 @@ <td colspan="3">{{ person.email }}</td> </tr> {% endif %} - <tr> - <td> - <i class="material-icons small">cake</i> - </td> - <td colspan="3">{{ person.date_of_birth|date }}</td> - </tr> + {% has_perm 'core.view_personal_details' user person as can_view_personal_details %} + {% if can_view_personal_details %} + <tr> + <td> + <i class="material-icons small">cake</i> + </td> + <td colspan="3">{{ person.date_of_birth|date }}</td> + </tr> + {% endif %} </table> </div> </div>