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:
@@ -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)
|
||||
|
@@ -138,6 +138,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'
|
||||
data = {
|
||||
|
@@ -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)
|
||||
|
Reference in New Issue
Block a user