更新索引报错,请问是什么问题,有遇到的吗

我也遇到了这个问题,翻了源码,修改了一下,目前功能可用了。

代码路径:{seafile目录}/seafile-pro-server-8.0.0/pro/python/seafes/repo_data/ __init __.py

import logging
from sqlalchemy.sql import text

from seafes.config import seafes_config
from seafes.repo_data.db import init_db_session_class

logger = logging.getLogger('seafes')


class RepoData(object):
    def __init__(self):
        self.db_session = init_db_session_class(seafes_config.seafile_conf)

    def to_dict(self, keys, result_proxy):
        res = []
        for i in result_proxy:
            res.append(dict(zip(keys, i)))
        return res

    def _get_repo_id_commit_id(self, start, count):
        session = self.db_session()
        try:
            cmd = """SELECT repo_id, commit_id
                     FROM Branch WHERE name = :name
                     AND repo_id NOT IN (SELECT repo_id from VirtualRepo)
                     limit :start, :count"""
            res = [(r['repo_id'], r['commit_id']) for r in session.execute(text(cmd),
                                                                      {'name': 'master',
                                                                       'start': start,
                                                                       'count': count})]
            return res
        except Exception as e:
            raise e
        finally:
            session.close()


    def _get_all_trash_repo_list(self):
        session = self.db_session()
        try:
            cmd = """SELECT repo_id, repo_name, head_id, owner_id, 
            size, org_id, del_time FROM RepoTrash ORDER BY del_time DESC"""
            res = session.execute(text(cmd))
            keys = ['repo_id', 'repo_name', 'head_id', 'owner_id', 'size', 'org_id', 'del_time']
            return self.to_dict(keys, res)
        except Exception as e:
            raise e
        finally:
            session.close()

    def _get_all_repo_list(self):
        session = self.db_session()
        try:
            cmd = """SELECT r.repo_id, c.file_count FROM Repo r LEFT JOIN RepoFileCount c
            ON r.repo_id = c.repo_id"""
            res = session.execute(text(cmd))
            keys = ['repo_id', 'file_count']
            return self.to_dict(keys, res)
        except Exception as e:
            raise e
        finally:
            session.close()

    def _get_repo_head_commit(self, repo_id):
        session = self.db_session()
        try:
            cmd = """SELECT b.commit_id
                     from Branch as b inner join Repo as r
                     where b.repo_id=r.repo_id and b.repo_id=:repo_id"""
            res = session.execute(text(cmd), {'repo_id': repo_id}).fetchone()
            return res[0] if res else None
        except Exception as e:
            raise e
        finally:
            session.close()

    def _get_repo_name_mtime_size(self, repo_id):
        session = self.db_session()
        try:
            cmd = """SELECT RepoInfo.name, RepoInfo.update_time, RepoSize.size
                     FROM RepoInfo INNER JOIN RepoSize ON RepoInfo.repo_id = RepoSize.repo_id
                     AND RepoInfo.repo_id = :repo_id"""

            res = session.execute(text(cmd), {'repo_id': repo_id})
            keys = ['name', 'update_time', 'size']

            return self.to_dict(keys, res)
        except Exception as e:
            raise e
        finally:
            session.close()

    def get_repo_name_mtime_size(self, repo_id):
        try:
            return self._get_repo_name_mtime_size(repo_id)
        except Exception as e:
            logger.error(e)
            return self._get_repo_name_mtime_size(repo_id)

    def get_all_repo_list(self):
        try:
            return self._get_all_repo_list()
        except Exception as e:
            logger.error(e)
            return self._get_all_repo_list()

    def get_all_trash_repo_list(self):
        try:
            return self._get_all_trash_repo_list()
        except Exception as e:
            logger.error(e)
            return self._get_all_trash_repo_list()

    def get_repo_id_commit_id(self, start, count):
        try:
            return self._get_repo_id_commit_id(start, count)
        except Exception as e:
            logger.error(e)
            return self._get_repo_id_commit_id(start, count)

    def get_repo_head_commit(self, repo_id):
        try:
            return self._get_repo_head_commit(repo_id)
        except Exception as e:
            logger.error(e)
            return self._get_repo_head_commit(repo_id)


repo_data = RepoData()

用上述文件替换掉原有内容,应该就可以建立索引了。
修改前记得备份原有文件!!!!

1 个赞