1
0
mirror of https://github.com/haiwen/seahub.git synced 2025-09-02 15:38:15 +00:00

fix get_doc_key_by_repo_id_file_path (#5293)

* fix get_doc_key_by_repo_id_file_path

* optimize code

* add try-except
This commit is contained in:
王健辉
2022-10-25 17:18:55 +08:00
committed by GitHub
parent 4238048376
commit 7567825b0a
4 changed files with 31 additions and 17 deletions

View File

@@ -49,3 +49,7 @@ CREATE TABLE `onlyoffice_onlyofficedockey` (
KEY `onlyoffice_onlyofficedockey_doc_key_edba1352` (`doc_key`),
KEY `onlyoffice_onlyofficedockey_repo_id_file_path_md5_52002073` (`repo_id_file_path_md5`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
ALTER TABLE `onlyoffice_onlyofficedockey` DROP INDEX `onlyoffice_onlyofficedockey_repo_id_file_path_md5_52002073`;
ALTER TABLE `onlyoffice_onlyofficedockey` ADD UNIQUE (repo_id_file_path_md5);

View File

@@ -12,5 +12,5 @@ class OnlyOfficeDocKey(models.Model):
username = models.CharField(max_length=255)
repo_id = models.CharField(max_length=36)
file_path = models.TextField()
repo_id_file_path_md5 = models.CharField(max_length=100, db_index=True)
repo_id_file_path_md5 = models.CharField(max_length=100, db_index=True, unique=True)
created_time = models.DateTimeField(default=datetime.datetime.now)

View File

@@ -39,33 +39,43 @@ def get_doc_key_by_repo_id_file_path(repo_id, file_path):
md5 = hashlib.md5(force_bytes(repo_id + file_path)).hexdigest()
try:
doc_key_obj = OnlyOfficeDocKey.objects.get(repo_id_file_path_md5=md5)
doc_key_obj = OnlyOfficeDocKey.objects.filter(repo_id_file_path_md5=md5).first()
if doc_key_obj:
return doc_key_obj.doc_key
except OnlyOfficeDocKey.DoesNotExist:
return ''
except Exception as e:
logger.error(e)
return ''
def get_file_info_by_doc_key(doc_key):
try:
doc_key_obj = OnlyOfficeDocKey.objects.get(doc_key=doc_key)
doc_key_obj = OnlyOfficeDocKey.objects.filter(doc_key=doc_key).first()
if doc_key_obj:
return {
'username': doc_key_obj.username,
'repo_id': doc_key_obj.repo_id,
'file_path': doc_key_obj.file_path,
}
except OnlyOfficeDocKey.DoesNotExist:
return {}
except Exception as e:
logger.error(e)
return {}
def save_doc_key(doc_key, username, repo_id, file_path):
md5 = hashlib.md5(force_bytes(repo_id + file_path)).hexdigest()
try:
doc_key_obj = OnlyOfficeDocKey.objects.create(doc_key=doc_key,
username=username,
repo_id=repo_id,
file_path=file_path,
repo_id_file_path_md5=md5)
except Exception as e:
logger.error(e)
return
return doc_key_obj.doc_key

View File

@@ -1341,6 +1341,6 @@ CREATE TABLE `onlyoffice_onlyofficedockey` (
`repo_id_file_path_md5` varchar(100) NOT NULL,
`created_time` datetime(6) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `repo_id_file_path_md5` (`repo_id_file_path_md5`),
KEY `onlyoffice_onlyofficedockey_doc_key_edba1352` (`doc_key`),
KEY `onlyoffice_onlyofficedockey_repo_id_file_path_md5_52002073` (`repo_id_file_path_md5`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;