Skip to content
武祥晋 edited this page Nov 16, 2013 · 27 revisions

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

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

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

其中'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值
  • get_perm(string) 返回数字权限的对应值

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

  • book ForeignKey连接其对应的book类
  • location 馆藏位置

接口函数

get_status 返回一个dict类型的值status。status['text']为'borrowing'、'arranging'、'disappear'、'on shelf',分别对应出借中、(归还后)整理中、已丢失、在架上。当status['text']为‘borrowing’时,另有status['expire']、status['reborrow_count']、status['queue']分别表示到期时间、已续借次数、当前预约人数。注意,到期时间可能已经超过today(),即应为“已超期”。

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, 'reborrowing 1'),(2, 'reborrowing 2'),(3, 'arranging'),(4, 'queue'), (5, 'disappear'))

  • datetime 发生时间

  • book_copy 对应的书的副本

  • myuser 对应的用户

  • is_active bool值,记录是否已经失效 接口函数

  • borrow(myuser, book_copy) staticmethod, 用户myuser去借book_copy

  • reborrow(myuser, book_copy) staticmethod 用户续借

  • return_book(myuser, book_copy) staticmethod 用户归还

  • queue_next(book_copy) staticmethod 管理员把归还的书给最先预约的人

  • readify(book_copy) staticmethod 管理员把归还的书上架

  • disappear(myuser, book_copy) staticmethod 用户将图书丢失

Clone this wiki locally