mirror of
https://github.com/haiwen/seahub.git
synced 2025-09-03 07:55:36 +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:
@@ -49,3 +49,7 @@ CREATE TABLE `onlyoffice_onlyofficedockey` (
|
|||||||
KEY `onlyoffice_onlyofficedockey_doc_key_edba1352` (`doc_key`),
|
KEY `onlyoffice_onlyofficedockey_doc_key_edba1352` (`doc_key`),
|
||||||
KEY `onlyoffice_onlyofficedockey_repo_id_file_path_md5_52002073` (`repo_id_file_path_md5`)
|
KEY `onlyoffice_onlyofficedockey_repo_id_file_path_md5_52002073` (`repo_id_file_path_md5`)
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
) 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);
|
||||||
|
@@ -12,5 +12,5 @@ class OnlyOfficeDocKey(models.Model):
|
|||||||
username = models.CharField(max_length=255)
|
username = models.CharField(max_length=255)
|
||||||
repo_id = models.CharField(max_length=36)
|
repo_id = models.CharField(max_length=36)
|
||||||
file_path = models.TextField()
|
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)
|
created_time = models.DateTimeField(default=datetime.datetime.now)
|
||||||
|
@@ -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()
|
md5 = hashlib.md5(force_bytes(repo_id + file_path)).hexdigest()
|
||||||
try:
|
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
|
return doc_key_obj.doc_key
|
||||||
except OnlyOfficeDocKey.DoesNotExist:
|
return ''
|
||||||
|
except Exception as e:
|
||||||
|
logger.error(e)
|
||||||
return ''
|
return ''
|
||||||
|
|
||||||
|
|
||||||
def get_file_info_by_doc_key(doc_key):
|
def get_file_info_by_doc_key(doc_key):
|
||||||
|
|
||||||
try:
|
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 {
|
return {
|
||||||
'username': doc_key_obj.username,
|
'username': doc_key_obj.username,
|
||||||
'repo_id': doc_key_obj.repo_id,
|
'repo_id': doc_key_obj.repo_id,
|
||||||
'file_path': doc_key_obj.file_path,
|
'file_path': doc_key_obj.file_path,
|
||||||
}
|
}
|
||||||
except OnlyOfficeDocKey.DoesNotExist:
|
return {}
|
||||||
|
except Exception as e:
|
||||||
|
logger.error(e)
|
||||||
return {}
|
return {}
|
||||||
|
|
||||||
|
|
||||||
def save_doc_key(doc_key, username, repo_id, file_path):
|
def save_doc_key(doc_key, username, repo_id, file_path):
|
||||||
|
|
||||||
md5 = hashlib.md5(force_bytes(repo_id + file_path)).hexdigest()
|
md5 = hashlib.md5(force_bytes(repo_id + file_path)).hexdigest()
|
||||||
|
try:
|
||||||
doc_key_obj = OnlyOfficeDocKey.objects.create(doc_key=doc_key,
|
doc_key_obj = OnlyOfficeDocKey.objects.create(doc_key=doc_key,
|
||||||
username=username,
|
username=username,
|
||||||
repo_id=repo_id,
|
repo_id=repo_id,
|
||||||
file_path=file_path,
|
file_path=file_path,
|
||||||
repo_id_file_path_md5=md5)
|
repo_id_file_path_md5=md5)
|
||||||
|
except Exception as e:
|
||||||
|
logger.error(e)
|
||||||
|
return
|
||||||
|
|
||||||
return doc_key_obj.doc_key
|
return doc_key_obj.doc_key
|
||||||
|
|
||||||
|
@@ -1341,6 +1341,6 @@ CREATE TABLE `onlyoffice_onlyofficedockey` (
|
|||||||
`repo_id_file_path_md5` varchar(100) NOT NULL,
|
`repo_id_file_path_md5` varchar(100) NOT NULL,
|
||||||
`created_time` datetime(6) NOT NULL,
|
`created_time` datetime(6) NOT NULL,
|
||||||
PRIMARY KEY (`id`),
|
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_doc_key_edba1352` (`doc_key`),
|
||||||
KEY `onlyoffice_onlyofficedockey_repo_id_file_path_md5_52002073` (`repo_id_file_path_md5`)
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
||||||
|
Reference in New Issue
Block a user