Loading resources/migrations/0020_project_admin_mail.py 0 → 100644 +18 −0 Original line number Diff line number Diff line # Generated by Django 3.2.2 on 2021-09-22 12:25 from django.db import migrations, models class Migration(migrations.Migration): dependencies = [ ('resources', '0019_alter_collection_project'), ] operations = [ migrations.AddField( model_name='project', name='admin_mail', field=models.EmailField(max_length=254, null=True), ), ] resources/models.py +4 −0 Original line number Diff line number Diff line Loading @@ -56,6 +56,7 @@ class Project(models.Model): label = models.TextField(unique=True) description = models.TextField() admin_mail = models.EmailField(null=True) def __str__(self): return self.label Loading Loading @@ -557,6 +558,9 @@ class Permission(models.Model): """ Format labels like so: [object type].[action] Permissions are NOT project-specific, they are tied to the API. Examples: - collection.delete - resource.add Loading rpc/methods.py +48 −3 Original line number Diff line number Diff line Loading @@ -11,6 +11,8 @@ from resources.models import ( Tag, Project, ProjectAccess, Role, Permission, APIKey, ) from django.contrib.auth.models import User Loading Loading @@ -74,7 +76,50 @@ def ping(user: User) -> str: ping.rpc_groups = ["Utilities"] def projects_permissions(user: User) -> List[Dict]: def list_permissions(user: User) -> List[Dict]: """ Lists all available permissions in the application: ``` [ {'id': 1, 'label': 'collection.add'}, {'id': 2, 'label': 'collection.read'}, {'id': 3, 'label': 'collection.write'}, {'id': 4, 'label': 'collection.delete'}, {'id': 5, 'label': 'resource.add'}, {'id': 6, 'label': 'resource.read'}, {'id': 7, 'label': 'resource.write'}, {'id': 8, 'label': 'resource.delete'}, {'id': 9, 'label': 'metadata.add'}, {'id': 10, 'label': 'metadata.read'}, {'id': 11, 'label': 'metadata.write'}, {'id': 12, 'label': 'metadata.delete'}, {'id': 13, 'label': 'metadataset.add'}, {'id': 14, 'label': 'metadataset.read'}, {'id': 15, 'label': 'metadataset.write'}, {'id': 16, 'label': 'metadataset.delete'}, {'id': 17, 'label': 'file.add'}, {'id': 18, 'label': 'file.read'}, {'id': 19, 'label': 'file.write'}, {'id': 20, 'label': 'file.delete'}, {'id': 21, 'label': 'tag.add'}, {'id': 22, 'label': 'tag.read'}, {'id': 23, 'label': 'tag.write'}, {'id': 24, 'label': 'tag.delete'}, {'id': 25, 'label': 'file.download_source'} ] ``` """ data = [] for perm in Permission.objects.all(): data.append(serializers.permission(perm)) return data list_permissions.rpc_groups = ["Access"] def projects_user_permissions(user: User) -> List[Dict]: """ Get all rights for the current user. Loading @@ -96,7 +141,7 @@ def projects_permissions(user: User) -> List[Dict]: return access_list projects_permissions.rpc_groups = ["Utilities"] projects_user_permissions.rpc_groups = ["Access"] def has_permission(user: User, project_id: int, permission: str) -> bool: Loading Loading @@ -269,7 +314,7 @@ def collections( pk=parent_id, deleted_at__isnull=True, project__projectaccess__user=user, project__project_access__role__permissions__label="collection.read", project__projectaccess__role__permissions__label="collection.read", ) except Collection.DoesNotExist: raise ServiceException("no such collection") Loading templates/oai/identify.xml +1 −1 Original line number Diff line number Diff line Loading @@ -9,7 +9,7 @@ <repositoryName>{{ project.label | capfirst }} OAI Repository</repositoryName> <baseURL>{{ base_url }}oai/{{ project.pk }}</baseURL> <protocolVersion>2.0</protocolVersion> <adminEmail>{{ project.email }}</adminEmail> <adminEmail>{{ project.admin_email }}</adminEmail> <earliestDatestamp>{{ earliest_record.created_at|date:"Y-m-d" }}</earliestDatestamp> <deletedRecord>no</deletedRecord> <granularity>YYYY-MM-DD</granularity> Loading Loading
resources/migrations/0020_project_admin_mail.py 0 → 100644 +18 −0 Original line number Diff line number Diff line # Generated by Django 3.2.2 on 2021-09-22 12:25 from django.db import migrations, models class Migration(migrations.Migration): dependencies = [ ('resources', '0019_alter_collection_project'), ] operations = [ migrations.AddField( model_name='project', name='admin_mail', field=models.EmailField(max_length=254, null=True), ), ]
resources/models.py +4 −0 Original line number Diff line number Diff line Loading @@ -56,6 +56,7 @@ class Project(models.Model): label = models.TextField(unique=True) description = models.TextField() admin_mail = models.EmailField(null=True) def __str__(self): return self.label Loading Loading @@ -557,6 +558,9 @@ class Permission(models.Model): """ Format labels like so: [object type].[action] Permissions are NOT project-specific, they are tied to the API. Examples: - collection.delete - resource.add Loading
rpc/methods.py +48 −3 Original line number Diff line number Diff line Loading @@ -11,6 +11,8 @@ from resources.models import ( Tag, Project, ProjectAccess, Role, Permission, APIKey, ) from django.contrib.auth.models import User Loading Loading @@ -74,7 +76,50 @@ def ping(user: User) -> str: ping.rpc_groups = ["Utilities"] def projects_permissions(user: User) -> List[Dict]: def list_permissions(user: User) -> List[Dict]: """ Lists all available permissions in the application: ``` [ {'id': 1, 'label': 'collection.add'}, {'id': 2, 'label': 'collection.read'}, {'id': 3, 'label': 'collection.write'}, {'id': 4, 'label': 'collection.delete'}, {'id': 5, 'label': 'resource.add'}, {'id': 6, 'label': 'resource.read'}, {'id': 7, 'label': 'resource.write'}, {'id': 8, 'label': 'resource.delete'}, {'id': 9, 'label': 'metadata.add'}, {'id': 10, 'label': 'metadata.read'}, {'id': 11, 'label': 'metadata.write'}, {'id': 12, 'label': 'metadata.delete'}, {'id': 13, 'label': 'metadataset.add'}, {'id': 14, 'label': 'metadataset.read'}, {'id': 15, 'label': 'metadataset.write'}, {'id': 16, 'label': 'metadataset.delete'}, {'id': 17, 'label': 'file.add'}, {'id': 18, 'label': 'file.read'}, {'id': 19, 'label': 'file.write'}, {'id': 20, 'label': 'file.delete'}, {'id': 21, 'label': 'tag.add'}, {'id': 22, 'label': 'tag.read'}, {'id': 23, 'label': 'tag.write'}, {'id': 24, 'label': 'tag.delete'}, {'id': 25, 'label': 'file.download_source'} ] ``` """ data = [] for perm in Permission.objects.all(): data.append(serializers.permission(perm)) return data list_permissions.rpc_groups = ["Access"] def projects_user_permissions(user: User) -> List[Dict]: """ Get all rights for the current user. Loading @@ -96,7 +141,7 @@ def projects_permissions(user: User) -> List[Dict]: return access_list projects_permissions.rpc_groups = ["Utilities"] projects_user_permissions.rpc_groups = ["Access"] def has_permission(user: User, project_id: int, permission: str) -> bool: Loading Loading @@ -269,7 +314,7 @@ def collections( pk=parent_id, deleted_at__isnull=True, project__projectaccess__user=user, project__project_access__role__permissions__label="collection.read", project__projectaccess__role__permissions__label="collection.read", ) except Collection.DoesNotExist: raise ServiceException("no such collection") Loading
templates/oai/identify.xml +1 −1 Original line number Diff line number Diff line Loading @@ -9,7 +9,7 @@ <repositoryName>{{ project.label | capfirst }} OAI Repository</repositoryName> <baseURL>{{ base_url }}oai/{{ project.pk }}</baseURL> <protocolVersion>2.0</protocolVersion> <adminEmail>{{ project.email }}</adminEmail> <adminEmail>{{ project.admin_email }}</adminEmail> <earliestDatestamp>{{ earliest_record.created_at|date:"Y-m-d" }}</earliestDatestamp> <deletedRecord>no</deletedRecord> <granularity>YYYY-MM-DD</granularity> Loading