diff --git a/frontend/src/components/metadata-manage/metadata-manage-view.js b/frontend/src/components/metadata-manage/metadata-manage-view.js
index 4f7a1ae957..d48ea3b42e 100644
--- a/frontend/src/components/metadata-manage/metadata-manage-view.js
+++ b/frontend/src/components/metadata-manage/metadata-manage-view.js
@@ -6,6 +6,7 @@ import toaster from '../../components/toast';
import seahubMetadataAPI from './seahub-metadata-api';
import { hideMenu, showMenu } from '../context-menu/actions';
import TextTranslation from '../../utils/text-translation';
+import { siteRoot } from '../../utils/constants';
const propTypes = {
repoID: PropTypes.string.isRequired,
@@ -103,7 +104,8 @@ class MetadataManageView extends React.Component {
};
viewMetadata = () => {
-
+ let server = siteRoot.substring(0, siteRoot.length-1);
+ window.open(server + '/repos/' + this.props.repoID + '/metadata/table-view/', '_blank');
};
render() {
@@ -120,7 +122,7 @@ class MetadataManageView extends React.Component {
onClick={this.onClick}
onContextMenu={this.onItemContextMenu}
>
-
{gettext('Metadata View')}
+
{gettext('Metadata Views')}
diff --git a/seahub/repo_metadata/views.py b/seahub/repo_metadata/views.py
new file mode 100644
index 0000000000..610e596ec5
--- /dev/null
+++ b/seahub/repo_metadata/views.py
@@ -0,0 +1,51 @@
+from seahub.views import check_folder_permission
+from seaserv import seafile_api
+from seahub.auth.decorators import login_required
+from seahub.base.decorators import repo_passwd_set_required
+from django.http import Http404, HttpResponseBadRequest, HttpResponseForbidden, HttpResponseServerError
+from seahub.api2.endpoints.metadata_manage import list_metadata_records
+from seahub.repo_metadata.models import RepoMetadata
+from django.shortcuts import render
+
+
+@login_required
+@repo_passwd_set_required
+def view_metadata(request, repo_id):
+ template = 'metadata_table.html'
+
+ # metadata enable check
+ record = RepoMetadata.objects.filter(repo_id=repo_id).first()
+ if not record or not record.enabled:
+ return HttpResponseBadRequest(f'The metadata module is not enable for repo {repo_id}.')
+
+ # recource check
+ repo = seafile_api.get_repo(repo_id)
+ if not repo:
+ raise Http404
+
+ # permission check
+ permission = check_folder_permission(request, repo_id, '/')
+ if not permission:
+ return HttpResponseForbidden('Permission denied.')
+
+ try:
+ results = list_metadata_records(repo_id, request.user.username)
+ except Exception as err:
+ return HttpResponseServerError(repr(err))
+
+ for result in results:
+ #preprocess creator and modifier
+ if result['creator'] == '':
+ result['creator'] = '-----------'
+
+ if result['modifier'] == '':
+ result['modifier'] = '-----------'
+
+ #preprocess _id
+ result['id'] = result['_id']
+ del result['_id']
+
+ return_dict = {
+ 'metadata_records': results
+ }
+ return render(request, template, return_dict)
\ No newline at end of file
diff --git a/seahub/templates/metadata_table.html b/seahub/templates/metadata_table.html
new file mode 100644
index 0000000000..a5b51c460c
--- /dev/null
+++ b/seahub/templates/metadata_table.html
@@ -0,0 +1,53 @@
+{% extends "base.html" %}
+{% load i18n %}
+
+{% block main_panel %}
+
+
+
+
+ id |
+ Creator |
+ Created Time |
+ Modifier |
+ Modified Time |
+ Parent Folder |
+ Name |
+ Is Folder |
+
+
+
+ {% for record in metadata_records %}
+
+ {{ record.id }} |
+ {{ record.creator }} |
+ {{ record.created_time }} |
+ {{ record.modifier }} |
+ {{ record.modified_time }} |
+ {{ record.parent_dir }} |
+ {{ record.name }} |
+ {{ record.is_dir|yesno:"Yes,No" }} |
+
+ {% endfor %}
+
+
+
+{% endblock %}
+
+{% block extra_script %}
+
+{% endblock %}
\ No newline at end of file
diff --git a/seahub/urls.py b/seahub/urls.py
index f7540b1478..fa2c932908 100644
--- a/seahub/urls.py
+++ b/seahub/urls.py
@@ -204,6 +204,7 @@ from seahub.ocm.settings import OCM_ENDPOINT
from seahub.ai.apis import LibrarySdocIndexes, Search, LibrarySdocIndex, TaskStatus, \
LibraryIndexState, QuestionAnsweringSearchInLibrary, FileDownloadToken
from seahub.wiki2.views import wiki_view
+from seahub.repo_metadata.views import view_metadata
from seahub.api2.endpoints.wiki2 import Wikis2View, Wiki2View, Wiki2ConfigView, Wiki2PagesView, Wiki2PageView
from seahub.api2.endpoints.subscription import SubscriptionView, SubscriptionPlansView, SubscriptionLogsView
from seahub.api2.endpoints.metadata_manage import MetadataRecords, MetadataManage, MetadataRecord
@@ -1028,4 +1029,5 @@ if settings.ENABLE_METADATA_MANAGEMENT:
re_path(r'^api/v2.1/repos/(?P[-0-9a-f]{36})/metadata/$', MetadataManage.as_view(), name='api-v2.1-metadata'),
re_path(r'^api/v2.1/repos/(?P[-0-9a-f]{36})/metadata/records/$', MetadataRecords.as_view(), name='api-v2.1-metadata-records'),
re_path(r'^api/v2.1/repos/(?P[-0-9a-f]{36})/metadata/records/(?P[A-Za-z0-9_-]+)/$', MetadataRecord.as_view(), name='api-v2.1-metadata-record'),
+ re_path(r'^repos/(?P[-0-9a-f]{36})/metadata/table-view/$', view_metadata, name='view_metadata'),
]