2021SC@SDUSC
我们继续分析seahub部分的文件。
Seahub
po.py
此文件定义了一些中英翻译的映射,如下:
#!/usr/bin/env python
# encoding: utf-8
TRANSLATION_MAP = {
'Added': '添加了',
'Deleted': '删除了',
'Removed': '删除了',
'Modified': '修改了',
'Renamed': '重命名或移动了',
'Moved': '移动了',
'Added directory': '新建了目录',
'Removed directory': '删除了目录',
'Renamed directory': '重命名了目录',
'Moved directory': '移动了目录',
}
shortcuts.py
此文件用于获取queryset,即查询结果集的第一个对象,它是从数据库中查询出来一个结果的集合。如果没有则返回None。
# Copyright (c) 2012-2016 Seafile Ltd.
# encoding: utf-8
def get_first_object_or_none(queryset):
"""
A shortcut to obtain the first object of a queryset if it exists or None
otherwise.
"""
try:
return queryset[:1][0]
except IndexError:
return None
signals.py
Django框架内部包含了一个signal dispatcher,即信号调度器,它的作用是可以将框架内部发生的任何操作都通知到功能独立的应用程序。简而言之,当event(事件)发生时,signals(信号)允许若干 senders(寄件人)通知一组 receivers(接收者)。此文件就是规定了项目的信号调度。
import django.dispatch
# Use org_id = -1 if it's not an org repo
repo_created = django.dispatch.Signal(providing_args=["org_id", "creator", "repo_id", "repo_name", "library_template"])
repo_deleted = django.dispatch.Signal(providing_args=["org_id", "operator", "repo_owner", "repo_id", "repo_name"])
repo_transfer = django.dispatch.Signal(providing_args=["org_id", "repo_owner", "to_user", "repo_id", "repo_name"])
clean_up_repo_trash = django.dispatch.Signal(providing_args=["org_id", "operator", "repo_id", "repo_name", "repo_owner", "days"])
repo_restored = django.dispatch.Signal(providing_args=["repo_id", "operator"])
upload_file_successful = django.dispatch.Signal(providing_args=["repo_id", "file_path", "owner"])
comment_file_successful = django.dispatch.Signal(providing_args=["repo", "file_path", "comment", "author", "notify_users"])
institution_deleted = django.dispatch.Signal(providing_args=["inst_name"])
test_settings.py
此文件包含了项目测试的设置。
对接口访问的频次进行限制,以减轻服务器的压力。
REST_FRAMEWORK = {
'DEFAULT_THROTTLE_RATES': {
'ping': '90000/minute',
'anon': '90000/minute',
'user': '90000/minute',
},
}
使用文件存储的方式存储静态文件。
STATICFILES_STORAGE = 'django.contrib.staticfiles.storage.StaticFilesStorage'
规定管理员角色的权限。
ENABLED_ADMIN_ROLE_PERMISSIONS = {
'cannot_view_system_info': {
'can_view_system_info': False,
'can_view_statistic': True,
'can_config_system': True,
'can_manage_library': True,
'can_manage_user': True,
'can_manage_group': True,
'can_view_user_log': True,
'can_view_admin_log': True,
'other_permission': True,
},
'cannot_view_statistic': {
'can_view_system_info': True,
'can_view_statistic': False,
'can_config_system': True,
'can_manage_library': True,
'can_manage_user': True,
'can_manage_group': True,
'can_view_user_log': True,
'can_view_admin_log': True,
'other_permission': True,
},
'cannot_config_system': {
'can_view_system_info': True,
'can_view_statistic': True,
'can_config_system': False,
'can_manage_library': True,
'can_manage_user': True,
'can_manage_group': True,
'can_view_user_log': True,
'can_view_admin_log': True,
'other_permission': True,
},
'cannot_manage_library': {
'can_view_system_info': True,
'can_view_statistic': True,
'can_config_system': True,
'can_manage_library': False,
'can_manage_user': True,
'can_manage_group': True,
'can_view_user_log': True,
'can_view_admin_log': True,
'other_permission': True,
},
'cannot_manage_user': {
'can_view_system_info': True,
'can_view_statistic': True,
'can_config_system': True,
'can_manage_library': True,
'can_manage_user': False,
'can_manage_group': True,
'can_view_user_log': True,
'can_view_admin_log': True,
'other_permission': True,
},
'cannot_manage_group': {
'can_view_system_info': True,
'can_view_statistic': True,
'can_config_system': True,
'can_manage_library': True,
'can_manage_user': True,
'can_manage_group': False,
'can_view_user_log': True,
'can_view_admin_log': True,
'other_permission': True,
},
'cannot_view_user_log': {
'can_view_system_info': True,
'can_view_statistic': True,
'can_config_system': True,
'can_manage_library': True,
'can_manage_user': True,
'can_manage_group': True,
'can_view_user_log': False,
'can_view_admin_log': True,
'other_permission': True,
},
'cannot_view_admin_log': {
'can_view_system_info': True,
'can_view_statistic': True,
'can_config_system': True,
'can_manage_library': True,
'can_manage_user': True,
'can_manage_group': True,
'can_view_user_log': True,
'can_view_admin_log': False,
'other_permission': True,
},
'no_other_permission': {
'can_view_system_info': True,
'can_view_statistic': True,
'can_config_system': True,
'can_manage_library': True,
'can_manage_user': True,
'can_manage_group': True,
'can_view_user_log': True,
'can_view_admin_log': True,
'other_permission': False,
},
}
test_utils.py
此文件包含了项目测试所使用到的一些函数和参数。部分代码如下:
def fake_request(self):
# Every test needs access to the request factory.
factory = RequestFactory()
# Create an instance of a GET request.
fake_request = factory.get('/foo/')
fake_request.user = self.user
fake_request.cloud_mode = False
return fake_request
@fixture
def user(self):
return self.create_user('test@test.com')
@fixture
def admin(self):
return self.create_user('admin@test.com', is_staff=True)
RequestFactory能够创建模拟的请求对象,来进行测试。
以上就是我对剩下seahub的基础文件的分析,至此seahub部分的配置文件基本上分析完毕,后续有可能会进行一定的补充。接下来就可以更加细化地去分析seahub的内部文件夹中的代码以及proset部分的代码了。