1
0
mirror of https://github.com/haiwen/seahub.git synced 2025-09-24 12:58:34 +00:00

batch add columns (#6444)

This commit is contained in:
JoinTyang
2024-07-31 16:14:09 +08:00
committed by GitHub
parent 43275017d7
commit 7a43fafe37
3 changed files with 33 additions and 28 deletions

View File

@@ -1,4 +1,6 @@
import logging
from datetime import datetime
from rest_framework.authentication import SessionAuthentication
from rest_framework.permissions import IsAuthenticated
from rest_framework.response import Response
@@ -9,13 +11,9 @@ from seahub.api2.throttling import UserRateThrottle
from seahub.api2.authentication import TokenAuthentication
from seahub.repo_metadata.models import RepoMetadata, RepoMetadataViews
from seahub.views import check_folder_permission
from seahub.repo_metadata.utils import add_init_metadata_task, gen_unique_id, init_metadata
from seahub.repo_metadata.utils import add_init_metadata_task, gen_unique_id, init_metadata, get_sys_columns
from seahub.repo_metadata.metadata_server_api import MetadataServerAPI, list_metadata_records
from seahub.utils.timeutils import utc_to_local, \
datetime_to_isoformat_timestr, datetime_to_timestamp, \
timestamp_to_isoformat_timestr
from datetime import datetime
import time
from seahub.utils.timeutils import datetime_to_isoformat_timestr
from seaserv import seafile_api
@@ -262,17 +260,7 @@ class MetadataRecords(APIView):
error_msg = 'Internal Server Error'
return api_error(status.HTTP_500_INTERNAL_SERVER_ERROR, error_msg)
sys_column_names = [
METADATA_TABLE.columns.id.name,
METADATA_TABLE.columns.file_creator.name,
METADATA_TABLE.columns.file_ctime.name,
METADATA_TABLE.columns.file_modifier.name,
METADATA_TABLE.columns.file_mtime.name,
METADATA_TABLE.columns.parent_dir.name,
METADATA_TABLE.columns.file_name.name,
METADATA_TABLE.columns.is_dir.name,
METADATA_TABLE.columns.file_type.name,
]
sys_column_names = [column.get('name') for column in get_sys_columns()]
rows = []
for record_data in records_data:
@@ -531,8 +519,6 @@ class MetadataColumns(APIView):
error_msg = 'Permission denied.'
return api_error(status.HTTP_403_FORBIDDEN, error_msg)
metadata_server_api = MetadataServerAPI(repo_id, request.user.username)
from seafevents.repo_metadata.utils import METADATA_TABLE
metadata_server_api = MetadataServerAPI(repo_id, request.user.username)

View File

@@ -137,6 +137,15 @@ class MetadataServerAPI:
}
response = requests.post(url, json=data, headers=self.headers, timeout=self.timeout)
return parse_response(response)
def add_columns(self, table_id, columns):
url = f'{METADATA_SERVER_URL}/api/v1/base/{self.base_id}/columns'
data = {
'table_id': table_id,
'columns': columns
}
response = requests.post(url, json=data, headers=self.headers, timeout=self.timeout)
return parse_response(response)
def delete_column(self, table_id, column_key):
url = f'{METADATA_SERVER_URL}/api/v1/base/{self.base_id}/columns'

View File

@@ -32,6 +32,23 @@ def gen_unique_id(id_set, length=4):
_id = generator_base64_code(length)
def get_sys_columns():
from seafevents.repo_metadata.utils import METADATA_TABLE
columns = [
METADATA_TABLE.columns.file_creator.to_dict(),
METADATA_TABLE.columns.file_ctime.to_dict(),
METADATA_TABLE.columns.file_modifier.to_dict(),
METADATA_TABLE.columns.file_mtime.to_dict(),
METADATA_TABLE.columns.parent_dir.to_dict(),
METADATA_TABLE.columns.file_name.to_dict(),
METADATA_TABLE.columns.is_dir.to_dict(),
METADATA_TABLE.columns.file_type.to_dict(),
METADATA_TABLE.columns.location.to_dict()
]
return columns
def init_metadata(metadata_server_api):
from seafevents.repo_metadata.utils import METADATA_TABLE
@@ -40,12 +57,5 @@ def init_metadata(metadata_server_api):
metadata_server_api.create_base()
# init sys column
metadata_server_api.add_column(METADATA_TABLE.id, METADATA_TABLE.columns.file_creator.to_dict())
metadata_server_api.add_column(METADATA_TABLE.id, METADATA_TABLE.columns.file_ctime.to_dict())
metadata_server_api.add_column(METADATA_TABLE.id, METADATA_TABLE.columns.file_modifier.to_dict())
metadata_server_api.add_column(METADATA_TABLE.id, METADATA_TABLE.columns.file_mtime.to_dict())
metadata_server_api.add_column(METADATA_TABLE.id, METADATA_TABLE.columns.parent_dir.to_dict())
metadata_server_api.add_column(METADATA_TABLE.id, METADATA_TABLE.columns.file_name.to_dict())
metadata_server_api.add_column(METADATA_TABLE.id, METADATA_TABLE.columns.is_dir.to_dict())
metadata_server_api.add_column(METADATA_TABLE.id, METADATA_TABLE.columns.file_type.to_dict())
metadata_server_api.add_column(METADATA_TABLE.id, METADATA_TABLE.columns.location.to_dict())
sys_columns = get_sys_columns()
metadata_server_api.add_columns(METADATA_TABLE.id, sys_columns)