Skip to content
涂珂 edited this page Nov 15, 2013 · 27 revisions

这部分描述了数据库实现细节,主要是给文档菌 @misaki @zhang_sh11 和 @TaccoRaw 看的 Borrowing那块还没写好,逻辑有点混乱 有什么的地方或需要的接口函数写在Issue里吧

目前分组与权限:(参见需求文档)

 group_list = ['NormalUser', 'AdvancedUser', 'Blacklist', 'Admin']  # guest
 permission_list = ['can_search', 'can_comment', 'can_manage']

其中'can_manage'为权限'can_midify_book','can_change_perm','can_generate_tempuser','can_manage_blacklist', 'can_delete_user'的集合

MyUser

  • user, OneToOneField 一对一表关系到django自带的User模型。这个模型包含:
  • username 用户名
  • password 密码(加密后
  • email 邮箱
  • groups 分组('NormalUser', 'AdvancedUser', 'Blacklist', 'Admin' 之一, 默认为NormalUser)
  • perssions 权限(由分组决定其权限,目前没有为每个用户单独设置权限), 目前只有三种权限('can_search', 'can_comment', 'can_manage')
  • name, 真实姓名(昵称)

接口函数

  • register(username, password, email, name, group='NormalUser'), 注册, 必须保证传入数据合法 #282
  • set_group(group) 更改分组,用于拉黑,提权等
  • get_group_name() 得到当前分组名
  • get_group() 得到所有分组类的数组(应该用不到)
  • has_perm(string) 判断是否有某种权限, 传入string, 返回bool值

Book

域(这么多!!!吐槽一下需求文档。。。。, 具体见需求文档)

  • duartion 借书期限,为0, 7, 14
  • name_cn 中文名,若为中文书、中译本或影印本则直接为书名,若对于外文原本则赋空值。
  • author 作者名:中英文名称皆支持。多个,“,”分割
  • press 中英文名称皆支持。
  • pub_year 出版年份:代表公元纪年4位数字。
  • revision 版次:一个阿拉伯数字。
  • ISBN 根据国际标准,每本书都有一个对应的ISBN码。
  • name_origin 写不动了,见需求文档。。。。。。。。。。。。
  • translator 多个,“,”分割
  • pub_year_origin
  • revision_origin
  • type 分类:对于图书的类型定义,如文学,数学,计算机等。(发现忘写了,等下加上)

接口函数

  • simple_name() 返回简单书名
  • simple_version() 返回简单版本信息
  • search(string) staticmethod, 返回搜索结果的qureyset

BookCopy

  • status 状态(int),对应关系 status_choice = ((0, 'ready'),(1, 'unreturned'),(2, 'over time'),(3, 'arranging'),(4, 'off shelf'))
  • get_status_display 状态(str),即上一条的对应关系
  • book ForeignKey连接其对应的book类
  • reborrow_time 续借次数
  • location 馆藏位置

Info

  • title 标题
  • content 内容
  • date 时间(自动存入创立时的时间)
  • species 种类,整数域, 存入species_choice=((0, 'news'),(1, guide))

接口函数

  • local_time() 返回本地时间, 一个类
  • get_all(sp=None) 返回sp为某种类的所有Info(sp传入news或guide), 默认返回所有
  • get_species_display 状态(str),即上一条的对应关系

Borrowing

  • status 状态(需传入int,如下) status_choice = ((0, 'borrowing'),(1, 'unreturned'),(2, 'over time'),(3, 'arranging'),(4, 'off shelf'))
  • date_borrowing 借书时间
  • date_return 还书时间
  • book_copy 对应的书的副本
  • reborrow_time 当前续借次数

接口函数

  • date_expired() 返回到期时间
Clone this wiki locally