├── .gitignore
├── README.md
├── app01
├── __init__.py
├── admin.py
├── apps.py
├── migrations
│ ├── 0001_initial.py
│ └── __init__.py
├── models.py
├── tests.py
├── urls.py
└── views.py
├── bookms2
├── .idea
│ ├── bookms2.iml
│ ├── dataSources.local.xml
│ ├── dataSources.xml
│ ├── dataSources
│ │ └── d48dd52b-84c2-4d84-a1da-5f17de3b1e66.xml
│ ├── misc.xml
│ ├── modules.xml
│ └── workspace.xml
├── README.MD
├── __init__.py
├── app01
│ ├── __init__.py
│ ├── __pycache__
│ │ ├── __init__.cpython-37.pyc
│ │ ├── admin.cpython-37.pyc
│ │ ├── apps.cpython-37.pyc
│ │ ├── models.cpython-37.pyc
│ │ ├── urls.cpython-37.pyc
│ │ └── views.cpython-37.pyc
│ ├── admin.py
│ ├── apps.py
│ ├── migrations
│ │ ├── 0001_initial.py
│ │ ├── __init__.py
│ │ └── __pycache__
│ │ │ ├── 0001_initial.cpython-37.pyc
│ │ │ └── __init__.cpython-37.pyc
│ ├── models.py
│ ├── tests.py
│ ├── urls.py
│ └── views.py
├── bookms2
│ ├── __init__.py
│ ├── __pycache__
│ │ ├── __init__.cpython-37.pyc
│ │ ├── settings.cpython-37.pyc
│ │ ├── urls.cpython-37.pyc
│ │ └── wsgi.cpython-37.pyc
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
├── img
│ ├── addbook.png
│ ├── books.png
│ ├── djangomtv.png
│ ├── dookdetail.png
│ └── tree.png
├── manage.py
├── readme.html
├── readme_files
│ ├── 1356841-20180823234512911-2032267074.png
│ ├── 1356841-20180823234532108-996382848.png
│ ├── 1356841-20180823234551256-365339085.png
│ ├── 1356841-20180823234613387-441295772.png
│ ├── 20180411175016.png
│ ├── 420602.css
│ ├── InsertCode.gif
│ ├── analytics.js.下载
│ ├── b.png
│ ├── blog-common.css
│ ├── blog-common.js.下载
│ ├── bundle-iMetro-mobile.css
│ ├── bundle-iMetro.css
│ ├── highlight.min.js.下载
│ ├── icon_weibo_24.png
│ ├── img.gif
│ ├── indent.png
│ ├── jquery-2.2.0.min.js.下载
│ ├── lk.png
│ ├── logo.gif
│ ├── mention.js.下载
│ ├── quote.gif
│ └── wechat.png
├── settings.py
├── static
│ ├── __init__.py
│ ├── bs
│ │ ├── css
│ │ │ ├── bootstrap-theme.css
│ │ │ ├── bootstrap-theme.css.map
│ │ │ ├── bootstrap-theme.min.css
│ │ │ ├── bootstrap-theme.min.css.map
│ │ │ ├── bootstrap.css
│ │ │ ├── bootstrap.css.map
│ │ │ ├── bootstrap.min.css
│ │ │ └── bootstrap.min.css.map
│ │ ├── fonts
│ │ │ ├── glyphicons-halflings-regular.eot
│ │ │ ├── glyphicons-halflings-regular.svg
│ │ │ ├── glyphicons-halflings-regular.ttf
│ │ │ ├── glyphicons-halflings-regular.woff
│ │ │ └── glyphicons-halflings-regular.woff2
│ │ └── js
│ │ │ ├── bootstrap.js
│ │ │ ├── bootstrap.min.js
│ │ │ └── npm.js
│ ├── jq
│ │ └── jquery-3.3.1.js
│ └── js
│ │ └── app01.js
├── templates
│ ├── add_book.html
│ ├── base.html
│ ├── book_detail.html
│ ├── books.html
│ └── modbook.html
├── urls.py
└── wsgi.py
├── img
├── addbook.png
├── books.png
├── djangomtv.png
├── dookdetail.png
└── tree.png
├── manage.py
├── static
├── __init__.py
├── bs
│ ├── css
│ │ ├── bootstrap-theme.css
│ │ ├── bootstrap-theme.css.map
│ │ ├── bootstrap-theme.min.css
│ │ ├── bootstrap-theme.min.css.map
│ │ ├── bootstrap.css
│ │ ├── bootstrap.css.map
│ │ ├── bootstrap.min.css
│ │ └── bootstrap.min.css.map
│ ├── fonts
│ │ ├── glyphicons-halflings-regular.eot
│ │ ├── glyphicons-halflings-regular.svg
│ │ ├── glyphicons-halflings-regular.ttf
│ │ ├── glyphicons-halflings-regular.woff
│ │ └── glyphicons-halflings-regular.woff2
│ └── js
│ │ ├── bootstrap.js
│ │ ├── bootstrap.min.js
│ │ └── npm.js
├── jq
│ └── jquery-3.3.1.js
└── js
│ └── app01.js
└── templates
├── add_book.html
├── base.html
├── book_detail.html
├── books.html
└── modbook.html
/.gitignore:
--------------------------------------------------------------------------------
1 | # Byte-compiled / optimized / DLL files
2 | __pycache__/
3 | *.py[cod]
4 | *$py.class
5 |
6 | # C extensions
7 | *.so
8 |
9 | # Distribution / packaging
10 | .Python
11 | build/
12 | develop-eggs/
13 | dist/
14 | downloads/
15 | eggs/
16 | .eggs/
17 | lib/
18 | lib64/
19 | parts/
20 | sdist/
21 | var/
22 | wheels/
23 | share/python-wheels/
24 | *.egg-info/
25 | .installed.cfg
26 | *.egg
27 | MANIFEST
28 |
29 | # PyInstaller
30 | # Usually these files are written by a python script from a template
31 | # before PyInstaller builds the exe, so as to inject date/other infos into it.
32 | *.manifest
33 | *.spec
34 |
35 | # Installer logs
36 | pip-log.txt
37 | pip-delete-this-directory.txt
38 |
39 | # Unit test / coverage reports
40 | htmlcov/
41 | .tox/
42 | .nox/
43 | .coverage
44 | .coverage.*
45 | .cache
46 | nosetests.xml
47 | coverage.xml
48 | *.cover
49 | .hypothesis/
50 | .pytest_cache/
51 |
52 | # Translations
53 | *.mo
54 | *.pot
55 |
56 | # Django stuff:
57 | *.log
58 | local_settings.py
59 | db.sqlite3
60 |
61 | # Flask stuff:
62 | instance/
63 | .webassets-cache
64 |
65 | # Scrapy stuff:
66 | .scrapy
67 |
68 | # Sphinx documentation
69 | docs/_build/
70 |
71 | # PyBuilder
72 | target/
73 |
74 | # Jupyter Notebook
75 | .ipynb_checkpoints
76 |
77 | # IPython
78 | profile_default/
79 | ipython_config.py
80 |
81 | # pyenv
82 | .python-version
83 |
84 | # celery beat schedule file
85 | celerybeat-schedule
86 |
87 | # SageMath parsed files
88 | *.sage.py
89 |
90 | # Environments
91 | .env
92 | .venv
93 | env/
94 | venv/
95 | ENV/
96 | env.bak/
97 | venv.bak/
98 |
99 | # Spyder project settings
100 | .spyderproject
101 | .spyproject
102 |
103 | # Rope project settings
104 | .ropeproject
105 |
106 | # mkdocs documentation
107 | /site
108 |
109 | # mypy
110 | .mypy_cache/
111 | .dmypy.json
112 | dmypy.json
113 |
114 | # Pyre type checker
115 | .pyre/
116 |
117 | .idea
118 | .vscode
119 | media/
120 | YGVueEnd/
121 | YGVueIndex/
122 | yg_positioning_system/ygenv.py
123 | yg_positioning_system/__pycache__
124 | venv
125 | demo.py
126 | demo2.py
127 | static/map/
128 | "static/map_file/map - \345\211\257\346\234\254.zip"
129 | "static/map_file/map - \345\211\257\346\234\254/"
130 | static/style.json
131 | uwsgi.ini
132 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # 基于Django的图书管理系统
2 |
3 | ## 1.主体功能
4 |
5 | ```
6 | 1.列出图书列表、出版社列表、作者列表
7 | 2.点击作者,会列出其出版的图书列表
8 | 3.点击出版社,会列出旗下图书列表
9 | 4.可以创建、修改、删除 图书、作者、出版社
10 | ```
11 |
12 | ## 2.界面展示
13 |
14 | **图书馆首页:**
15 |
16 | 
17 |
18 | **添加书籍页面:**
19 |
20 | 
21 |
22 |
23 |
24 | 其他页面与上述两页类似,不做赘述。
25 |
26 | ## 3.项目详情
27 |
28 | ### 3.1 Django的简介
29 |
30 | `Django`是一个由Python编写的具有完整架站能力的开源Web框架。使用Django,只要很少的代码,Python的程序开发人员就可以轻松地完成一个正式网站所需要的大部分内容,并进一步开发出全功能的Web服务。
31 |
32 | `Django`基于原始的MVC模型(Model+View+Controller),并在此基础上做出了修改,将视图分为View模块和Template模块两个部分,使动态的逻辑处理与静态的页面展现分离开来。此外,Django的Model采用了ORM技术,将关系型数据库中的表封装为面向对象的PYTHON类,将类作为底层表的接口,避免了原始复杂的SQL语句的编写。MTV和MVC在本质上是一样的。如下图:
33 |
34 | 
35 |
36 |
37 |
38 | **Django的优点**:
39 |
40 | - 功能完善、要素齐全:该有的、可以没有的都有,常用的、不常用的工具都用。Django提供了大量的特性和工具,无须你自己定义、组合、增删及修改。但是,在有些人眼里这被认为是‘臃肿’不够灵活,发挥不了程序员的主动能力。(一体机和DIY你更喜欢哪个?^-^)
41 | - 完善的文档:经过十多年的发展和完善,Django有广泛的实践经验和完善的在线文档(可惜大多数为英文)。开发者遇到问题时可以搜索在线文档寻求解决方案。
42 | - 强大的数据库访问组件:Django的Model层自带数据库ORM组件,使得开发者无须学习其他数据库访问技术(SQL、pymysql、SQLALchemy等)。当然你也可以不用Django自带的ORM,而是使用其它访问技术,比如SQLALchemy。
43 | - 灵活的URL映射:Django使用正则表达式管理URL映射,灵活性高。
44 | - 丰富的Template模板语言:类似jinjia模板语言,不但原生功能丰富,还可以自定义模板标签。
45 | - 自带免费的后台管理系统:只需要通过简单的几行配置和代码就可以实现一个完整的后台数据管理控制平台。
46 | - 完整的错误信息提示:在开发调试过程中如果出现运行错误或者异常,Django可以提供非常完整的错误信息帮助定位问题。
47 |
48 | ### 3.2项目目录
49 |
50 | 本图书管理系统的源码目录结构如下:
51 |
52 | 
53 |
54 | ### 3.3 项目源码链接
55 |
56 | https://github.com/hyyc554/mydjango
57 |
--------------------------------------------------------------------------------
/app01/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yance-dev/mydjango/2f841d2b82f9d002a8175dbbe7d963d479b4346a/app01/__init__.py
--------------------------------------------------------------------------------
/app01/admin.py:
--------------------------------------------------------------------------------
1 | from django.contrib import admin
2 |
3 | # Register your models here.
4 |
--------------------------------------------------------------------------------
/app01/apps.py:
--------------------------------------------------------------------------------
1 | from django.apps import AppConfig
2 |
3 |
4 | class App01Config(AppConfig):
5 | name = 'app01'
6 |
--------------------------------------------------------------------------------
/app01/migrations/0001_initial.py:
--------------------------------------------------------------------------------
1 | # Generated by Django 2.1 on 2018-08-22 17:33
2 |
3 | from django.db import migrations, models
4 | import django.db.models.deletion
5 |
6 |
7 | class Migration(migrations.Migration):
8 |
9 | initial = True
10 |
11 | dependencies = [
12 | ]
13 |
14 | operations = [
15 | migrations.CreateModel(
16 | name='Author',
17 | fields=[
18 | ('nid', models.AutoField(primary_key=True, serialize=False)),
19 | ('name', models.CharField(max_length=32)),
20 | ('age', models.IntegerField()),
21 | ],
22 | ),
23 | migrations.CreateModel(
24 | name='AuthorDetail',
25 | fields=[
26 | ('nid', models.AutoField(primary_key=True, serialize=False)),
27 | ('birthday', models.DateField()),
28 | ('telephone', models.BigIntegerField()),
29 | ('address', models.CharField(max_length=64)),
30 | ],
31 | ),
32 | migrations.CreateModel(
33 | name='Book',
34 | fields=[
35 | ('nid', models.AutoField(primary_key=True, serialize=False)),
36 | ('title', models.CharField(max_length=32)),
37 | ('pub_date', models.DateField()),
38 | ('price', models.DecimalField(decimal_places=2, max_digits=5)),
39 | ('authors', models.ManyToManyField(to='app01.Author')),
40 | ],
41 | ),
42 | migrations.CreateModel(
43 | name='Publish',
44 | fields=[
45 | ('nid', models.AutoField(primary_key=True, serialize=False)),
46 | ('name', models.CharField(max_length=32)),
47 | ('city', models.CharField(max_length=64)),
48 | ('email', models.EmailField(max_length=254)),
49 | ],
50 | ),
51 | migrations.AddField(
52 | model_name='book',
53 | name='publish',
54 | field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='app01.Publish'),
55 | ),
56 | migrations.AddField(
57 | model_name='author',
58 | name='author_detail',
59 | field=models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to='app01.AuthorDetail'),
60 | ),
61 | ]
62 |
--------------------------------------------------------------------------------
/app01/migrations/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yance-dev/mydjango/2f841d2b82f9d002a8175dbbe7d963d479b4346a/app01/migrations/__init__.py
--------------------------------------------------------------------------------
/app01/models.py:
--------------------------------------------------------------------------------
1 | from django.db import models
2 |
3 |
4 | # Create your models here.
5 |
6 | class Author(models.Model):
7 | """
8 | 作者表的创建
9 | """
10 | nid = models.AutoField(primary_key=True)
11 | name = models.CharField(max_length=32)
12 | age = models.IntegerField()
13 | # 与AuthorDetail创建一对一的关系
14 | author_detail = models.OneToOneField(to="AuthorDetail", on_delete=models.CASCADE)
15 |
16 |
17 | class AuthorDetail(models.Model):
18 | nid = models.AutoField(primary_key=True)
19 | birthday = models.DateField()
20 | telephone = models.BigIntegerField()
21 | address = models.CharField(max_length=64)
22 |
23 |
24 | class Publish(models.Model):
25 | nid = models.AutoField(primary_key=True)
26 | name = models.CharField(max_length=32)
27 | city = models.CharField(max_length=64)
28 | email = models.EmailField()
29 |
30 |
31 | class Book(models.Model):
32 | nid = models.AutoField(primary_key=True)
33 | title = models.CharField(max_length=32)
34 | pub_date = models.DateField()
35 | price = models.DecimalField(max_digits=5, decimal_places=2)
36 | # 与Publish建立一对多的关系,外键字段建立在多的一方
37 | publish = models.ForeignKey(to="Publish",to_field='nid',on_delete=models.CASCADE)
38 | # 与Author表建立多对多的关系,ManyToManyField可以建在两个模型中的任意一个,自动创建第三张表
39 | authors = models.ManyToManyField(to='Author',)
--------------------------------------------------------------------------------
/app01/tests.py:
--------------------------------------------------------------------------------
1 | from django.test import TestCase
2 |
3 | # Create your tests here.
4 |
--------------------------------------------------------------------------------
/app01/urls.py:
--------------------------------------------------------------------------------
1 | # -*- coding: utf-8 -*-
2 |
3 | from django.contrib import admin
4 | from django.urls import path, re_path, include
5 | from app01 import views
6 |
7 | app_name = 'app01'
8 | urlpatterns = [
9 | re_path(r'^addbook/', views.add_book, name='addbook'),
10 | re_path(r'^books/', views.books, name='books'),
11 | re_path(r'^app01/books/(\d+)/delete',views.del_book,name='delete'),
12 | re_path(r'^app01/books/(\d+)/modify',views.mod_book,name='modify'),
13 | re_path(r'^app01/books/(\d+)/(\d+)/aut_detail/',views.aut_detail,name='aut_detail'),
14 | ]
15 |
--------------------------------------------------------------------------------
/app01/views.py:
--------------------------------------------------------------------------------
1 | from django.shortcuts import render, redirect, HttpResponse
2 | from app01.models import *
3 |
4 |
5 | # Create your views here.
6 | def add_book(request):
7 | """
8 | 添加书籍信息的视图函数
9 | :param request:
10 | :return:
11 | """
12 | if request.POST:
13 | title = request.POST.get("title")
14 | price = request.POST.get("price")
15 | date = request.POST.get("date")
16 | publish = request.POST.get("publish")
17 | authors = request.POST.getlist('authors')
18 | book_obj = Book.objects.create(title=title, price=price, pub_date=date, publish_id=publish)
19 | book_obj.authors.add(*authors)
20 | return redirect('app01:books')
21 |
22 | pub_list = Publish.objects.all()
23 | aut_list = Author.objects.all()
24 |
25 | return render(request, 'add_book.html', {'pub_list': pub_list, 'aut_list': aut_list})
26 |
27 |
28 | def mod_book(request, id):
29 | mod_obj = Book.objects.filter(nid=id).first()
30 | if request.POST:
31 | title = request.POST.get("title")
32 | price = request.POST.get("price")
33 | date = request.POST.get("date")
34 | publish = request.POST.get("publish")
35 | authors = request.POST.getlist('authors')
36 | Book.objects.filter(pk=id).update(title=title, price=price, pub_date=date, publish_id=publish)
37 | mod_obj.authors.set(authors)
38 | return redirect('app01:books')
39 |
40 | pub_list = Publish.objects.all()
41 | aut_list = Author.objects.all()
42 | return render(request, 'modbook.html', {'mod_obj': mod_obj, 'pub_list': pub_list, 'aut_list': aut_list})
43 |
44 |
45 | def books(request):
46 | book_list = Book.objects.all()
47 |
48 | return render(request, 'books.html', {'book_list': book_list})
49 |
50 |
51 | def del_book(request, id):
52 | Book.objects.filter(nid=id).delete()
53 | return redirect('app01:books')
54 |
55 |
56 | def aut_detail(request, id, tag):
57 | if tag == "2":
58 | print(id)
59 | book_list = Book.objects.filter(authors__nid=id).all()
60 | else:
61 | book_list = Book.objects.filter(publish_id=id).all()
62 | return render(request, 'book_detail.html', locals())
63 |
--------------------------------------------------------------------------------
/bookms2/.idea/bookms2.iml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
27 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/bookms2/.idea/dataSources.local.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | #@
7 | `
8 |
9 |
10 | master_key
11 | root
12 | *:orm3
13 |
14 |
15 |
--------------------------------------------------------------------------------
/bookms2/.idea/dataSources.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | mysql
6 | true
7 | true
8 | $PROJECT_DIR$/bookms2/settings.py
9 | com.mysql.jdbc.Driver
10 | jdbc:mysql://127.0.0.1:3306/orm3
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/bookms2/.idea/misc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/bookms2/.idea/modules.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/bookms2/README.MD:
--------------------------------------------------------------------------------
1 | # 基于Django的图书管理系统
2 |
3 | ## 1.主体功能
4 |
5 | ```
6 | 1.列出图书列表、出版社列表、作者列表
7 | 2.点击作者,会列出其出版的图书列表
8 | 3.点击出版社,会列出旗下图书列表
9 | 4.可以创建、修改、删除 图书、作者、出版社
10 | ```
11 |
12 |
13 |
14 | ## 2.界面展示
15 |
16 | **图书馆首页:**
17 |
18 | 
19 |
20 |
21 |
22 | **添加书籍页面:**
23 |
24 | 
25 |
26 |
27 |
28 | 其他页面与上述两页类似,不做赘述。
29 |
30 | ## 3.项目详情
31 |
32 | ### 3.1 Django的简介
33 |
34 | `Django`是一个由Python编写的具有完整架站能力的开源Web框架。使用Django,只要很少的代码,Python的程序开发人员就可以轻松地完成一个正式网站所需要的大部分内容,并进一步开发出全功能的Web服务。
35 |
36 | `Django`基于原始的MVC模型(Model+View+Controller),并在此基础上做出了修改,将视图分为View模块和Template模块两个部分,使动态的逻辑处理与静态的页面展现分离开来。此外,Django的Model采用了ORM技术,将关系型数据库中的表封装为面向对象的PYTHON类,将类作为底层表的接口,避免了原始复杂的SQL语句的编写。MTV和MVC在本质上是一样的。如下图:
37 |
38 | 
39 |
40 |
41 |
42 | **Django的优点**:
43 |
44 | - 功能完善、要素齐全:该有的、可以没有的都有,常用的、不常用的工具都用。Django提供了大量的特性和工具,无须你自己定义、组合、增删及修改。但是,在有些人眼里这被认为是‘臃肿’不够灵活,发挥不了程序员的主动能力。(一体机和DIY你更喜欢哪个?^-^)
45 | - 完善的文档:经过十多年的发展和完善,Django有广泛的实践经验和完善的在线文档(可惜大多数为英文)。开发者遇到问题时可以搜索在线文档寻求解决方案。
46 | - 强大的数据库访问组件:Django的Model层自带数据库ORM组件,使得开发者无须学习其他数据库访问技术(SQL、pymysql、SQLALchemy等)。当然你也可以不用Django自带的ORM,而是使用其它访问技术,比如SQLALchemy。
47 | - 灵活的URL映射:Django使用正则表达式管理URL映射,灵活性高。
48 | - 丰富的Template模板语言:类似jinjia模板语言,不但原生功能丰富,还可以自定义模板标签。
49 | - 自带免费的后台管理系统:只需要通过简单的几行配置和代码就可以实现一个完整的后台数据管理控制平台。
50 | - 完整的错误信息提示:在开发调试过程中如果出现运行错误或者异常,Django可以提供非常完整的错误信息帮助定位问题。
51 |
52 | ### 3.2项目目录
53 |
54 | 本图书管理系统的源码目录结构如下:
55 |
56 | 
57 |
58 |
59 |
60 | ### 3.3 项目源码链接
61 |
62 | https://github.com/hyyc554/mydjango/tree/master/bookms2
63 |
--------------------------------------------------------------------------------
/bookms2/__init__.py:
--------------------------------------------------------------------------------
1 | import pymysql
2 | pymysql.install_as_MySQLdb()
--------------------------------------------------------------------------------
/bookms2/app01/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yance-dev/mydjango/2f841d2b82f9d002a8175dbbe7d963d479b4346a/bookms2/app01/__init__.py
--------------------------------------------------------------------------------
/bookms2/app01/__pycache__/__init__.cpython-37.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yance-dev/mydjango/2f841d2b82f9d002a8175dbbe7d963d479b4346a/bookms2/app01/__pycache__/__init__.cpython-37.pyc
--------------------------------------------------------------------------------
/bookms2/app01/__pycache__/admin.cpython-37.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yance-dev/mydjango/2f841d2b82f9d002a8175dbbe7d963d479b4346a/bookms2/app01/__pycache__/admin.cpython-37.pyc
--------------------------------------------------------------------------------
/bookms2/app01/__pycache__/apps.cpython-37.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yance-dev/mydjango/2f841d2b82f9d002a8175dbbe7d963d479b4346a/bookms2/app01/__pycache__/apps.cpython-37.pyc
--------------------------------------------------------------------------------
/bookms2/app01/__pycache__/models.cpython-37.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yance-dev/mydjango/2f841d2b82f9d002a8175dbbe7d963d479b4346a/bookms2/app01/__pycache__/models.cpython-37.pyc
--------------------------------------------------------------------------------
/bookms2/app01/__pycache__/urls.cpython-37.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yance-dev/mydjango/2f841d2b82f9d002a8175dbbe7d963d479b4346a/bookms2/app01/__pycache__/urls.cpython-37.pyc
--------------------------------------------------------------------------------
/bookms2/app01/__pycache__/views.cpython-37.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yance-dev/mydjango/2f841d2b82f9d002a8175dbbe7d963d479b4346a/bookms2/app01/__pycache__/views.cpython-37.pyc
--------------------------------------------------------------------------------
/bookms2/app01/admin.py:
--------------------------------------------------------------------------------
1 | from django.contrib import admin
2 |
3 | # Register your models here.
4 |
--------------------------------------------------------------------------------
/bookms2/app01/apps.py:
--------------------------------------------------------------------------------
1 | from django.apps import AppConfig
2 |
3 |
4 | class App01Config(AppConfig):
5 | name = 'app01'
6 |
--------------------------------------------------------------------------------
/bookms2/app01/migrations/0001_initial.py:
--------------------------------------------------------------------------------
1 | # Generated by Django 2.1 on 2018-08-22 17:33
2 |
3 | from django.db import migrations, models
4 | import django.db.models.deletion
5 |
6 |
7 | class Migration(migrations.Migration):
8 |
9 | initial = True
10 |
11 | dependencies = [
12 | ]
13 |
14 | operations = [
15 | migrations.CreateModel(
16 | name='Author',
17 | fields=[
18 | ('nid', models.AutoField(primary_key=True, serialize=False)),
19 | ('name', models.CharField(max_length=32)),
20 | ('age', models.IntegerField()),
21 | ],
22 | ),
23 | migrations.CreateModel(
24 | name='AuthorDetail',
25 | fields=[
26 | ('nid', models.AutoField(primary_key=True, serialize=False)),
27 | ('birthday', models.DateField()),
28 | ('telephone', models.BigIntegerField()),
29 | ('address', models.CharField(max_length=64)),
30 | ],
31 | ),
32 | migrations.CreateModel(
33 | name='Book',
34 | fields=[
35 | ('nid', models.AutoField(primary_key=True, serialize=False)),
36 | ('title', models.CharField(max_length=32)),
37 | ('pub_date', models.DateField()),
38 | ('price', models.DecimalField(decimal_places=2, max_digits=5)),
39 | ('authors', models.ManyToManyField(to='app01.Author')),
40 | ],
41 | ),
42 | migrations.CreateModel(
43 | name='Publish',
44 | fields=[
45 | ('nid', models.AutoField(primary_key=True, serialize=False)),
46 | ('name', models.CharField(max_length=32)),
47 | ('city', models.CharField(max_length=64)),
48 | ('email', models.EmailField(max_length=254)),
49 | ],
50 | ),
51 | migrations.AddField(
52 | model_name='book',
53 | name='publish',
54 | field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='app01.Publish'),
55 | ),
56 | migrations.AddField(
57 | model_name='author',
58 | name='author_detail',
59 | field=models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to='app01.AuthorDetail'),
60 | ),
61 | ]
62 |
--------------------------------------------------------------------------------
/bookms2/app01/migrations/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yance-dev/mydjango/2f841d2b82f9d002a8175dbbe7d963d479b4346a/bookms2/app01/migrations/__init__.py
--------------------------------------------------------------------------------
/bookms2/app01/migrations/__pycache__/0001_initial.cpython-37.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yance-dev/mydjango/2f841d2b82f9d002a8175dbbe7d963d479b4346a/bookms2/app01/migrations/__pycache__/0001_initial.cpython-37.pyc
--------------------------------------------------------------------------------
/bookms2/app01/migrations/__pycache__/__init__.cpython-37.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yance-dev/mydjango/2f841d2b82f9d002a8175dbbe7d963d479b4346a/bookms2/app01/migrations/__pycache__/__init__.cpython-37.pyc
--------------------------------------------------------------------------------
/bookms2/app01/models.py:
--------------------------------------------------------------------------------
1 | from django.db import models
2 |
3 |
4 | # Create your models here.
5 |
6 | class Author(models.Model):
7 | """
8 | 作者表的创建
9 | """
10 | nid = models.AutoField(primary_key=True)
11 | name = models.CharField(max_length=32)
12 | age = models.IntegerField()
13 | # 与AuthorDetail创建一对一的关系
14 | author_detail = models.OneToOneField(to="AuthorDetail", on_delete=models.CASCADE)
15 |
16 |
17 | class AuthorDetail(models.Model):
18 | nid = models.AutoField(primary_key=True)
19 | birthday = models.DateField()
20 | telephone = models.BigIntegerField()
21 | address = models.CharField(max_length=64)
22 |
23 |
24 | class Publish(models.Model):
25 | nid = models.AutoField(primary_key=True)
26 | name = models.CharField(max_length=32)
27 | city = models.CharField(max_length=64)
28 | email = models.EmailField()
29 |
30 |
31 | class Book(models.Model):
32 | nid = models.AutoField(primary_key=True)
33 | title = models.CharField(max_length=32)
34 | pub_date = models.DateField()
35 | price = models.DecimalField(max_digits=5, decimal_places=2)
36 | # 与Publish建立一对多的关系,外键字段建立在多的一方
37 | publish = models.ForeignKey(to="Publish",to_field='nid',on_delete=models.CASCADE)
38 | # 与Author表建立多对多的关系,ManyToManyField可以建在两个模型中的任意一个,自动创建第三张表
39 | authors = models.ManyToManyField(to='Author',)
--------------------------------------------------------------------------------
/bookms2/app01/tests.py:
--------------------------------------------------------------------------------
1 | from django.test import TestCase
2 |
3 | # Create your tests here.
4 |
--------------------------------------------------------------------------------
/bookms2/app01/urls.py:
--------------------------------------------------------------------------------
1 | # -*- coding: utf-8 -*-
2 |
3 | from django.contrib import admin
4 | from django.urls import path, re_path, include
5 | from app01 import views
6 |
7 | app_name = 'app01'
8 | urlpatterns = [
9 | re_path(r'^addbook/', views.add_book, name='addbook'),
10 | re_path(r'^books/', views.books, name='books'),
11 | re_path(r'^app01/books/(\d+)/delete',views.del_book,name='delete'),
12 | re_path(r'^app01/books/(\d+)/modify',views.mod_book,name='modify'),
13 | re_path(r'^app01/books/(\d+)/(\d+)/aut_detail/',views.aut_detail,name='aut_detail'),
14 | ]
15 |
--------------------------------------------------------------------------------
/bookms2/app01/views.py:
--------------------------------------------------------------------------------
1 | from django.shortcuts import render, redirect, HttpResponse
2 | from app01.models import *
3 |
4 |
5 | # Create your views here.
6 | def add_book(request):
7 | """
8 | 添加书籍信息的视图函数
9 | :param request:
10 | :return:
11 | """
12 | if request.POST:
13 | title = request.POST.get("title")
14 | price = request.POST.get("price")
15 | date = request.POST.get("date")
16 | publish = request.POST.get("publish")
17 | authors = request.POST.getlist('authors')
18 | book_obj = Book.objects.create(title=title, price=price, pub_date=date, publish_id=publish)
19 | book_obj.authors.add(*authors)
20 | return redirect('app01:books')
21 |
22 | pub_list = Publish.objects.all()
23 | aut_list = Author.objects.all()
24 |
25 | return render(request, 'add_book.html', {'pub_list': pub_list, 'aut_list': aut_list})
26 |
27 |
28 | def mod_book(request, id):
29 | mod_obj = Book.objects.filter(nid=id).first()
30 | if request.POST:
31 | title = request.POST.get("title")
32 | price = request.POST.get("price")
33 | date = request.POST.get("date")
34 | publish = request.POST.get("publish")
35 | authors = request.POST.getlist('authors')
36 | Book.objects.filter(pk=id).update(title=title, price=price, pub_date=date, publish_id=publish)
37 | mod_obj.authors.set(authors)
38 | return redirect('app01:books')
39 |
40 | pub_list = Publish.objects.all()
41 | aut_list = Author.objects.all()
42 | return render(request, 'modbook.html', {'mod_obj': mod_obj, 'pub_list': pub_list, 'aut_list': aut_list})
43 |
44 |
45 | def books(request):
46 | book_list = Book.objects.all()
47 |
48 | return render(request, 'books.html', {'book_list': book_list})
49 |
50 |
51 | def del_book(request, id):
52 | Book.objects.filter(nid=id).delete()
53 | return redirect('app01:books')
54 |
55 |
56 | def aut_detail(request, id, tag):
57 | if tag == "2":
58 | print(id)
59 | book_list = Book.objects.filter(authors__nid=id).all()
60 | else:
61 | book_list = Book.objects.filter(publish_id=id).all()
62 | return render(request, 'book_detail.html', locals())
63 |
--------------------------------------------------------------------------------
/bookms2/bookms2/__init__.py:
--------------------------------------------------------------------------------
1 | import pymysql
2 | pymysql.install_as_MySQLdb()
--------------------------------------------------------------------------------
/bookms2/bookms2/__pycache__/__init__.cpython-37.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yance-dev/mydjango/2f841d2b82f9d002a8175dbbe7d963d479b4346a/bookms2/bookms2/__pycache__/__init__.cpython-37.pyc
--------------------------------------------------------------------------------
/bookms2/bookms2/__pycache__/settings.cpython-37.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yance-dev/mydjango/2f841d2b82f9d002a8175dbbe7d963d479b4346a/bookms2/bookms2/__pycache__/settings.cpython-37.pyc
--------------------------------------------------------------------------------
/bookms2/bookms2/__pycache__/urls.cpython-37.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yance-dev/mydjango/2f841d2b82f9d002a8175dbbe7d963d479b4346a/bookms2/bookms2/__pycache__/urls.cpython-37.pyc
--------------------------------------------------------------------------------
/bookms2/bookms2/__pycache__/wsgi.cpython-37.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yance-dev/mydjango/2f841d2b82f9d002a8175dbbe7d963d479b4346a/bookms2/bookms2/__pycache__/wsgi.cpython-37.pyc
--------------------------------------------------------------------------------
/bookms2/bookms2/settings.py:
--------------------------------------------------------------------------------
1 | """
2 | Django settings for bookms2 project.
3 |
4 | Generated by 'django-admin startproject' using Django 2.1.
5 |
6 | For more information on this file, see
7 | https://docs.djangoproject.com/en/2.1/topics/settings/
8 |
9 | For the full list of settings and their values, see
10 | https://docs.djangoproject.com/en/2.1/ref/settings/
11 | """
12 |
13 | import os
14 |
15 | # Build paths inside the project like this: os.path.join(BASE_DIR, ...)
16 | BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
17 |
18 |
19 | # Quick-start development settings - unsuitable for production
20 | # See https://docs.djangoproject.com/en/2.1/howto/deployment/checklist/
21 |
22 | # SECURITY WARNING: keep the secret key used in production secret!
23 | SECRET_KEY = '(wft0w((ig%ju=kewm0m@qk+l_mym6_8ukk3ftub36u2$-w*2d'
24 |
25 | # SECURITY WARNING: don't run with debug turned on in production!
26 | DEBUG = True
27 |
28 | ALLOWED_HOSTS = []
29 |
30 |
31 | # Application definition
32 |
33 | INSTALLED_APPS = [
34 | 'django.contrib.admin',
35 | 'django.contrib.auth',
36 | 'django.contrib.contenttypes',
37 | 'django.contrib.sessions',
38 | 'django.contrib.messages',
39 | 'django.contrib.staticfiles',
40 | 'app01.apps.App01Config',
41 | ]
42 |
43 | MIDDLEWARE = [
44 | 'django.middleware.security.SecurityMiddleware',
45 | 'django.contrib.sessions.middleware.SessionMiddleware',
46 | 'django.middleware.common.CommonMiddleware',
47 | 'django.middleware.csrf.CsrfViewMiddleware',
48 | 'django.contrib.auth.middleware.AuthenticationMiddleware',
49 | 'django.contrib.messages.middleware.MessageMiddleware',
50 | 'django.middleware.clickjacking.XFrameOptionsMiddleware',
51 | ]
52 |
53 | ROOT_URLCONF = 'bookms2.urls'
54 |
55 | TEMPLATES = [
56 | {
57 | 'BACKEND': 'django.template.backends.django.DjangoTemplates',
58 | 'DIRS': [os.path.join(BASE_DIR, 'templates')]
59 | ,
60 | 'APP_DIRS': True,
61 | 'OPTIONS': {
62 | 'context_processors': [
63 | 'django.template.context_processors.debug',
64 | 'django.template.context_processors.request',
65 | 'django.contrib.auth.context_processors.auth',
66 | 'django.contrib.messages.context_processors.messages',
67 | ],
68 | },
69 | },
70 | ]
71 |
72 | WSGI_APPLICATION = 'bookms2.wsgi.application'
73 |
74 |
75 | # Database
76 | # https://docs.djangoproject.com/en/2.1/ref/settings/#databases
77 |
78 | # DATABASES = {
79 | # 'default': {
80 | # 'ENGINE': 'django.db.backends.sqlite3',
81 | # 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
82 | # }
83 | # }
84 | DATABASES = {
85 | 'default': {
86 | 'ENGINE': 'django.db.backends.mysql',
87 | 'NAME':'orm3',# 要连接的数据库,连接前需要创建好
88 | 'USER':'root',# 连接数据库的用户名
89 | 'PASSWORD':'123',# 连接数据库的密码
90 | 'HOST':'127.0.0.1', # 连接主机,默认本级
91 | 'PORT': 3306 # 端口 默认3306
92 | }
93 | }
94 |
95 |
96 | # Password validation
97 | # https://docs.djangoproject.com/en/2.1/ref/settings/#auth-password-validators
98 |
99 | AUTH_PASSWORD_VALIDATORS = [
100 | {
101 | 'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
102 | },
103 | {
104 | 'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
105 | },
106 | {
107 | 'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
108 | },
109 | {
110 | 'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
111 | },
112 | ]
113 |
114 |
115 | # Internationalization
116 | # https://docs.djangoproject.com/en/2.1/topics/i18n/
117 |
118 | LANGUAGE_CODE = 'en-us'
119 |
120 | TIME_ZONE = 'UTC'
121 |
122 | USE_I18N = True
123 |
124 | USE_L10N = True
125 |
126 | USE_TZ = True
127 |
128 |
129 | # Static files (CSS, JavaScript, Images)
130 | # https://docs.djangoproject.com/en/2.1/howto/static-files/
131 |
132 | STATIC_URL = '/static/'
133 | STATICFILES_DIRS = (
134 | os.path.join(BASE_DIR, "static"),
135 | )
136 |
--------------------------------------------------------------------------------
/bookms2/bookms2/urls.py:
--------------------------------------------------------------------------------
1 | """bookms2 URL Configuration
2 |
3 | The `urlpatterns` list routes URLs to views. For more information please see:
4 | https://docs.djangoproject.com/en/2.1/topics/http/urls/
5 | Examples:
6 | Function views
7 | 1. Add an import: from my_app import views
8 | 2. Add a URL to urlpatterns: path('', views.home, name='home')
9 | Class-based views
10 | 1. Add an import: from other_app.views import Home
11 | 2. Add a URL to urlpatterns: path('', Home.as_view(), name='home')
12 | Including another URLconf
13 | 1. Import the include() function: from django.urls import include, path
14 | 2. Add a URL to urlpatterns: path('blog/', include('blog.urls'))
15 | """
16 | from django.contrib import admin
17 | from django.urls import path,re_path,include
18 |
19 | urlpatterns = [
20 | path('admin/', admin.site.urls),
21 | re_path(r'^app01/',include('app01.urls',namespace='app01'))
22 | ]
23 |
--------------------------------------------------------------------------------
/bookms2/bookms2/wsgi.py:
--------------------------------------------------------------------------------
1 | """
2 | WSGI config for bookms2 project.
3 |
4 | It exposes the WSGI callable as a module-level variable named ``application``.
5 |
6 | For more information on this file, see
7 | https://docs.djangoproject.com/en/2.1/howto/deployment/wsgi/
8 | """
9 |
10 | import os
11 |
12 | from django.core.wsgi import get_wsgi_application
13 |
14 | os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'bookms2.settings')
15 |
16 | application = get_wsgi_application()
17 |
--------------------------------------------------------------------------------
/bookms2/img/addbook.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yance-dev/mydjango/2f841d2b82f9d002a8175dbbe7d963d479b4346a/bookms2/img/addbook.png
--------------------------------------------------------------------------------
/bookms2/img/books.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yance-dev/mydjango/2f841d2b82f9d002a8175dbbe7d963d479b4346a/bookms2/img/books.png
--------------------------------------------------------------------------------
/bookms2/img/djangomtv.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yance-dev/mydjango/2f841d2b82f9d002a8175dbbe7d963d479b4346a/bookms2/img/djangomtv.png
--------------------------------------------------------------------------------
/bookms2/img/dookdetail.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yance-dev/mydjango/2f841d2b82f9d002a8175dbbe7d963d479b4346a/bookms2/img/dookdetail.png
--------------------------------------------------------------------------------
/bookms2/img/tree.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yance-dev/mydjango/2f841d2b82f9d002a8175dbbe7d963d479b4346a/bookms2/img/tree.png
--------------------------------------------------------------------------------
/bookms2/manage.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env python
2 | import os
3 | import sys
4 |
5 | if __name__ == '__main__':
6 | os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'bookms2.settings')
7 | try:
8 | from django.core.management import execute_from_command_line
9 | except ImportError as exc:
10 | raise ImportError(
11 | "Couldn't import Django. Are you sure it's installed and "
12 | "available on your PYTHONPATH environment variable? Did you "
13 | "forget to activate a virtual environment?"
14 | ) from exc
15 | execute_from_command_line(sys.argv)
16 |
--------------------------------------------------------------------------------
/bookms2/readme_files/1356841-20180823234512911-2032267074.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yance-dev/mydjango/2f841d2b82f9d002a8175dbbe7d963d479b4346a/bookms2/readme_files/1356841-20180823234512911-2032267074.png
--------------------------------------------------------------------------------
/bookms2/readme_files/1356841-20180823234532108-996382848.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yance-dev/mydjango/2f841d2b82f9d002a8175dbbe7d963d479b4346a/bookms2/readme_files/1356841-20180823234532108-996382848.png
--------------------------------------------------------------------------------
/bookms2/readme_files/1356841-20180823234551256-365339085.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yance-dev/mydjango/2f841d2b82f9d002a8175dbbe7d963d479b4346a/bookms2/readme_files/1356841-20180823234551256-365339085.png
--------------------------------------------------------------------------------
/bookms2/readme_files/1356841-20180823234613387-441295772.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yance-dev/mydjango/2f841d2b82f9d002a8175dbbe7d963d479b4346a/bookms2/readme_files/1356841-20180823234613387-441295772.png
--------------------------------------------------------------------------------
/bookms2/readme_files/20180411175016.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yance-dev/mydjango/2f841d2b82f9d002a8175dbbe7d963d479b4346a/bookms2/readme_files/20180411175016.png
--------------------------------------------------------------------------------
/bookms2/readme_files/420602.css:
--------------------------------------------------------------------------------
1 | body {
2 | background-image: url(https://images.pexels.com/photos/827058/pexels-photo-827058.jpeg?auto=compress&cs=tinysrgb&dpr=2&h=750&w=1260);
3 | background-repeat: no-repeat;
4 | background-attachment: fixed;
5 | }
--------------------------------------------------------------------------------
/bookms2/readme_files/InsertCode.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yance-dev/mydjango/2f841d2b82f9d002a8175dbbe7d963d479b4346a/bookms2/readme_files/InsertCode.gif
--------------------------------------------------------------------------------
/bookms2/readme_files/b.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yance-dev/mydjango/2f841d2b82f9d002a8175dbbe7d963d479b4346a/bookms2/readme_files/b.png
--------------------------------------------------------------------------------
/bookms2/readme_files/bundle-iMetro-mobile.css:
--------------------------------------------------------------------------------
1 | body{font-size:14px!important;font-family:'PingFang SC','Helvetica Neue','Helvetica','Arial',sans-serif}#blog_nav_rss{display:none!important}#blog_nav_rss_image{display:none!important}#blog_nav_newpost{display:none!important}img{max-width:300px!important;height:auto}div.commentform textarea{width:330px;height:200px}.commentbox_title{width:auto}#green_channel{width:320px}#cnblogs_post_body table[style]{width:auto!important;height:auto!important}#sidebar_search_box input[type=text]{width:260px}.sh-gutter .line,.sh-gutter code{white-space:normal!important}#cnblogs_post_body table{display:block;overflow-x:scroll;-webkit-overflow-scrolling:regular}#cnblogs_post_body th,#cnblogs_post_body td,.cnblogs-post-body th,.cnblogs-post-body td{white-space:nowrap}#cnblogs_post_body table::-webkit-scrollbar:horizontal{height:12px}#cnblogs_post_body table::-webkit-scrollbar-track{-webkit-box-shadow:inset 0 0 6px rgba(0,0,0,.3);border-radius:10px;background-color:#f5f5f5}#cnblogs_post_body table::-webkit-scrollbar{width:12px;background-color:#f5f5f5}#cnblogs_post_body table::-webkit-scrollbar-thumb{border-radius:10px;-webkit-box-shadow:inset 0 0 6px rgba(0,0,0,.3);background-color:#555}#cnblogs_c1,#cnblogs_c2{text-align:center}.commentform{margin-left:10px}#home{width:auto}#mainContent{float:none;width:auto}#sideBar{float:none;width:auto}#blogTitle h1{font-size:300%}.menu{font-size:1rem}#blogTitle h1{font-size:2rem}div.commentform textarea{width:320px}.postTitle2{font-size:1.2rem}
--------------------------------------------------------------------------------
/bookms2/readme_files/bundle-iMetro.css:
--------------------------------------------------------------------------------
1 | #EntryTag{margin-top:20px;font-size:9pt;color:gray}.topicListFooter{text-align:right;margin-right:10px;margin-top:10px}#divRefreshComments{text-align:right;margin-right:10px;margin-bottom:5px;font-size:9pt}*{margin:0;padding:0}body{background-image:url("images/background.jpg");background-repeat:no-repeat;background-attachment:fixed}table{border-collapse:collapse;border-spacing:0}fieldset,img{border:0}li{list-style:none}h1,h2,h3,h4,h5,h6{font-size:100%;font-weight:normal}a:link,a:visited,a:hover,a:active{color:#000;text-decoration:none}.clear{clear:both}#home{background-color:#fff;font-family:"微软雅黑";font-size:12px;color:#000;padding-top:30px;padding-right:25px;word-wrap:break-word;box-shadow:0 0 25px black;position:relative;width:925px;margin:15px auto;line-height:1.5}#header{margin-bottom:15px;padding-left:45px}#blogTitle{margin-bottom:15px}#lnkBlogLogo{background-color:green;width:20px;height:120px;display:block;position:absolute;left:0}#blogLogo{display:none}#blogTitle h1{font-size:400%}#blogTitle h2{display:none}#navigator{}#navList{overflow:auto;margin-bottom:10px}#navList li{float:left}.menu{color:gray!important;margin-right:30px;font-size:250%}#navList a[href="//www.cnblogs.com/"]{color:#000!important}.aHeaderXML{}.blogStats{text-align:right;color:gray}#main{overflow:auto;padding-left:25px}#mainContent .forFlow{}#mainContent{float:left;width:650px}.day{margin-bottom:10px;border-bottom:1px solid #000}.dayTitle{background-color:#cd4900;padding-top:3px;padding-left:15px;padding-right:15px;padding-bottom:3px;margin-bottom:10px}.dayTitle a{color:#fff;font-size:133%}.postTitle{background-image:url("images/logo.png");background-repeat:repeat-y;background-position:-10px 0;margin-bottom:10px;padding-left:15px;padding-right:15px;line-height:1.5}.postTitle2{font-size:200%}.postCon{font-size:116%;padding-left:15px;padding-right:15px;margin-bottom:5px;overflow:auto}.postDesc{color:gray;text-align:right;padding-left:15px;padding-right:15px;margin-bottom:5px}.postDesc a{color:gray}.postSeparator{border-bottom:1px dashed #000;margin-bottom:10px}.topicListFooter{padding-left:15px;padding-right:15px;margin:0}.topicListFooter a{color:green}#sideBar{width:225px;float:right}#sideBarMain{font-size:116%}#sideBarMain li{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.newsItem{border:1px solid #000;padding:15px;margin-bottom:15px}#calendar{border:1px solid #000;padding:15px;margin-bottom:15px}.Cal{width:100%}.CalTitle{width:100%;border-bottom:1px solid #000}.CalNextPrev a{font-weight:normal!important;color:#000!important;background-color:transparent!important}.CalDayHeader{border-bottom:1px dashed #000}#calendar a{color:green;font-weight:bold}#calendar a:hover{color:#fff;background-color:green}.CalTodayDay{font-weight:bold;color:#cd4900}.catListTag{overflow:auto}.catListTag li{float:left;float:none\9;margin:0 4px 6px 0;overflow:visible!important;white-space:normal!important;word-break:break-all!important}.catListTag a{color:#fff;background-color:green;padding:1px 3px 1px 3px}.div_my_zzk{position:relative}.input_my_zzk{width:155px;height:25px;padding-right:30px;width:100px\9;height:auto\9;padding-right:0px\9}.btn_my_zzk{background-repeat:no-repeat;background-size:25px;background-color:transparent;width:25px;height:25px;color:transparent;border:0;border-style:none;position:absolute;cursor:pointer;top:2px;right:6px;background-repeat:repeat\9;background-size:auto\9;background-color:green\9;width:auto\9;height:auto\9;color:white\9;border:0px\9;border-style:none\9;position:static\9;cursor:pointer\9}#btnZzk{background-image:url("images/search.png");background-image:none\9;background-image:none\0}.mySearch input[value="谷歌搜索"]{background-image:url("images/google.png");background-image:none\9;background-image:none\0}#leftcontentcontainer>div{border:1px solid #000;padding:15px;margin-bottom:15px}.catListTitle{font-size:200%;margin-bottom:5px}.catListComment{}.recent_comment_body{text-indent:2em;font-size:85%;color:gray!important;overflow:visible!important;white-space:normal!important}.recent_comment_author{border-bottom:1px dashed #000;font-size:85%;color:green!important;overflow:visible!important;white-space:normal!important}#topics{margin-bottom:10px;border-bottom:1px solid #000}.postBody{font-size:116%;padding-left:15px;padding-right:15px;margin-bottom:5px}#cnblogs_post_body{margin-bottom:30px;overflow:auto}#MySignature{background-color:#f8f8ee;border:solid 1px #e8e7d0;box-shadow:0 0 15px #aaa;padding:10px;margin-bottom:10px;color:gray}#BlogPostCategory{margin-bottom:5px}#EntryTag{margin-top:0;text-align:right}#EntryTag a{color:#fff;background-color:green;padding:1px 3px 1px 3px}.feedback_area_title{color:#fff;font-size:133%;background-color:#cd4900;padding:3px 15px 3px 15px;margin-bottom:10px}.feedbackItem{position:relative;border-bottom:1px solid #000;padding-left:15px;padding-right:15px;margin-bottom:10px}.feedbackListSubtitle{margin-left:65px;margin-bottom:5px;border-bottom:1px dashed #000}.feedbackManage{position:absolute;bottom:0;right:15px}.feedbackManage a{color:gray}.feedbackManage+a[href^="#"]{display:block;width:50px;height:50px;background-color:green;position:absolute;color:#fff;font-size:133%;text-align:center;left:15px}.louzhu{color:#cd4900}.feedbackCon{padding-left:65px;margin-bottom:35px;font-size:116%}#comment_nav{margin-right:0;margin-bottom:10px;text-align:center;padding-top:3px;padding-bottom:3px;padding-left:15px;padding-right:15px;background-color:green}#comment_nav a{color:#fff;font-size:116%}.entrylistTitle,.PostListTitle,.thumbTitle{background-color:#cd4900;padding-top:3px;padding-left:15px;padding-right:15px;padding-bottom:3px;margin-bottom:10px;color:#fff;font-size:133%}.entrylistDescription,.thumbDescription{background-color:green;padding-top:3px;padding-left:15px;padding-right:15px;padding-bottom:3px;margin-bottom:10px;color:#fff;text-align:right}.entrylistItem{margin-bottom:10px;border-bottom:1px solid #000}.entrylistPosttitle{background-image:url("images/logo.png");background-repeat:repeat-y;background-position:-10px 0;margin-bottom:10px;padding-left:15px;padding-right:15px}.entrylistItemTitle{font-size:200%}.entrylistPostSummary{font-size:116%;padding-left:15px;padding-right:15px;margin-bottom:5px}.entrylistItemPostDesc{color:gray;text-align:right;padding-left:15px;padding-right:15px;margin-bottom:5px}.entrylistItemPostDesc a{color:gray}.entrylist .postSeparator{display:none}.PostList{padding-left:15px;padding-right:15px;margin-bottom:10px;border-bottom:1px dashed #000}.postTitl2{float:left;margin-bottom:5px}.postDesc2{float:right;color:gray;margin-bottom:5px}.postText2{clear:both;color:gray;margin-bottom:5px}.divPhoto{border:1px solid green;padding:2px;margin-right:10px;opacity:.5}.divPhoto:hover{opacity:1}#footer{text-align:center;border-top:2px solid green;margin-top:50px;margin-left:25px;padding-top:10px;padding-bottom:10px}.postBody h1{display:block;font-size:3em;font-weight:bold;margin:15px auto 2px auto}.postBody h2{display:block;font-size:2em;font-weight:bold;margin:15px auto 2px auto}.postBody h3{display:block;font-size:1.17em;font-weight:bold;margin:15px auto 2px auto}.postBody h4{display:block;font-weight:bold;margin:15px auto 2px auto}.postBody h5{display:block;font-size:.83em;font-weight:bold;margin:15px auto 2px auto}.postBody h6{font-size:100%;font-size:.67em;font-weight:bold;margin:15px auto 2px auto}.postBody a{color:green;padding:1px 3px 1px 3px}.postBody a:hover{background-color:green;color:#fff}.postBody blockquote{background:url("images/quote.png") no-repeat -75px -20px #f0f0f0;border-radius:10px;margin:20px 0;padding:20px 50px}.postCon a{color:green;padding:1px 3px 1px 3px}.postCon a:hover{background-color:green;color:#fff}.c_b_p_desc_readmore{color:#cd4900!important}.c_b_p_desc_readmore:hover{color:#fff!important;background-color:#cd4900!important}#cnblogs_post_body img{max-width:800px}
--------------------------------------------------------------------------------
/bookms2/readme_files/icon_weibo_24.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yance-dev/mydjango/2f841d2b82f9d002a8175dbbe7d963d479b4346a/bookms2/readme_files/icon_weibo_24.png
--------------------------------------------------------------------------------
/bookms2/readme_files/img.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yance-dev/mydjango/2f841d2b82f9d002a8175dbbe7d963d479b4346a/bookms2/readme_files/img.gif
--------------------------------------------------------------------------------
/bookms2/readme_files/indent.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yance-dev/mydjango/2f841d2b82f9d002a8175dbbe7d963d479b4346a/bookms2/readme_files/indent.png
--------------------------------------------------------------------------------
/bookms2/readme_files/lk.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yance-dev/mydjango/2f841d2b82f9d002a8175dbbe7d963d479b4346a/bookms2/readme_files/lk.png
--------------------------------------------------------------------------------
/bookms2/readme_files/logo.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yance-dev/mydjango/2f841d2b82f9d002a8175dbbe7d963d479b4346a/bookms2/readme_files/logo.gif
--------------------------------------------------------------------------------
/bookms2/readme_files/mention.js.下载:
--------------------------------------------------------------------------------
1 | /*jslint forin: true */
2 |
3 | ; (function ($) {
4 | $.fn.extend({
5 | mention: function (options) {
6 | this.opts = {
7 | users: [],
8 | delimiter: '@',
9 | sensitive: true,
10 | queryBy: 'DisplayName',
11 | typeaheadOpts: {}
12 | };
13 |
14 | var settings = $.extend({}, this.opts, options),
15 | _checkDependencies = function () {
16 | if (typeof $ == 'undefined') {
17 | throw new Error("jQuery is Required");
18 | }
19 | else {
20 | if (typeof $.fn.typeahead == 'undefined') {
21 | throw new Error("Typeahead is Required");
22 | }
23 | }
24 | return true;
25 | },
26 | _extractCurrentQuery = function (query, caratPos) {
27 | var i;
28 | for (i = caratPos; i >= 0; i--) {
29 | if (query[i] == settings.delimiter) {
30 | break;
31 | }
32 | }
33 | return query.substring(i, caratPos);
34 | },
35 | _matcher = function () {
36 | this.query = this.query.toLowerCase();
37 | if (this.query.indexOf(settings.delimiter) > -1) {
38 | var delimiter_index = this.query.lastIndexOf(settings.delimiter);
39 | var element = document.querySelector('#' + this.$element[0].id);
40 | var coordinates = getCaretCoordinates(element, this.query.lastIndexOf(settings.delimiter) + 1);
41 | var fontSize = getComputedStyle(element).getPropertyValue('font-size').replace('px', '');
42 | this.at_top = coordinates.top + parseInt(fontSize);
43 | this.at_left = coordinates.left;
44 | var lastQuery = this.query.substring(delimiter_index + 1);
45 | if (lastQuery.indexOf(' ') == -1 && lastQuery.length > 0) {
46 | this.query = lastQuery;
47 | } else {
48 | if (lastQuery != '') {
49 | return false;
50 | }
51 | this.query = '';
52 | }
53 | return true;
54 | }
55 | return false;
56 | },
57 | _updater = function (item) {
58 | var data = this.textValue,
59 | caratPos = this.$element[0].selectionStart,
60 | i;
61 |
62 | for (i = caratPos; i >= 0; i--) {
63 | if (data[i] == settings.delimiter) {
64 | break;
65 | }
66 | }
67 | var replace = data.substring(i, caratPos),
68 | textBefore = data.substring(0, i),
69 | textAfter = data.substring(caratPos),
70 | data = textBefore + settings.delimiter + item + textAfter;
71 |
72 | this.tempQuery = data;
73 | return data;
74 | },
75 | _sorter = function (items) {
76 | if (items.length && settings.sensitive) {
77 | var currentUser = _extractCurrentQuery(this.query, this.$element[0].selectionStart).substring(1),
78 | i, len = items.length,
79 | priorities = {
80 | highest: [],
81 | high: [],
82 | med: [],
83 | low: []
84 | }, finals = [];
85 | if (currentUser.length == 1) {
86 | for (i = 0; i < len; i++) {
87 | var currentRes = items[i];
88 |
89 | if ((currentRes.DisplayName[0] == currentUser)) {
90 | priorities.highest.push(currentRes);
91 | }
92 | else if ((currentRes.DisplayName[0].toLowerCase() == currentUser.toLowerCase())) {
93 | priorities.high.push(currentRes);
94 | }
95 | else if (currentRes.DisplayName.indexOf(currentUser) != -1) {
96 | priorities.med.push(currentRes);
97 | }
98 | else {
99 | priorities.low.push(currentRes);
100 | }
101 | }
102 | for (i in priorities) {
103 | var j;
104 | for (j in priorities[i]) {
105 | finals.push(priorities[i][j]);
106 | }
107 | }
108 | return finals;
109 | }
110 | }
111 | return items;
112 | },
113 | _render = function (items) {
114 | var that = this;
115 | items = $(items).map(function (i, item) {
116 |
117 | i = $(that.options.item);
118 |
119 | var _linkHtml = $('
');
120 |
121 | if (item.IconUrl) {
122 | _linkHtml.append('
');
123 | }
124 | if (item.DisplayName) {
125 | _linkHtml.append('' + item.DisplayName + '');
126 | }
127 |
128 | i.find('a').html(that.highlighter(_linkHtml.html()));
129 | return i[0];
130 | });
131 |
132 | items.first().addClass('active');
133 | this.$menu.html(items);
134 | return this;
135 | };
136 |
137 | $.fn.typeahead.Constructor.prototype.render = _render;
138 |
139 | return this.each(function () {
140 | var _this = $(this);
141 | if (_checkDependencies()) {
142 | _this.typeahead($.extend({
143 | source: settings.users,
144 | matcher: _matcher,
145 | updater: _updater,
146 | sorter: _sorter
147 | }, settings.typeaheadOpts));
148 | }
149 | });
150 | }
151 | });
152 | })(jQuery);
153 |
154 | /* =============================================================
155 | * bootstrap-typeahead.js v2.3.2
156 | * http://twitter.github.com/bootstrap/javascript.html#typeahead
157 | * =============================================================
158 | * Copyright 2012 Twitter, Inc.
159 | *
160 | * Licensed under the Apache License, Version 2.0 (the "License");
161 | * you may not use this file except in compliance with the License.
162 | * You may obtain a copy of the License at
163 | *
164 | * http://www.apache.org/licenses/LICENSE-2.0
165 | *
166 | * Unless required by applicable law or agreed to in writing, software
167 | * distributed under the License is distributed on an "AS IS" BASIS,
168 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
169 | * See the License for the specific language governing permissions and
170 | * limitations under the License.
171 | * ============================================================ */
172 |
173 |
174 | !function ($) {
175 |
176 | "use strict"; // jshint ;_;
177 |
178 |
179 | /* TYPEAHEAD PUBLIC CLASS DEFINITION
180 | * ================================= */
181 |
182 | var Typeahead = function (element, options) {
183 | this.$element = $(element)
184 | this.options = $.extend({}, $.fn.typeahead.defaults, options)
185 | this.matcher = this.options.matcher || this.matcher
186 | this.sorter = this.options.sorter || this.sorter
187 | this.highlighter = this.options.highlighter || this.highlighter
188 | this.updater = this.options.updater || this.updater
189 | this.source = this.options.source;
190 | this.search = this.options.search;
191 | this.under = this.options.under || false;
192 | this.fixed = this.options.fixed || false;
193 | this.sort = this.options.sort || false;
194 | this.input_text = this.options.input_text || false;
195 | this.url = this.options.url || location.protocol + '//mention.cnblogs.com/mention-users';
196 | this.item_count = this.options.item_count || 10;
197 | this.textValue;
198 | this.at_top;
199 | this.at_left;
200 | this.$menu = $(this.options.menu)
201 | this.shown = false
202 | this.listen()
203 | }
204 |
205 | Typeahead.prototype = {
206 |
207 | constructor: Typeahead
208 |
209 | , select: function () {
210 | var separator=' '
211 | if (this.query == '') {
212 | separator = ''
213 | }
214 | var val = this.$menu.find('.active').text()
215 | this.$element
216 | .val(this.updater(val + separator))
217 | .change()
218 | return this.hide()
219 | }
220 |
221 | , updater: function (item) {
222 | return item
223 | }
224 |
225 | , show: function () {
226 | var pos = $.extend({}, this.$element.position(), {
227 | height: this.$element[0].offsetHeight
228 | })
229 |
230 | if (this.shown && this.fixed) {
231 | this.$menu.show()
232 | }
233 | else {
234 | var top, left;
235 | if (this.under) {
236 | top = pos.top + this.at_top
237 | left = pos.left + this.at_left
238 | }
239 | else if (this.input_text) {
240 | top = pos.top + pos.height
241 | left = pos.left + this.at_left
242 | }
243 | else {
244 | top = pos.top + pos.height
245 | left = pos.left
246 | }
247 |
248 | this.$menu
249 | .insertAfter(this.$element)
250 | .css({
251 | top: top,
252 | left: left
253 | })
254 | .show()
255 | }
256 |
257 | this.shown = true
258 | return this
259 | }
260 |
261 | , hide: function () {
262 | this.$menu.hide()
263 | this.shown = false
264 | return this
265 | }
266 |
267 | , lookup: function (event) {
268 | var that = this
269 |
270 | var items
271 |
272 | this.query = this.$element.val()
273 | this.textValue = this.query
274 |
275 | if (!this.query || this.query.length < this.options.minLength) {
276 | return this.shown ? this.hide() : this
277 | }
278 |
279 | if (this.matcher()) {
280 | if (this.search) {
281 | if (this.query == '') {
282 | this.$menu.html('输入要@的人')
283 | this.show()
284 | } else {
285 | this.source = this.search(this.query)
286 | items = this.source
287 | return items ? this.process(items) : this
288 | }
289 | }
290 | else {
291 | if (this.query == '') {
292 | this.$menu.html('输入要@的人')
293 | this.show()
294 | } else {
295 | $.ajax({
296 | timeout: 1000, //1s
297 | type: "get",
298 | dataType: "json",
299 | contentType: "application/json; charset=utf-8",
300 | url: this.url + '?displayName=' + encodeURIComponent(this.query) + '&itemCount=' + this.item_count,
301 | success: function (data) {
302 | that.source = data;
303 | items = that.source
304 | return items ? that.process(items) : this
305 | },
306 | error: function (xhr) {
307 | console.log(xhr)
308 | }
309 | });
310 | }
311 | }
312 | }
313 | else if (this.shown) {
314 | this.hide()
315 | }
316 | }
317 |
318 | , process: function (items) {
319 | var that = this
320 |
321 | if (this.sort) {
322 | items = this.sorter(items)
323 | }
324 |
325 | if (!items.length) {
326 | return this.shown ? this.hide() : this
327 | }
328 |
329 | return this.render(items.slice(0, this.options.items)).show()
330 | }
331 |
332 | , matcher: function (item) {
333 | return ~item.toLowerCase().indexOf(this.query.toLowerCase())
334 | }
335 |
336 | , sorter: function (items) {
337 | var beginswith = []
338 | , caseSensitive = []
339 | , caseInsensitive = []
340 | , item
341 |
342 | while (item = items.shift()) {
343 | if (!item.toLowerCase().indexOf(this.query.toLowerCase())) beginswith.push(item)
344 | else if (~item.indexOf(this.query)) caseSensitive.push(item)
345 | else caseInsensitive.push(item)
346 | }
347 |
348 | return beginswith.concat(caseSensitive, caseInsensitive)
349 | }
350 |
351 | , highlighter: function (item) {
352 | var query = this.textValue.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g, '\\$&')
353 | return item.replace(new RegExp('(' + query + ')', 'ig'), function ($1, match) {
354 | return '' + match + ''
355 | })
356 | }
357 |
358 | , render: function (items) {
359 | var that = this
360 |
361 | items = $(items).map(function (i, item) {
362 | i = $(that.options.item).text(item)
363 | i.find('a').html(that.highlighter(item))
364 | return i[0]
365 | })
366 |
367 | items.first().addClass('active')
368 | this.$menu.html(items)
369 | return this
370 | }
371 |
372 | , next: function (event) {
373 | var active = this.$menu.find('.active').removeClass('active')
374 | , next = active.next()
375 |
376 | if (!next.length) {
377 | next = $(this.$menu.find('li')[0])
378 | }
379 |
380 | next.addClass('active')
381 | }
382 |
383 | , prev: function (event) {
384 | var active = this.$menu.find('.active').removeClass('active')
385 | , prev = active.prev()
386 |
387 | if (!prev.length) {
388 | prev = this.$menu.find('li').last()
389 | }
390 |
391 | prev.addClass('active')
392 | }
393 |
394 | , listen: function () {
395 | this.$element
396 | .on('focus', $.proxy(this.focus, this))
397 | .on('blur', $.proxy(this.blur, this))
398 | .on('keypress', $.proxy(this.keypress, this))
399 | .on('keyup', $.proxy(this.keyup, this))
400 |
401 | if (this.eventSupported('keydown')) {
402 | this.$element.on('keydown', $.proxy(this.keydown, this))
403 | }
404 |
405 | this.$menu
406 | .on('click', 'li', $.proxy(this.click, this))
407 | .on('mouseenter', 'li', $.proxy(this.mouseenter, this))
408 | .on('mouseleave', 'li', $.proxy(this.mouseleave, this))
409 | }
410 |
411 | , eventSupported: function (eventName) {
412 | var isSupported = eventName in this.$element
413 | if (!isSupported) {
414 | this.$element.setAttribute(eventName, 'return;')
415 | isSupported = typeof this.$element[eventName] === 'function'
416 | }
417 | return isSupported
418 | }
419 |
420 | , move: function (e) {
421 | if (!this.shown) return
422 |
423 | switch (e.keyCode) {
424 | case 9: // tab
425 | case 13: // enter
426 | case 27: // escape
427 | e.preventDefault()
428 | break
429 |
430 | case 38: // up arrow
431 | e.preventDefault()
432 | this.prev()
433 | break
434 |
435 | case 40: // down arrow
436 | e.preventDefault()
437 | this.next()
438 | break
439 | }
440 |
441 | e.stopPropagation()
442 | }
443 |
444 | , keydown: function (e) {
445 | this.suppressKeyPressRepeat = ~$.inArray(e.keyCode, [40, 38, 9, 13, 27])
446 | this.move(e)
447 | }
448 |
449 | , keypress: function (e) {
450 | if (this.suppressKeyPressRepeat) return
451 | this.move(e)
452 | }
453 |
454 | , keyup: function (e) {
455 | switch (e.keyCode) {
456 | case 40: // down arrow
457 | case 38: // up arrow
458 | case 16: // shift
459 | case 17: // ctrl
460 | case 18: // alt
461 | break
462 |
463 | case 9: // tab
464 | case 13: // enter
465 | if (!this.shown) return
466 | this.select()
467 | break
468 |
469 | case 27: // escape
470 | if (!this.shown) return
471 | this.hide()
472 | break
473 |
474 | default:
475 | this.lookup()
476 | }
477 |
478 | e.stopPropagation()
479 | e.preventDefault()
480 | }
481 |
482 | , focus: function (e) {
483 | this.focused = true
484 | }
485 |
486 | , blur: function (e) {
487 | this.focused = false
488 | if (!this.mousedover && this.shown) this.hide()
489 | }
490 |
491 | , click: function (e) {
492 | e.stopPropagation()
493 | e.preventDefault()
494 | this.select()
495 | this.$element.focus()
496 | }
497 |
498 | , mouseenter: function (e) {
499 | this.mousedover = true
500 | this.$menu.find('.active').removeClass('active')
501 | $(e.currentTarget).addClass('active')
502 | }
503 |
504 | , mouseleave: function (e) {
505 | this.mousedover = false
506 | if (!this.focused && this.shown) this.hide()
507 | }
508 |
509 | }
510 |
511 |
512 | /* TYPEAHEAD PLUGIN DEFINITION
513 | * =========================== */
514 |
515 | var old = $.fn.typeahead
516 |
517 | $.fn.typeahead = function (option) {
518 | return this.each(function () {
519 | var $this = $(this)
520 | , data = $this.data('typeahead')
521 | , options = typeof option == 'object' && option
522 | if (!data) $this.data('typeahead', (data = new Typeahead(this, options)))
523 | if (typeof option == 'string') data[option]()
524 | })
525 | }
526 |
527 | $.fn.typeahead.defaults = {
528 | source: []
529 | , items: 8
530 | , menu: ''
531 | , item: ''
532 | , minLength: 1
533 | }
534 |
535 | $.fn.typeahead.Constructor = Typeahead
536 |
537 |
538 | /* TYPEAHEAD NO CONFLICT
539 | * =================== */
540 |
541 | $.fn.typeahead.noConflict = function () {
542 | $.fn.typeahead = old
543 | return this
544 | }
545 |
546 |
547 | /* TYPEAHEAD DATA-API
548 | * ================== */
549 |
550 | $(document).on('focus.typeahead.data-api', '[data-provide="typeahead"]', function (e) {
551 | var $this = $(this)
552 | if ($this.data('typeahead')) return
553 | $this.typeahead($this.data())
554 | })
555 |
556 | }(window.jQuery);
557 |
558 | /* from: https://github.com/component/textarea-caret-position/ */
559 | /* jshint browser: true */
560 |
561 | (function () {
562 |
563 | // The properties that we copy into a mirrored div.
564 | // Note that some browsers, such as Firefox,
565 | // do not concatenate properties, i.e. padding-top, bottom etc. -> padding,
566 | // so we have to do every single property specifically.
567 | var properties = [
568 | 'direction', // RTL support
569 | 'boxSizing',
570 | 'width', // on Chrome and IE, exclude the scrollbar, so the mirror div wraps exactly as the textarea does
571 | 'height',
572 | 'overflowX',
573 | 'overflowY', // copy the scrollbar for IE
574 |
575 | 'borderTopWidth',
576 | 'borderRightWidth',
577 | 'borderBottomWidth',
578 | 'borderLeftWidth',
579 | 'borderStyle',
580 |
581 | 'paddingTop',
582 | 'paddingRight',
583 | 'paddingBottom',
584 | 'paddingLeft',
585 |
586 | // https://developer.mozilla.org/en-US/docs/Web/CSS/font
587 | 'fontStyle',
588 | 'fontVariant',
589 | 'fontWeight',
590 | 'fontStretch',
591 | 'fontSize',
592 | 'fontSizeAdjust',
593 | 'lineHeight',
594 | 'fontFamily',
595 |
596 | 'textAlign',
597 | 'textTransform',
598 | 'textIndent',
599 | 'textDecoration', // might not make a difference, but better be safe
600 |
601 | 'letterSpacing',
602 | 'wordSpacing',
603 |
604 | 'tabSize',
605 | 'MozTabSize'
606 |
607 | ];
608 |
609 | var isFirefox = window.mozInnerScreenX != null;
610 |
611 | function getCaretCoordinates(element, position) {
612 | // mirrored div
613 | var div = document.createElement('div');
614 | div.id = 'input-textarea-caret-position-mirror-div';
615 | document.body.appendChild(div);
616 |
617 | var style = div.style;
618 | var computed = window.getComputedStyle ? getComputedStyle(element) : element.currentStyle; // currentStyle for IE < 9
619 |
620 | // default textarea styles
621 | style.whiteSpace = 'pre-wrap';
622 | if (element.nodeName !== 'INPUT')
623 | style.wordWrap = 'break-word'; // only for textarea-s
624 |
625 | // position off-screen
626 | style.position = 'absolute'; // required to return coordinates properly
627 | style.visibility = 'hidden'; // not 'display: none' because we want rendering
628 |
629 | // transfer the element's properties to the div
630 | properties.forEach(function (prop) {
631 | style[prop] = computed[prop];
632 | });
633 |
634 | if (isFirefox) {
635 | // Firefox lies about the overflow property for textareas: https://bugzilla.mozilla.org/show_bug.cgi?id=984275
636 | if (element.scrollHeight > parseInt(computed.height))
637 | style.overflowY = 'scroll';
638 | } else {
639 | style.overflow = 'hidden'; // for Chrome to not render a scrollbar; IE keeps overflowY = 'scroll'
640 | }
641 |
642 | div.textContent = element.value.substring(0, position);
643 | // the second special handling for input type="text" vs textarea: spaces need to be replaced with non-breaking spaces - http://stackoverflow.com/a/13402035/1269037
644 | if (element.nodeName === 'INPUT')
645 | div.textContent = div.textContent.replace(/\s/g, "\u00a0");
646 |
647 | var span = document.createElement('span');
648 | // Wrapping must be replicated *exactly*, including when a long word gets
649 | // onto the next line, with whitespace at the end of the line before (#7).
650 | // The *only* reliable way to do that is to copy the *entire* rest of the
651 | // textarea's content into the created at the caret position.
652 | // for inputs, just '.' would be enough, but why bother?
653 | span.textContent = element.value.substring(position) || '.'; // || because a completely empty faux span doesn't render at all
654 | div.appendChild(span);
655 |
656 | var coordinates = {
657 | top: span.offsetTop + parseInt(computed['borderTopWidth']),
658 | left: span.offsetLeft + parseInt(computed['borderLeftWidth'])
659 | };
660 |
661 | document.body.removeChild(div);
662 |
663 | return coordinates;
664 | }
665 |
666 | if (typeof module != "undefined" && typeof module.exports != "undefined") {
667 | module.exports = getCaretCoordinates;
668 | } else {
669 | window.getCaretCoordinates = getCaretCoordinates;
670 | }
671 |
672 | }());
--------------------------------------------------------------------------------
/bookms2/readme_files/quote.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yance-dev/mydjango/2f841d2b82f9d002a8175dbbe7d963d479b4346a/bookms2/readme_files/quote.gif
--------------------------------------------------------------------------------
/bookms2/readme_files/wechat.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yance-dev/mydjango/2f841d2b82f9d002a8175dbbe7d963d479b4346a/bookms2/readme_files/wechat.png
--------------------------------------------------------------------------------
/bookms2/settings.py:
--------------------------------------------------------------------------------
1 | """
2 | Django settings for bookms2 project.
3 |
4 | Generated by 'django-admin startproject' using Django 2.1.
5 |
6 | For more information on this file, see
7 | https://docs.djangoproject.com/en/2.1/topics/settings/
8 |
9 | For the full list of settings and their values, see
10 | https://docs.djangoproject.com/en/2.1/ref/settings/
11 | """
12 |
13 | import os
14 |
15 | # Build paths inside the project like this: os.path.join(BASE_DIR, ...)
16 | BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
17 |
18 |
19 | # Quick-start development settings - unsuitable for production
20 | # See https://docs.djangoproject.com/en/2.1/howto/deployment/checklist/
21 |
22 | # SECURITY WARNING: keep the secret key used in production secret!
23 | SECRET_KEY = '(wft0w((ig%ju=kewm0m@qk+l_mym6_8ukk3ftub36u2$-w*2d'
24 |
25 | # SECURITY WARNING: don't run with debug turned on in production!
26 | DEBUG = True
27 |
28 | ALLOWED_HOSTS = []
29 |
30 |
31 | # Application definition
32 |
33 | INSTALLED_APPS = [
34 | 'django.contrib.admin',
35 | 'django.contrib.auth',
36 | 'django.contrib.contenttypes',
37 | 'django.contrib.sessions',
38 | 'django.contrib.messages',
39 | 'django.contrib.staticfiles',
40 | 'app01.apps.App01Config',
41 | ]
42 |
43 | MIDDLEWARE = [
44 | 'django.middleware.security.SecurityMiddleware',
45 | 'django.contrib.sessions.middleware.SessionMiddleware',
46 | 'django.middleware.common.CommonMiddleware',
47 | 'django.middleware.csrf.CsrfViewMiddleware',
48 | 'django.contrib.auth.middleware.AuthenticationMiddleware',
49 | 'django.contrib.messages.middleware.MessageMiddleware',
50 | 'django.middleware.clickjacking.XFrameOptionsMiddleware',
51 | ]
52 |
53 | ROOT_URLCONF = 'bookms2.urls'
54 |
55 | TEMPLATES = [
56 | {
57 | 'BACKEND': 'django.template.backends.django.DjangoTemplates',
58 | 'DIRS': [os.path.join(BASE_DIR, 'templates')]
59 | ,
60 | 'APP_DIRS': True,
61 | 'OPTIONS': {
62 | 'context_processors': [
63 | 'django.template.context_processors.debug',
64 | 'django.template.context_processors.request',
65 | 'django.contrib.auth.context_processors.auth',
66 | 'django.contrib.messages.context_processors.messages',
67 | ],
68 | },
69 | },
70 | ]
71 |
72 | WSGI_APPLICATION = 'bookms2.wsgi.application'
73 |
74 |
75 | # Database
76 | # https://docs.djangoproject.com/en/2.1/ref/settings/#databases
77 |
78 | # DATABASES = {
79 | # 'default': {
80 | # 'ENGINE': 'django.db.backends.sqlite3',
81 | # 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
82 | # }
83 | # }
84 | DATABASES = {
85 | 'default': {
86 | 'ENGINE': 'django.db.backends.mysql',
87 | 'NAME':'orm3',# 要连接的数据库,连接前需要创建好
88 | 'USER':'root',# 连接数据库的用户名
89 | 'PASSWORD':'123',# 连接数据库的密码
90 | 'HOST':'127.0.0.1', # 连接主机,默认本级
91 | 'PORT': 3306 # 端口 默认3306
92 | }
93 | }
94 |
95 |
96 | # Password validation
97 | # https://docs.djangoproject.com/en/2.1/ref/settings/#auth-password-validators
98 |
99 | AUTH_PASSWORD_VALIDATORS = [
100 | {
101 | 'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
102 | },
103 | {
104 | 'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
105 | },
106 | {
107 | 'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
108 | },
109 | {
110 | 'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
111 | },
112 | ]
113 |
114 |
115 | # Internationalization
116 | # https://docs.djangoproject.com/en/2.1/topics/i18n/
117 |
118 | LANGUAGE_CODE = 'en-us'
119 |
120 | TIME_ZONE = 'UTC'
121 |
122 | USE_I18N = True
123 |
124 | USE_L10N = True
125 |
126 | USE_TZ = True
127 |
128 |
129 | # Static files (CSS, JavaScript, Images)
130 | # https://docs.djangoproject.com/en/2.1/howto/static-files/
131 |
132 | STATIC_URL = '/static/'
133 | STATICFILES_DIRS = (
134 | os.path.join(BASE_DIR, "static"),
135 | )
136 |
--------------------------------------------------------------------------------
/bookms2/static/__init__.py:
--------------------------------------------------------------------------------
1 | # -*- coding: utf-8 -*-
2 |
3 |
--------------------------------------------------------------------------------
/bookms2/static/bs/css/bootstrap-theme.min.css:
--------------------------------------------------------------------------------
1 | /*!
2 | * Bootstrap v3.3.7 (http://getbootstrap.com)
3 | * Copyright 2011-2016 Twitter, Inc.
4 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
5 | */.btn-danger,.btn-default,.btn-info,.btn-primary,.btn-success,.btn-warning{text-shadow:0 -1px 0 rgba(0,0,0,.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 1px rgba(0,0,0,.075)}.btn-danger.active,.btn-danger:active,.btn-default.active,.btn-default:active,.btn-info.active,.btn-info:active,.btn-primary.active,.btn-primary:active,.btn-success.active,.btn-success:active,.btn-warning.active,.btn-warning:active{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-danger.disabled,.btn-danger[disabled],.btn-default.disabled,.btn-default[disabled],.btn-info.disabled,.btn-info[disabled],.btn-primary.disabled,.btn-primary[disabled],.btn-success.disabled,.btn-success[disabled],.btn-warning.disabled,.btn-warning[disabled],fieldset[disabled] .btn-danger,fieldset[disabled] .btn-default,fieldset[disabled] .btn-info,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-success,fieldset[disabled] .btn-warning{-webkit-box-shadow:none;box-shadow:none}.btn-danger .badge,.btn-default .badge,.btn-info .badge,.btn-primary .badge,.btn-success .badge,.btn-warning .badge{text-shadow:none}.btn.active,.btn:active{background-image:none}.btn-default{text-shadow:0 1px 0 #fff;background-image:-webkit-linear-gradient(top,#fff 0,#e0e0e0 100%);background-image:-o-linear-gradient(top,#fff 0,#e0e0e0 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e0e0e0));background-image:linear-gradient(to bottom,#fff 0,#e0e0e0 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#dbdbdb;border-color:#ccc}.btn-default:focus,.btn-default:hover{background-color:#e0e0e0;background-position:0 -15px}.btn-default.active,.btn-default:active{background-color:#e0e0e0;border-color:#dbdbdb}.btn-default.disabled,.btn-default.disabled.active,.btn-default.disabled.focus,.btn-default.disabled:active,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled],.btn-default[disabled].active,.btn-default[disabled].focus,.btn-default[disabled]:active,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default,fieldset[disabled] .btn-default.active,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:active,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:hover{background-color:#e0e0e0;background-image:none}.btn-primary{background-image:-webkit-linear-gradient(top,#337ab7 0,#265a88 100%);background-image:-o-linear-gradient(top,#337ab7 0,#265a88 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#265a88));background-image:linear-gradient(to bottom,#337ab7 0,#265a88 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff265a88', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#245580}.btn-primary:focus,.btn-primary:hover{background-color:#265a88;background-position:0 -15px}.btn-primary.active,.btn-primary:active{background-color:#265a88;border-color:#245580}.btn-primary.disabled,.btn-primary.disabled.active,.btn-primary.disabled.focus,.btn-primary.disabled:active,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled],.btn-primary[disabled].active,.btn-primary[disabled].focus,.btn-primary[disabled]:active,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary.active,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#265a88;background-image:none}.btn-success{background-image:-webkit-linear-gradient(top,#5cb85c 0,#419641 100%);background-image:-o-linear-gradient(top,#5cb85c 0,#419641 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5cb85c),to(#419641));background-image:linear-gradient(to bottom,#5cb85c 0,#419641 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#3e8f3e}.btn-success:focus,.btn-success:hover{background-color:#419641;background-position:0 -15px}.btn-success.active,.btn-success:active{background-color:#419641;border-color:#3e8f3e}.btn-success.disabled,.btn-success.disabled.active,.btn-success.disabled.focus,.btn-success.disabled:active,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled],.btn-success[disabled].active,.btn-success[disabled].focus,.btn-success[disabled]:active,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success,fieldset[disabled] .btn-success.active,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:active,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#419641;background-image:none}.btn-info{background-image:-webkit-linear-gradient(top,#5bc0de 0,#2aabd2 100%);background-image:-o-linear-gradient(top,#5bc0de 0,#2aabd2 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5bc0de),to(#2aabd2));background-image:linear-gradient(to bottom,#5bc0de 0,#2aabd2 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#28a4c9}.btn-info:focus,.btn-info:hover{background-color:#2aabd2;background-position:0 -15px}.btn-info.active,.btn-info:active{background-color:#2aabd2;border-color:#28a4c9}.btn-info.disabled,.btn-info.disabled.active,.btn-info.disabled.focus,.btn-info.disabled:active,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled],.btn-info[disabled].active,.btn-info[disabled].focus,.btn-info[disabled]:active,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info,fieldset[disabled] .btn-info.active,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:active,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#2aabd2;background-image:none}.btn-warning{background-image:-webkit-linear-gradient(top,#f0ad4e 0,#eb9316 100%);background-image:-o-linear-gradient(top,#f0ad4e 0,#eb9316 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f0ad4e),to(#eb9316));background-image:linear-gradient(to bottom,#f0ad4e 0,#eb9316 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#e38d13}.btn-warning:focus,.btn-warning:hover{background-color:#eb9316;background-position:0 -15px}.btn-warning.active,.btn-warning:active{background-color:#eb9316;border-color:#e38d13}.btn-warning.disabled,.btn-warning.disabled.active,.btn-warning.disabled.focus,.btn-warning.disabled:active,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled],.btn-warning[disabled].active,.btn-warning[disabled].focus,.btn-warning[disabled]:active,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning,fieldset[disabled] .btn-warning.active,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:active,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#eb9316;background-image:none}.btn-danger{background-image:-webkit-linear-gradient(top,#d9534f 0,#c12e2a 100%);background-image:-o-linear-gradient(top,#d9534f 0,#c12e2a 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9534f),to(#c12e2a));background-image:linear-gradient(to bottom,#d9534f 0,#c12e2a 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#b92c28}.btn-danger:focus,.btn-danger:hover{background-color:#c12e2a;background-position:0 -15px}.btn-danger.active,.btn-danger:active{background-color:#c12e2a;border-color:#b92c28}.btn-danger.disabled,.btn-danger.disabled.active,.btn-danger.disabled.focus,.btn-danger.disabled:active,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled],.btn-danger[disabled].active,.btn-danger[disabled].focus,.btn-danger[disabled]:active,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger,fieldset[disabled] .btn-danger.active,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:active,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#c12e2a;background-image:none}.img-thumbnail,.thumbnail{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.075);box-shadow:0 1px 2px rgba(0,0,0,.075)}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{background-color:#e8e8e8;background-image:-webkit-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-o-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#e8e8e8));background-image:linear-gradient(to bottom,#f5f5f5 0,#e8e8e8 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);background-repeat:repeat-x}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{background-color:#2e6da4;background-image:-webkit-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2e6da4));background-image:linear-gradient(to bottom,#337ab7 0,#2e6da4 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);background-repeat:repeat-x}.navbar-default{background-image:-webkit-linear-gradient(top,#fff 0,#f8f8f8 100%);background-image:-o-linear-gradient(top,#fff 0,#f8f8f8 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#f8f8f8));background-image:linear-gradient(to bottom,#fff 0,#f8f8f8 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-radius:4px;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 5px rgba(0,0,0,.075);box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 5px rgba(0,0,0,.075)}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.open>a{background-image:-webkit-linear-gradient(top,#dbdbdb 0,#e2e2e2 100%);background-image:-o-linear-gradient(top,#dbdbdb 0,#e2e2e2 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#dbdbdb),to(#e2e2e2));background-image:linear-gradient(to bottom,#dbdbdb 0,#e2e2e2 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdbdbdb', endColorstr='#ffe2e2e2', GradientType=0);background-repeat:repeat-x;-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,.075);box-shadow:inset 0 3px 9px rgba(0,0,0,.075)}.navbar-brand,.navbar-nav>li>a{text-shadow:0 1px 0 rgba(255,255,255,.25)}.navbar-inverse{background-image:-webkit-linear-gradient(top,#3c3c3c 0,#222 100%);background-image:-o-linear-gradient(top,#3c3c3c 0,#222 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#3c3c3c),to(#222));background-image:linear-gradient(to bottom,#3c3c3c 0,#222 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-radius:4px}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.open>a{background-image:-webkit-linear-gradient(top,#080808 0,#0f0f0f 100%);background-image:-o-linear-gradient(top,#080808 0,#0f0f0f 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#080808),to(#0f0f0f));background-image:linear-gradient(to bottom,#080808 0,#0f0f0f 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff080808', endColorstr='#ff0f0f0f', GradientType=0);background-repeat:repeat-x;-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,.25);box-shadow:inset 0 3px 9px rgba(0,0,0,.25)}.navbar-inverse .navbar-brand,.navbar-inverse .navbar-nav>li>a{text-shadow:0 -1px 0 rgba(0,0,0,.25)}.navbar-fixed-bottom,.navbar-fixed-top,.navbar-static-top{border-radius:0}@media (max-width:767px){.navbar .navbar-nav .open .dropdown-menu>.active>a,.navbar .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-image:-webkit-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2e6da4));background-image:linear-gradient(to bottom,#337ab7 0,#2e6da4 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);background-repeat:repeat-x}}.alert{text-shadow:0 1px 0 rgba(255,255,255,.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 2px rgba(0,0,0,.05);box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 2px rgba(0,0,0,.05)}.alert-success{background-image:-webkit-linear-gradient(top,#dff0d8 0,#c8e5bc 100%);background-image:-o-linear-gradient(top,#dff0d8 0,#c8e5bc 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#dff0d8),to(#c8e5bc));background-image:linear-gradient(to bottom,#dff0d8 0,#c8e5bc 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0);background-repeat:repeat-x;border-color:#b2dba1}.alert-info{background-image:-webkit-linear-gradient(top,#d9edf7 0,#b9def0 100%);background-image:-o-linear-gradient(top,#d9edf7 0,#b9def0 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9edf7),to(#b9def0));background-image:linear-gradient(to bottom,#d9edf7 0,#b9def0 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0);background-repeat:repeat-x;border-color:#9acfea}.alert-warning{background-image:-webkit-linear-gradient(top,#fcf8e3 0,#f8efc0 100%);background-image:-o-linear-gradient(top,#fcf8e3 0,#f8efc0 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fcf8e3),to(#f8efc0));background-image:linear-gradient(to bottom,#fcf8e3 0,#f8efc0 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0);background-repeat:repeat-x;border-color:#f5e79e}.alert-danger{background-image:-webkit-linear-gradient(top,#f2dede 0,#e7c3c3 100%);background-image:-o-linear-gradient(top,#f2dede 0,#e7c3c3 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f2dede),to(#e7c3c3));background-image:linear-gradient(to bottom,#f2dede 0,#e7c3c3 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0);background-repeat:repeat-x;border-color:#dca7a7}.progress{background-image:-webkit-linear-gradient(top,#ebebeb 0,#f5f5f5 100%);background-image:-o-linear-gradient(top,#ebebeb 0,#f5f5f5 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#ebebeb),to(#f5f5f5));background-image:linear-gradient(to bottom,#ebebeb 0,#f5f5f5 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0);background-repeat:repeat-x}.progress-bar{background-image:-webkit-linear-gradient(top,#337ab7 0,#286090 100%);background-image:-o-linear-gradient(top,#337ab7 0,#286090 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#286090));background-image:linear-gradient(to bottom,#337ab7 0,#286090 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff286090', GradientType=0);background-repeat:repeat-x}.progress-bar-success{background-image:-webkit-linear-gradient(top,#5cb85c 0,#449d44 100%);background-image:-o-linear-gradient(top,#5cb85c 0,#449d44 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5cb85c),to(#449d44));background-image:linear-gradient(to bottom,#5cb85c 0,#449d44 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0);background-repeat:repeat-x}.progress-bar-info{background-image:-webkit-linear-gradient(top,#5bc0de 0,#31b0d5 100%);background-image:-o-linear-gradient(top,#5bc0de 0,#31b0d5 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5bc0de),to(#31b0d5));background-image:linear-gradient(to bottom,#5bc0de 0,#31b0d5 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0);background-repeat:repeat-x}.progress-bar-warning{background-image:-webkit-linear-gradient(top,#f0ad4e 0,#ec971f 100%);background-image:-o-linear-gradient(top,#f0ad4e 0,#ec971f 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f0ad4e),to(#ec971f));background-image:linear-gradient(to bottom,#f0ad4e 0,#ec971f 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0);background-repeat:repeat-x}.progress-bar-danger{background-image:-webkit-linear-gradient(top,#d9534f 0,#c9302c 100%);background-image:-o-linear-gradient(top,#d9534f 0,#c9302c 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9534f),to(#c9302c));background-image:linear-gradient(to bottom,#d9534f 0,#c9302c 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0);background-repeat:repeat-x}.progress-bar-striped{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.list-group{border-radius:4px;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.075);box-shadow:0 1px 2px rgba(0,0,0,.075)}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{text-shadow:0 -1px 0 #286090;background-image:-webkit-linear-gradient(top,#337ab7 0,#2b669a 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2b669a 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2b669a));background-image:linear-gradient(to bottom,#337ab7 0,#2b669a 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2b669a', GradientType=0);background-repeat:repeat-x;border-color:#2b669a}.list-group-item.active .badge,.list-group-item.active:focus .badge,.list-group-item.active:hover .badge{text-shadow:none}.panel{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.05);box-shadow:0 1px 2px rgba(0,0,0,.05)}.panel-default>.panel-heading{background-image:-webkit-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-o-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#e8e8e8));background-image:linear-gradient(to bottom,#f5f5f5 0,#e8e8e8 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);background-repeat:repeat-x}.panel-primary>.panel-heading{background-image:-webkit-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2e6da4));background-image:linear-gradient(to bottom,#337ab7 0,#2e6da4 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);background-repeat:repeat-x}.panel-success>.panel-heading{background-image:-webkit-linear-gradient(top,#dff0d8 0,#d0e9c6 100%);background-image:-o-linear-gradient(top,#dff0d8 0,#d0e9c6 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#dff0d8),to(#d0e9c6));background-image:linear-gradient(to bottom,#dff0d8 0,#d0e9c6 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0);background-repeat:repeat-x}.panel-info>.panel-heading{background-image:-webkit-linear-gradient(top,#d9edf7 0,#c4e3f3 100%);background-image:-o-linear-gradient(top,#d9edf7 0,#c4e3f3 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9edf7),to(#c4e3f3));background-image:linear-gradient(to bottom,#d9edf7 0,#c4e3f3 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0);background-repeat:repeat-x}.panel-warning>.panel-heading{background-image:-webkit-linear-gradient(top,#fcf8e3 0,#faf2cc 100%);background-image:-o-linear-gradient(top,#fcf8e3 0,#faf2cc 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fcf8e3),to(#faf2cc));background-image:linear-gradient(to bottom,#fcf8e3 0,#faf2cc 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0);background-repeat:repeat-x}.panel-danger>.panel-heading{background-image:-webkit-linear-gradient(top,#f2dede 0,#ebcccc 100%);background-image:-o-linear-gradient(top,#f2dede 0,#ebcccc 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f2dede),to(#ebcccc));background-image:linear-gradient(to bottom,#f2dede 0,#ebcccc 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0);background-repeat:repeat-x}.well{background-image:-webkit-linear-gradient(top,#e8e8e8 0,#f5f5f5 100%);background-image:-o-linear-gradient(top,#e8e8e8 0,#f5f5f5 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#e8e8e8),to(#f5f5f5));background-image:linear-gradient(to bottom,#e8e8e8 0,#f5f5f5 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0);background-repeat:repeat-x;border-color:#dcdcdc;-webkit-box-shadow:inset 0 1px 3px rgba(0,0,0,.05),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 3px rgba(0,0,0,.05),0 1px 0 rgba(255,255,255,.1)}
6 | /*# sourceMappingURL=bootstrap-theme.min.css.map */
--------------------------------------------------------------------------------
/bookms2/static/bs/css/bootstrap-theme.min.css.map:
--------------------------------------------------------------------------------
1 | {"version":3,"sources":["less/theme.less","less/mixins/vendor-prefixes.less","less/mixins/gradients.less","less/mixins/reset-filter.less"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Bootstrap v3.3.7 (http://getbootstrap.com)\n * Copyright 2011-2016 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n\n//\n// Load core variables and mixins\n// --------------------------------------------------\n\n@import \"variables.less\";\n@import \"mixins.less\";\n\n\n//\n// Buttons\n// --------------------------------------------------\n\n// Common styles\n.btn-default,\n.btn-primary,\n.btn-success,\n.btn-info,\n.btn-warning,\n.btn-danger {\n text-shadow: 0 -1px 0 rgba(0,0,0,.2);\n @shadow: inset 0 1px 0 rgba(255,255,255,.15), 0 1px 1px rgba(0,0,0,.075);\n .box-shadow(@shadow);\n\n // Reset the shadow\n &:active,\n &.active {\n .box-shadow(inset 0 3px 5px rgba(0,0,0,.125));\n }\n\n &.disabled,\n &[disabled],\n fieldset[disabled] & {\n .box-shadow(none);\n }\n\n .badge {\n text-shadow: none;\n }\n}\n\n// Mixin for generating new styles\n.btn-styles(@btn-color: #555) {\n #gradient > .vertical(@start-color: @btn-color; @end-color: darken(@btn-color, 12%));\n .reset-filter(); // Disable gradients for IE9 because filter bleeds through rounded corners; see https://github.com/twbs/bootstrap/issues/10620\n background-repeat: repeat-x;\n border-color: darken(@btn-color, 14%);\n\n &:hover,\n &:focus {\n background-color: darken(@btn-color, 12%);\n background-position: 0 -15px;\n }\n\n &:active,\n &.active {\n background-color: darken(@btn-color, 12%);\n border-color: darken(@btn-color, 14%);\n }\n\n &.disabled,\n &[disabled],\n fieldset[disabled] & {\n &,\n &:hover,\n &:focus,\n &.focus,\n &:active,\n &.active {\n background-color: darken(@btn-color, 12%);\n background-image: none;\n }\n }\n}\n\n// Common styles\n.btn {\n // Remove the gradient for the pressed/active state\n &:active,\n &.active {\n background-image: none;\n }\n}\n\n// Apply the mixin to the buttons\n.btn-default { .btn-styles(@btn-default-bg); text-shadow: 0 1px 0 #fff; border-color: #ccc; }\n.btn-primary { .btn-styles(@btn-primary-bg); }\n.btn-success { .btn-styles(@btn-success-bg); }\n.btn-info { .btn-styles(@btn-info-bg); }\n.btn-warning { .btn-styles(@btn-warning-bg); }\n.btn-danger { .btn-styles(@btn-danger-bg); }\n\n\n//\n// Images\n// --------------------------------------------------\n\n.thumbnail,\n.img-thumbnail {\n .box-shadow(0 1px 2px rgba(0,0,0,.075));\n}\n\n\n//\n// Dropdowns\n// --------------------------------------------------\n\n.dropdown-menu > li > a:hover,\n.dropdown-menu > li > a:focus {\n #gradient > .vertical(@start-color: @dropdown-link-hover-bg; @end-color: darken(@dropdown-link-hover-bg, 5%));\n background-color: darken(@dropdown-link-hover-bg, 5%);\n}\n.dropdown-menu > .active > a,\n.dropdown-menu > .active > a:hover,\n.dropdown-menu > .active > a:focus {\n #gradient > .vertical(@start-color: @dropdown-link-active-bg; @end-color: darken(@dropdown-link-active-bg, 5%));\n background-color: darken(@dropdown-link-active-bg, 5%);\n}\n\n\n//\n// Navbar\n// --------------------------------------------------\n\n// Default navbar\n.navbar-default {\n #gradient > .vertical(@start-color: lighten(@navbar-default-bg, 10%); @end-color: @navbar-default-bg);\n .reset-filter(); // Remove gradient in IE<10 to fix bug where dropdowns don't get triggered\n border-radius: @navbar-border-radius;\n @shadow: inset 0 1px 0 rgba(255,255,255,.15), 0 1px 5px rgba(0,0,0,.075);\n .box-shadow(@shadow);\n\n .navbar-nav > .open > a,\n .navbar-nav > .active > a {\n #gradient > .vertical(@start-color: darken(@navbar-default-link-active-bg, 5%); @end-color: darken(@navbar-default-link-active-bg, 2%));\n .box-shadow(inset 0 3px 9px rgba(0,0,0,.075));\n }\n}\n.navbar-brand,\n.navbar-nav > li > a {\n text-shadow: 0 1px 0 rgba(255,255,255,.25);\n}\n\n// Inverted navbar\n.navbar-inverse {\n #gradient > .vertical(@start-color: lighten(@navbar-inverse-bg, 10%); @end-color: @navbar-inverse-bg);\n .reset-filter(); // Remove gradient in IE<10 to fix bug where dropdowns don't get triggered; see https://github.com/twbs/bootstrap/issues/10257\n border-radius: @navbar-border-radius;\n .navbar-nav > .open > a,\n .navbar-nav > .active > a {\n #gradient > .vertical(@start-color: @navbar-inverse-link-active-bg; @end-color: lighten(@navbar-inverse-link-active-bg, 2.5%));\n .box-shadow(inset 0 3px 9px rgba(0,0,0,.25));\n }\n\n .navbar-brand,\n .navbar-nav > li > a {\n text-shadow: 0 -1px 0 rgba(0,0,0,.25);\n }\n}\n\n// Undo rounded corners in static and fixed navbars\n.navbar-static-top,\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n border-radius: 0;\n}\n\n// Fix active state of dropdown items in collapsed mode\n@media (max-width: @grid-float-breakpoint-max) {\n .navbar .navbar-nav .open .dropdown-menu > .active > a {\n &,\n &:hover,\n &:focus {\n color: #fff;\n #gradient > .vertical(@start-color: @dropdown-link-active-bg; @end-color: darken(@dropdown-link-active-bg, 5%));\n }\n }\n}\n\n\n//\n// Alerts\n// --------------------------------------------------\n\n// Common styles\n.alert {\n text-shadow: 0 1px 0 rgba(255,255,255,.2);\n @shadow: inset 0 1px 0 rgba(255,255,255,.25), 0 1px 2px rgba(0,0,0,.05);\n .box-shadow(@shadow);\n}\n\n// Mixin for generating new styles\n.alert-styles(@color) {\n #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 7.5%));\n border-color: darken(@color, 15%);\n}\n\n// Apply the mixin to the alerts\n.alert-success { .alert-styles(@alert-success-bg); }\n.alert-info { .alert-styles(@alert-info-bg); }\n.alert-warning { .alert-styles(@alert-warning-bg); }\n.alert-danger { .alert-styles(@alert-danger-bg); }\n\n\n//\n// Progress bars\n// --------------------------------------------------\n\n// Give the progress background some depth\n.progress {\n #gradient > .vertical(@start-color: darken(@progress-bg, 4%); @end-color: @progress-bg)\n}\n\n// Mixin for generating new styles\n.progress-bar-styles(@color) {\n #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 10%));\n}\n\n// Apply the mixin to the progress bars\n.progress-bar { .progress-bar-styles(@progress-bar-bg); }\n.progress-bar-success { .progress-bar-styles(@progress-bar-success-bg); }\n.progress-bar-info { .progress-bar-styles(@progress-bar-info-bg); }\n.progress-bar-warning { .progress-bar-styles(@progress-bar-warning-bg); }\n.progress-bar-danger { .progress-bar-styles(@progress-bar-danger-bg); }\n\n// Reset the striped class because our mixins don't do multiple gradients and\n// the above custom styles override the new `.progress-bar-striped` in v3.2.0.\n.progress-bar-striped {\n #gradient > .striped();\n}\n\n\n//\n// List groups\n// --------------------------------------------------\n\n.list-group {\n border-radius: @border-radius-base;\n .box-shadow(0 1px 2px rgba(0,0,0,.075));\n}\n.list-group-item.active,\n.list-group-item.active:hover,\n.list-group-item.active:focus {\n text-shadow: 0 -1px 0 darken(@list-group-active-bg, 10%);\n #gradient > .vertical(@start-color: @list-group-active-bg; @end-color: darken(@list-group-active-bg, 7.5%));\n border-color: darken(@list-group-active-border, 7.5%);\n\n .badge {\n text-shadow: none;\n }\n}\n\n\n//\n// Panels\n// --------------------------------------------------\n\n// Common styles\n.panel {\n .box-shadow(0 1px 2px rgba(0,0,0,.05));\n}\n\n// Mixin for generating new styles\n.panel-heading-styles(@color) {\n #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 5%));\n}\n\n// Apply the mixin to the panel headings only\n.panel-default > .panel-heading { .panel-heading-styles(@panel-default-heading-bg); }\n.panel-primary > .panel-heading { .panel-heading-styles(@panel-primary-heading-bg); }\n.panel-success > .panel-heading { .panel-heading-styles(@panel-success-heading-bg); }\n.panel-info > .panel-heading { .panel-heading-styles(@panel-info-heading-bg); }\n.panel-warning > .panel-heading { .panel-heading-styles(@panel-warning-heading-bg); }\n.panel-danger > .panel-heading { .panel-heading-styles(@panel-danger-heading-bg); }\n\n\n//\n// Wells\n// --------------------------------------------------\n\n.well {\n #gradient > .vertical(@start-color: darken(@well-bg, 5%); @end-color: @well-bg);\n border-color: darken(@well-bg, 10%);\n @shadow: inset 0 1px 3px rgba(0,0,0,.05), 0 1px 0 rgba(255,255,255,.1);\n .box-shadow(@shadow);\n}\n","// Vendor Prefixes\n//\n// All vendor mixins are deprecated as of v3.2.0 due to the introduction of\n// Autoprefixer in our Gruntfile. They have been removed in v4.\n\n// - Animations\n// - Backface visibility\n// - Box shadow\n// - Box sizing\n// - Content columns\n// - Hyphens\n// - Placeholder text\n// - Transformations\n// - Transitions\n// - User Select\n\n\n// Animations\n.animation(@animation) {\n -webkit-animation: @animation;\n -o-animation: @animation;\n animation: @animation;\n}\n.animation-name(@name) {\n -webkit-animation-name: @name;\n animation-name: @name;\n}\n.animation-duration(@duration) {\n -webkit-animation-duration: @duration;\n animation-duration: @duration;\n}\n.animation-timing-function(@timing-function) {\n -webkit-animation-timing-function: @timing-function;\n animation-timing-function: @timing-function;\n}\n.animation-delay(@delay) {\n -webkit-animation-delay: @delay;\n animation-delay: @delay;\n}\n.animation-iteration-count(@iteration-count) {\n -webkit-animation-iteration-count: @iteration-count;\n animation-iteration-count: @iteration-count;\n}\n.animation-direction(@direction) {\n -webkit-animation-direction: @direction;\n animation-direction: @direction;\n}\n.animation-fill-mode(@fill-mode) {\n -webkit-animation-fill-mode: @fill-mode;\n animation-fill-mode: @fill-mode;\n}\n\n// Backface visibility\n// Prevent browsers from flickering when using CSS 3D transforms.\n// Default value is `visible`, but can be changed to `hidden`\n\n.backface-visibility(@visibility) {\n -webkit-backface-visibility: @visibility;\n -moz-backface-visibility: @visibility;\n backface-visibility: @visibility;\n}\n\n// Drop shadows\n//\n// Note: Deprecated `.box-shadow()` as of v3.1.0 since all of Bootstrap's\n// supported browsers that have box shadow capabilities now support it.\n\n.box-shadow(@shadow) {\n -webkit-box-shadow: @shadow; // iOS <4.3 & Android <4.1\n box-shadow: @shadow;\n}\n\n// Box sizing\n.box-sizing(@boxmodel) {\n -webkit-box-sizing: @boxmodel;\n -moz-box-sizing: @boxmodel;\n box-sizing: @boxmodel;\n}\n\n// CSS3 Content Columns\n.content-columns(@column-count; @column-gap: @grid-gutter-width) {\n -webkit-column-count: @column-count;\n -moz-column-count: @column-count;\n column-count: @column-count;\n -webkit-column-gap: @column-gap;\n -moz-column-gap: @column-gap;\n column-gap: @column-gap;\n}\n\n// Optional hyphenation\n.hyphens(@mode: auto) {\n word-wrap: break-word;\n -webkit-hyphens: @mode;\n -moz-hyphens: @mode;\n -ms-hyphens: @mode; // IE10+\n -o-hyphens: @mode;\n hyphens: @mode;\n}\n\n// Placeholder text\n.placeholder(@color: @input-color-placeholder) {\n // Firefox\n &::-moz-placeholder {\n color: @color;\n opacity: 1; // Override Firefox's unusual default opacity; see https://github.com/twbs/bootstrap/pull/11526\n }\n &:-ms-input-placeholder { color: @color; } // Internet Explorer 10+\n &::-webkit-input-placeholder { color: @color; } // Safari and Chrome\n}\n\n// Transformations\n.scale(@ratio) {\n -webkit-transform: scale(@ratio);\n -ms-transform: scale(@ratio); // IE9 only\n -o-transform: scale(@ratio);\n transform: scale(@ratio);\n}\n.scale(@ratioX; @ratioY) {\n -webkit-transform: scale(@ratioX, @ratioY);\n -ms-transform: scale(@ratioX, @ratioY); // IE9 only\n -o-transform: scale(@ratioX, @ratioY);\n transform: scale(@ratioX, @ratioY);\n}\n.scaleX(@ratio) {\n -webkit-transform: scaleX(@ratio);\n -ms-transform: scaleX(@ratio); // IE9 only\n -o-transform: scaleX(@ratio);\n transform: scaleX(@ratio);\n}\n.scaleY(@ratio) {\n -webkit-transform: scaleY(@ratio);\n -ms-transform: scaleY(@ratio); // IE9 only\n -o-transform: scaleY(@ratio);\n transform: scaleY(@ratio);\n}\n.skew(@x; @y) {\n -webkit-transform: skewX(@x) skewY(@y);\n -ms-transform: skewX(@x) skewY(@y); // See https://github.com/twbs/bootstrap/issues/4885; IE9+\n -o-transform: skewX(@x) skewY(@y);\n transform: skewX(@x) skewY(@y);\n}\n.translate(@x; @y) {\n -webkit-transform: translate(@x, @y);\n -ms-transform: translate(@x, @y); // IE9 only\n -o-transform: translate(@x, @y);\n transform: translate(@x, @y);\n}\n.translate3d(@x; @y; @z) {\n -webkit-transform: translate3d(@x, @y, @z);\n transform: translate3d(@x, @y, @z);\n}\n.rotate(@degrees) {\n -webkit-transform: rotate(@degrees);\n -ms-transform: rotate(@degrees); // IE9 only\n -o-transform: rotate(@degrees);\n transform: rotate(@degrees);\n}\n.rotateX(@degrees) {\n -webkit-transform: rotateX(@degrees);\n -ms-transform: rotateX(@degrees); // IE9 only\n -o-transform: rotateX(@degrees);\n transform: rotateX(@degrees);\n}\n.rotateY(@degrees) {\n -webkit-transform: rotateY(@degrees);\n -ms-transform: rotateY(@degrees); // IE9 only\n -o-transform: rotateY(@degrees);\n transform: rotateY(@degrees);\n}\n.perspective(@perspective) {\n -webkit-perspective: @perspective;\n -moz-perspective: @perspective;\n perspective: @perspective;\n}\n.perspective-origin(@perspective) {\n -webkit-perspective-origin: @perspective;\n -moz-perspective-origin: @perspective;\n perspective-origin: @perspective;\n}\n.transform-origin(@origin) {\n -webkit-transform-origin: @origin;\n -moz-transform-origin: @origin;\n -ms-transform-origin: @origin; // IE9 only\n transform-origin: @origin;\n}\n\n\n// Transitions\n\n.transition(@transition) {\n -webkit-transition: @transition;\n -o-transition: @transition;\n transition: @transition;\n}\n.transition-property(@transition-property) {\n -webkit-transition-property: @transition-property;\n transition-property: @transition-property;\n}\n.transition-delay(@transition-delay) {\n -webkit-transition-delay: @transition-delay;\n transition-delay: @transition-delay;\n}\n.transition-duration(@transition-duration) {\n -webkit-transition-duration: @transition-duration;\n transition-duration: @transition-duration;\n}\n.transition-timing-function(@timing-function) {\n -webkit-transition-timing-function: @timing-function;\n transition-timing-function: @timing-function;\n}\n.transition-transform(@transition) {\n -webkit-transition: -webkit-transform @transition;\n -moz-transition: -moz-transform @transition;\n -o-transition: -o-transform @transition;\n transition: transform @transition;\n}\n\n\n// User select\n// For selecting text on the page\n\n.user-select(@select) {\n -webkit-user-select: @select;\n -moz-user-select: @select;\n -ms-user-select: @select; // IE10+\n user-select: @select;\n}\n","// Gradients\n\n#gradient {\n\n // Horizontal gradient, from left to right\n //\n // Creates two color stops, start and end, by specifying a color and position for each color stop.\n // Color stops are not available in IE9 and below.\n .horizontal(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n background-image: -webkit-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Opera 12\n background-image: linear-gradient(to right, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n background-repeat: repeat-x;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\",argb(@start-color),argb(@end-color))); // IE9 and down\n }\n\n // Vertical gradient, from top to bottom\n //\n // Creates two color stops, start and end, by specifying a color and position for each color stop.\n // Color stops are not available in IE9 and below.\n .vertical(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n background-image: -webkit-linear-gradient(top, @start-color @start-percent, @end-color @end-percent); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(top, @start-color @start-percent, @end-color @end-percent); // Opera 12\n background-image: linear-gradient(to bottom, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n background-repeat: repeat-x;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\",argb(@start-color),argb(@end-color))); // IE9 and down\n }\n\n .directional(@start-color: #555; @end-color: #333; @deg: 45deg) {\n background-repeat: repeat-x;\n background-image: -webkit-linear-gradient(@deg, @start-color, @end-color); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(@deg, @start-color, @end-color); // Opera 12\n background-image: linear-gradient(@deg, @start-color, @end-color); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n }\n .horizontal-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n background-image: -webkit-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);\n background-image: -o-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);\n background-image: linear-gradient(to right, @start-color, @mid-color @color-stop, @end-color);\n background-repeat: no-repeat;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n }\n .vertical-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n background-image: -webkit-linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-image: -o-linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-image: linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-repeat: no-repeat;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n }\n .radial(@inner-color: #555; @outer-color: #333) {\n background-image: -webkit-radial-gradient(circle, @inner-color, @outer-color);\n background-image: radial-gradient(circle, @inner-color, @outer-color);\n background-repeat: no-repeat;\n }\n .striped(@color: rgba(255,255,255,.15); @angle: 45deg) {\n background-image: -webkit-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n background-image: linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n }\n}\n","// Reset filters for IE\n//\n// When you need to remove a gradient background, do not forget to use this to reset\n// the IE filter for IE9 and below.\n\n.reset-filter() {\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(enabled = false)\"));\n}\n"]}
--------------------------------------------------------------------------------
/bookms2/static/bs/fonts/glyphicons-halflings-regular.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yance-dev/mydjango/2f841d2b82f9d002a8175dbbe7d963d479b4346a/bookms2/static/bs/fonts/glyphicons-halflings-regular.eot
--------------------------------------------------------------------------------
/bookms2/static/bs/fonts/glyphicons-halflings-regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yance-dev/mydjango/2f841d2b82f9d002a8175dbbe7d963d479b4346a/bookms2/static/bs/fonts/glyphicons-halflings-regular.ttf
--------------------------------------------------------------------------------
/bookms2/static/bs/fonts/glyphicons-halflings-regular.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yance-dev/mydjango/2f841d2b82f9d002a8175dbbe7d963d479b4346a/bookms2/static/bs/fonts/glyphicons-halflings-regular.woff
--------------------------------------------------------------------------------
/bookms2/static/bs/fonts/glyphicons-halflings-regular.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yance-dev/mydjango/2f841d2b82f9d002a8175dbbe7d963d479b4346a/bookms2/static/bs/fonts/glyphicons-halflings-regular.woff2
--------------------------------------------------------------------------------
/bookms2/static/bs/js/npm.js:
--------------------------------------------------------------------------------
1 | // This file is autogenerated via the `commonjs` Grunt task. You can require() this file in a CommonJS environment.
2 | require('../../js/transition.js')
3 | require('../../js/alert.js')
4 | require('../../js/button.js')
5 | require('../../js/carousel.js')
6 | require('../../js/collapse.js')
7 | require('../../js/dropdown.js')
8 | require('../../js/modal.js')
9 | require('../../js/tooltip.js')
10 | require('../../js/popover.js')
11 | require('../../js/scrollspy.js')
12 | require('../../js/tab.js')
13 | require('../../js/affix.js')
--------------------------------------------------------------------------------
/bookms2/static/js/app01.js:
--------------------------------------------------------------------------------
1 | $(function () {
2 | $('.nav li').click(function () {
3 | this.addClass("active").siblings().removeClass("active")
4 | })
5 | })
--------------------------------------------------------------------------------
/bookms2/templates/add_book.html:
--------------------------------------------------------------------------------
1 | {% extends 'base.html' %}
2 |
3 | {% block content %}
4 |
51 | {% endblock %}
--------------------------------------------------------------------------------
/bookms2/templates/base.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Title
6 |
7 |
47 |
48 |
49 |
50 |
51 |
52 |
56 | {% block content %}{% endblock %}
57 |
58 |
59 |
60 |
61 |
--------------------------------------------------------------------------------
/bookms2/templates/book_detail.html:
--------------------------------------------------------------------------------
1 | {% extends 'base.html' %}
2 | {% block content %}
3 |
8 |
9 |
10 |
11 |
12 |
添加书籍
13 |
14 |
15 |
16 | 书籍名称 |
17 | 价格 |
18 | 出版日期 |
19 | 出版社 |
20 | 作者 |
21 | 删除操作 |
22 | 编辑操作 |
23 |
24 |
25 |
26 |
27 | {% for my_book in book_list %}
28 |
29 | {{ my_book.title }} |
30 | {{ my_book.price }} |
31 | {{ my_book.pub_date|date:'Y-m-d' }} |
32 | {{my_book.publish.name }} |
33 |
34 | {% for aut in my_book.authors.all %}
35 | {% if forloop.last %}
36 | {{ aut.name }}
37 | {% else %}
38 | {{ aut.name }},
39 | {% endif %}
40 | {% endfor %}
41 | |
42 | 删除 |
43 | 编辑 |
44 |
45 |
46 | {% endfor %}
47 |
48 |
49 |
50 |
51 |
返回
52 |
53 |
54 |
55 |
56 | {% endblock %}
--------------------------------------------------------------------------------
/bookms2/templates/books.html:
--------------------------------------------------------------------------------
1 | {% extends 'base.html' %}
2 | {% block content %}
3 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 | 书籍名称 |
16 | 价格 |
17 | 出版日期 |
18 | 出版社 |
19 | 作者 |
20 | 删除操作 |
21 | 编辑操作 |
22 |
23 |
24 |
25 |
26 | {% for my_book in book_list %}
27 |
28 | {{ my_book.title }} |
29 | {{ my_book.price }} |
30 | {{ my_book.pub_date|date:'Y-m-d' }} |
31 |
32 | {{ my_book.publish.name }}
33 | |
34 |
35 | {% for aut in my_book.authors.all %}
36 |
37 | {% if forloop.last %}
38 |
39 | {{ aut.name }}
40 | {% else %}
41 | {{ aut.name }},
42 |
43 | {% endif %}
44 | {% endfor %}
45 | |
46 | 删除 |
47 | 编辑 |
48 |
49 |
50 | {% endfor %}
51 |
52 |
53 |
54 |
55 |
添加书籍
56 |
57 |
58 |
59 |
60 |
61 |
62 | {% endblock %}
--------------------------------------------------------------------------------
/bookms2/templates/modbook.html:
--------------------------------------------------------------------------------
1 | {% extends 'base.html' %}
2 |
3 | {% block content %}
4 |
73 | {% endblock %}
--------------------------------------------------------------------------------
/bookms2/urls.py:
--------------------------------------------------------------------------------
1 | """bookms2 URL Configuration
2 |
3 | The `urlpatterns` list routes URLs to views. For more information please see:
4 | https://docs.djangoproject.com/en/2.1/topics/http/urls/
5 | Examples:
6 | Function views
7 | 1. Add an import: from my_app import views
8 | 2. Add a URL to urlpatterns: path('', views.home, name='home')
9 | Class-based views
10 | 1. Add an import: from other_app.views import Home
11 | 2. Add a URL to urlpatterns: path('', Home.as_view(), name='home')
12 | Including another URLconf
13 | 1. Import the include() function: from django.urls import include, path
14 | 2. Add a URL to urlpatterns: path('blog/', include('blog.urls'))
15 | """
16 | from django.contrib import admin
17 | from django.urls import path,re_path,include
18 |
19 | urlpatterns = [
20 | path('admin/', admin.site.urls),
21 | re_path(r'^app01/',include('app01.urls',namespace='app01'))
22 | ]
23 |
--------------------------------------------------------------------------------
/bookms2/wsgi.py:
--------------------------------------------------------------------------------
1 | """
2 | WSGI config for bookms2 project.
3 |
4 | It exposes the WSGI callable as a module-level variable named ``application``.
5 |
6 | For more information on this file, see
7 | https://docs.djangoproject.com/en/2.1/howto/deployment/wsgi/
8 | """
9 |
10 | import os
11 |
12 | from django.core.wsgi import get_wsgi_application
13 |
14 | os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'bookms2.settings')
15 |
16 | application = get_wsgi_application()
17 |
--------------------------------------------------------------------------------
/img/addbook.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yance-dev/mydjango/2f841d2b82f9d002a8175dbbe7d963d479b4346a/img/addbook.png
--------------------------------------------------------------------------------
/img/books.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yance-dev/mydjango/2f841d2b82f9d002a8175dbbe7d963d479b4346a/img/books.png
--------------------------------------------------------------------------------
/img/djangomtv.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yance-dev/mydjango/2f841d2b82f9d002a8175dbbe7d963d479b4346a/img/djangomtv.png
--------------------------------------------------------------------------------
/img/dookdetail.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yance-dev/mydjango/2f841d2b82f9d002a8175dbbe7d963d479b4346a/img/dookdetail.png
--------------------------------------------------------------------------------
/img/tree.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yance-dev/mydjango/2f841d2b82f9d002a8175dbbe7d963d479b4346a/img/tree.png
--------------------------------------------------------------------------------
/manage.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env python
2 | import os
3 | import sys
4 |
5 | if __name__ == '__main__':
6 | os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'bookms2.settings')
7 | try:
8 | from django.core.management import execute_from_command_line
9 | except ImportError as exc:
10 | raise ImportError(
11 | "Couldn't import Django. Are you sure it's installed and "
12 | "available on your PYTHONPATH environment variable? Did you "
13 | "forget to activate a virtual environment?"
14 | ) from exc
15 | execute_from_command_line(sys.argv)
16 |
--------------------------------------------------------------------------------
/static/__init__.py:
--------------------------------------------------------------------------------
1 | # -*- coding: utf-8 -*-
2 |
3 |
--------------------------------------------------------------------------------
/static/bs/css/bootstrap-theme.min.css:
--------------------------------------------------------------------------------
1 | /*!
2 | * Bootstrap v3.3.7 (http://getbootstrap.com)
3 | * Copyright 2011-2016 Twitter, Inc.
4 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
5 | */.btn-danger,.btn-default,.btn-info,.btn-primary,.btn-success,.btn-warning{text-shadow:0 -1px 0 rgba(0,0,0,.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 1px rgba(0,0,0,.075)}.btn-danger.active,.btn-danger:active,.btn-default.active,.btn-default:active,.btn-info.active,.btn-info:active,.btn-primary.active,.btn-primary:active,.btn-success.active,.btn-success:active,.btn-warning.active,.btn-warning:active{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-danger.disabled,.btn-danger[disabled],.btn-default.disabled,.btn-default[disabled],.btn-info.disabled,.btn-info[disabled],.btn-primary.disabled,.btn-primary[disabled],.btn-success.disabled,.btn-success[disabled],.btn-warning.disabled,.btn-warning[disabled],fieldset[disabled] .btn-danger,fieldset[disabled] .btn-default,fieldset[disabled] .btn-info,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-success,fieldset[disabled] .btn-warning{-webkit-box-shadow:none;box-shadow:none}.btn-danger .badge,.btn-default .badge,.btn-info .badge,.btn-primary .badge,.btn-success .badge,.btn-warning .badge{text-shadow:none}.btn.active,.btn:active{background-image:none}.btn-default{text-shadow:0 1px 0 #fff;background-image:-webkit-linear-gradient(top,#fff 0,#e0e0e0 100%);background-image:-o-linear-gradient(top,#fff 0,#e0e0e0 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e0e0e0));background-image:linear-gradient(to bottom,#fff 0,#e0e0e0 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#dbdbdb;border-color:#ccc}.btn-default:focus,.btn-default:hover{background-color:#e0e0e0;background-position:0 -15px}.btn-default.active,.btn-default:active{background-color:#e0e0e0;border-color:#dbdbdb}.btn-default.disabled,.btn-default.disabled.active,.btn-default.disabled.focus,.btn-default.disabled:active,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled],.btn-default[disabled].active,.btn-default[disabled].focus,.btn-default[disabled]:active,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default,fieldset[disabled] .btn-default.active,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:active,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:hover{background-color:#e0e0e0;background-image:none}.btn-primary{background-image:-webkit-linear-gradient(top,#337ab7 0,#265a88 100%);background-image:-o-linear-gradient(top,#337ab7 0,#265a88 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#265a88));background-image:linear-gradient(to bottom,#337ab7 0,#265a88 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff265a88', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#245580}.btn-primary:focus,.btn-primary:hover{background-color:#265a88;background-position:0 -15px}.btn-primary.active,.btn-primary:active{background-color:#265a88;border-color:#245580}.btn-primary.disabled,.btn-primary.disabled.active,.btn-primary.disabled.focus,.btn-primary.disabled:active,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled],.btn-primary[disabled].active,.btn-primary[disabled].focus,.btn-primary[disabled]:active,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary.active,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#265a88;background-image:none}.btn-success{background-image:-webkit-linear-gradient(top,#5cb85c 0,#419641 100%);background-image:-o-linear-gradient(top,#5cb85c 0,#419641 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5cb85c),to(#419641));background-image:linear-gradient(to bottom,#5cb85c 0,#419641 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#3e8f3e}.btn-success:focus,.btn-success:hover{background-color:#419641;background-position:0 -15px}.btn-success.active,.btn-success:active{background-color:#419641;border-color:#3e8f3e}.btn-success.disabled,.btn-success.disabled.active,.btn-success.disabled.focus,.btn-success.disabled:active,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled],.btn-success[disabled].active,.btn-success[disabled].focus,.btn-success[disabled]:active,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success,fieldset[disabled] .btn-success.active,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:active,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#419641;background-image:none}.btn-info{background-image:-webkit-linear-gradient(top,#5bc0de 0,#2aabd2 100%);background-image:-o-linear-gradient(top,#5bc0de 0,#2aabd2 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5bc0de),to(#2aabd2));background-image:linear-gradient(to bottom,#5bc0de 0,#2aabd2 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#28a4c9}.btn-info:focus,.btn-info:hover{background-color:#2aabd2;background-position:0 -15px}.btn-info.active,.btn-info:active{background-color:#2aabd2;border-color:#28a4c9}.btn-info.disabled,.btn-info.disabled.active,.btn-info.disabled.focus,.btn-info.disabled:active,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled],.btn-info[disabled].active,.btn-info[disabled].focus,.btn-info[disabled]:active,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info,fieldset[disabled] .btn-info.active,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:active,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#2aabd2;background-image:none}.btn-warning{background-image:-webkit-linear-gradient(top,#f0ad4e 0,#eb9316 100%);background-image:-o-linear-gradient(top,#f0ad4e 0,#eb9316 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f0ad4e),to(#eb9316));background-image:linear-gradient(to bottom,#f0ad4e 0,#eb9316 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#e38d13}.btn-warning:focus,.btn-warning:hover{background-color:#eb9316;background-position:0 -15px}.btn-warning.active,.btn-warning:active{background-color:#eb9316;border-color:#e38d13}.btn-warning.disabled,.btn-warning.disabled.active,.btn-warning.disabled.focus,.btn-warning.disabled:active,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled],.btn-warning[disabled].active,.btn-warning[disabled].focus,.btn-warning[disabled]:active,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning,fieldset[disabled] .btn-warning.active,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:active,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#eb9316;background-image:none}.btn-danger{background-image:-webkit-linear-gradient(top,#d9534f 0,#c12e2a 100%);background-image:-o-linear-gradient(top,#d9534f 0,#c12e2a 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9534f),to(#c12e2a));background-image:linear-gradient(to bottom,#d9534f 0,#c12e2a 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#b92c28}.btn-danger:focus,.btn-danger:hover{background-color:#c12e2a;background-position:0 -15px}.btn-danger.active,.btn-danger:active{background-color:#c12e2a;border-color:#b92c28}.btn-danger.disabled,.btn-danger.disabled.active,.btn-danger.disabled.focus,.btn-danger.disabled:active,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled],.btn-danger[disabled].active,.btn-danger[disabled].focus,.btn-danger[disabled]:active,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger,fieldset[disabled] .btn-danger.active,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:active,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#c12e2a;background-image:none}.img-thumbnail,.thumbnail{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.075);box-shadow:0 1px 2px rgba(0,0,0,.075)}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{background-color:#e8e8e8;background-image:-webkit-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-o-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#e8e8e8));background-image:linear-gradient(to bottom,#f5f5f5 0,#e8e8e8 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);background-repeat:repeat-x}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{background-color:#2e6da4;background-image:-webkit-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2e6da4));background-image:linear-gradient(to bottom,#337ab7 0,#2e6da4 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);background-repeat:repeat-x}.navbar-default{background-image:-webkit-linear-gradient(top,#fff 0,#f8f8f8 100%);background-image:-o-linear-gradient(top,#fff 0,#f8f8f8 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#f8f8f8));background-image:linear-gradient(to bottom,#fff 0,#f8f8f8 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-radius:4px;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 5px rgba(0,0,0,.075);box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 5px rgba(0,0,0,.075)}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.open>a{background-image:-webkit-linear-gradient(top,#dbdbdb 0,#e2e2e2 100%);background-image:-o-linear-gradient(top,#dbdbdb 0,#e2e2e2 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#dbdbdb),to(#e2e2e2));background-image:linear-gradient(to bottom,#dbdbdb 0,#e2e2e2 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdbdbdb', endColorstr='#ffe2e2e2', GradientType=0);background-repeat:repeat-x;-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,.075);box-shadow:inset 0 3px 9px rgba(0,0,0,.075)}.navbar-brand,.navbar-nav>li>a{text-shadow:0 1px 0 rgba(255,255,255,.25)}.navbar-inverse{background-image:-webkit-linear-gradient(top,#3c3c3c 0,#222 100%);background-image:-o-linear-gradient(top,#3c3c3c 0,#222 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#3c3c3c),to(#222));background-image:linear-gradient(to bottom,#3c3c3c 0,#222 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-radius:4px}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.open>a{background-image:-webkit-linear-gradient(top,#080808 0,#0f0f0f 100%);background-image:-o-linear-gradient(top,#080808 0,#0f0f0f 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#080808),to(#0f0f0f));background-image:linear-gradient(to bottom,#080808 0,#0f0f0f 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff080808', endColorstr='#ff0f0f0f', GradientType=0);background-repeat:repeat-x;-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,.25);box-shadow:inset 0 3px 9px rgba(0,0,0,.25)}.navbar-inverse .navbar-brand,.navbar-inverse .navbar-nav>li>a{text-shadow:0 -1px 0 rgba(0,0,0,.25)}.navbar-fixed-bottom,.navbar-fixed-top,.navbar-static-top{border-radius:0}@media (max-width:767px){.navbar .navbar-nav .open .dropdown-menu>.active>a,.navbar .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-image:-webkit-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2e6da4));background-image:linear-gradient(to bottom,#337ab7 0,#2e6da4 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);background-repeat:repeat-x}}.alert{text-shadow:0 1px 0 rgba(255,255,255,.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 2px rgba(0,0,0,.05);box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 2px rgba(0,0,0,.05)}.alert-success{background-image:-webkit-linear-gradient(top,#dff0d8 0,#c8e5bc 100%);background-image:-o-linear-gradient(top,#dff0d8 0,#c8e5bc 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#dff0d8),to(#c8e5bc));background-image:linear-gradient(to bottom,#dff0d8 0,#c8e5bc 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0);background-repeat:repeat-x;border-color:#b2dba1}.alert-info{background-image:-webkit-linear-gradient(top,#d9edf7 0,#b9def0 100%);background-image:-o-linear-gradient(top,#d9edf7 0,#b9def0 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9edf7),to(#b9def0));background-image:linear-gradient(to bottom,#d9edf7 0,#b9def0 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0);background-repeat:repeat-x;border-color:#9acfea}.alert-warning{background-image:-webkit-linear-gradient(top,#fcf8e3 0,#f8efc0 100%);background-image:-o-linear-gradient(top,#fcf8e3 0,#f8efc0 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fcf8e3),to(#f8efc0));background-image:linear-gradient(to bottom,#fcf8e3 0,#f8efc0 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0);background-repeat:repeat-x;border-color:#f5e79e}.alert-danger{background-image:-webkit-linear-gradient(top,#f2dede 0,#e7c3c3 100%);background-image:-o-linear-gradient(top,#f2dede 0,#e7c3c3 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f2dede),to(#e7c3c3));background-image:linear-gradient(to bottom,#f2dede 0,#e7c3c3 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0);background-repeat:repeat-x;border-color:#dca7a7}.progress{background-image:-webkit-linear-gradient(top,#ebebeb 0,#f5f5f5 100%);background-image:-o-linear-gradient(top,#ebebeb 0,#f5f5f5 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#ebebeb),to(#f5f5f5));background-image:linear-gradient(to bottom,#ebebeb 0,#f5f5f5 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0);background-repeat:repeat-x}.progress-bar{background-image:-webkit-linear-gradient(top,#337ab7 0,#286090 100%);background-image:-o-linear-gradient(top,#337ab7 0,#286090 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#286090));background-image:linear-gradient(to bottom,#337ab7 0,#286090 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff286090', GradientType=0);background-repeat:repeat-x}.progress-bar-success{background-image:-webkit-linear-gradient(top,#5cb85c 0,#449d44 100%);background-image:-o-linear-gradient(top,#5cb85c 0,#449d44 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5cb85c),to(#449d44));background-image:linear-gradient(to bottom,#5cb85c 0,#449d44 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0);background-repeat:repeat-x}.progress-bar-info{background-image:-webkit-linear-gradient(top,#5bc0de 0,#31b0d5 100%);background-image:-o-linear-gradient(top,#5bc0de 0,#31b0d5 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5bc0de),to(#31b0d5));background-image:linear-gradient(to bottom,#5bc0de 0,#31b0d5 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0);background-repeat:repeat-x}.progress-bar-warning{background-image:-webkit-linear-gradient(top,#f0ad4e 0,#ec971f 100%);background-image:-o-linear-gradient(top,#f0ad4e 0,#ec971f 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f0ad4e),to(#ec971f));background-image:linear-gradient(to bottom,#f0ad4e 0,#ec971f 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0);background-repeat:repeat-x}.progress-bar-danger{background-image:-webkit-linear-gradient(top,#d9534f 0,#c9302c 100%);background-image:-o-linear-gradient(top,#d9534f 0,#c9302c 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9534f),to(#c9302c));background-image:linear-gradient(to bottom,#d9534f 0,#c9302c 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0);background-repeat:repeat-x}.progress-bar-striped{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.list-group{border-radius:4px;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.075);box-shadow:0 1px 2px rgba(0,0,0,.075)}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{text-shadow:0 -1px 0 #286090;background-image:-webkit-linear-gradient(top,#337ab7 0,#2b669a 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2b669a 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2b669a));background-image:linear-gradient(to bottom,#337ab7 0,#2b669a 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2b669a', GradientType=0);background-repeat:repeat-x;border-color:#2b669a}.list-group-item.active .badge,.list-group-item.active:focus .badge,.list-group-item.active:hover .badge{text-shadow:none}.panel{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.05);box-shadow:0 1px 2px rgba(0,0,0,.05)}.panel-default>.panel-heading{background-image:-webkit-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-o-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#e8e8e8));background-image:linear-gradient(to bottom,#f5f5f5 0,#e8e8e8 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);background-repeat:repeat-x}.panel-primary>.panel-heading{background-image:-webkit-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2e6da4));background-image:linear-gradient(to bottom,#337ab7 0,#2e6da4 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);background-repeat:repeat-x}.panel-success>.panel-heading{background-image:-webkit-linear-gradient(top,#dff0d8 0,#d0e9c6 100%);background-image:-o-linear-gradient(top,#dff0d8 0,#d0e9c6 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#dff0d8),to(#d0e9c6));background-image:linear-gradient(to bottom,#dff0d8 0,#d0e9c6 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0);background-repeat:repeat-x}.panel-info>.panel-heading{background-image:-webkit-linear-gradient(top,#d9edf7 0,#c4e3f3 100%);background-image:-o-linear-gradient(top,#d9edf7 0,#c4e3f3 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9edf7),to(#c4e3f3));background-image:linear-gradient(to bottom,#d9edf7 0,#c4e3f3 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0);background-repeat:repeat-x}.panel-warning>.panel-heading{background-image:-webkit-linear-gradient(top,#fcf8e3 0,#faf2cc 100%);background-image:-o-linear-gradient(top,#fcf8e3 0,#faf2cc 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fcf8e3),to(#faf2cc));background-image:linear-gradient(to bottom,#fcf8e3 0,#faf2cc 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0);background-repeat:repeat-x}.panel-danger>.panel-heading{background-image:-webkit-linear-gradient(top,#f2dede 0,#ebcccc 100%);background-image:-o-linear-gradient(top,#f2dede 0,#ebcccc 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f2dede),to(#ebcccc));background-image:linear-gradient(to bottom,#f2dede 0,#ebcccc 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0);background-repeat:repeat-x}.well{background-image:-webkit-linear-gradient(top,#e8e8e8 0,#f5f5f5 100%);background-image:-o-linear-gradient(top,#e8e8e8 0,#f5f5f5 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#e8e8e8),to(#f5f5f5));background-image:linear-gradient(to bottom,#e8e8e8 0,#f5f5f5 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0);background-repeat:repeat-x;border-color:#dcdcdc;-webkit-box-shadow:inset 0 1px 3px rgba(0,0,0,.05),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 3px rgba(0,0,0,.05),0 1px 0 rgba(255,255,255,.1)}
6 | /*# sourceMappingURL=bootstrap-theme.min.css.map */
--------------------------------------------------------------------------------
/static/bs/css/bootstrap-theme.min.css.map:
--------------------------------------------------------------------------------
1 | {"version":3,"sources":["less/theme.less","less/mixins/vendor-prefixes.less","less/mixins/gradients.less","less/mixins/reset-filter.less"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Bootstrap v3.3.7 (http://getbootstrap.com)\n * Copyright 2011-2016 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n\n//\n// Load core variables and mixins\n// --------------------------------------------------\n\n@import \"variables.less\";\n@import \"mixins.less\";\n\n\n//\n// Buttons\n// --------------------------------------------------\n\n// Common styles\n.btn-default,\n.btn-primary,\n.btn-success,\n.btn-info,\n.btn-warning,\n.btn-danger {\n text-shadow: 0 -1px 0 rgba(0,0,0,.2);\n @shadow: inset 0 1px 0 rgba(255,255,255,.15), 0 1px 1px rgba(0,0,0,.075);\n .box-shadow(@shadow);\n\n // Reset the shadow\n &:active,\n &.active {\n .box-shadow(inset 0 3px 5px rgba(0,0,0,.125));\n }\n\n &.disabled,\n &[disabled],\n fieldset[disabled] & {\n .box-shadow(none);\n }\n\n .badge {\n text-shadow: none;\n }\n}\n\n// Mixin for generating new styles\n.btn-styles(@btn-color: #555) {\n #gradient > .vertical(@start-color: @btn-color; @end-color: darken(@btn-color, 12%));\n .reset-filter(); // Disable gradients for IE9 because filter bleeds through rounded corners; see https://github.com/twbs/bootstrap/issues/10620\n background-repeat: repeat-x;\n border-color: darken(@btn-color, 14%);\n\n &:hover,\n &:focus {\n background-color: darken(@btn-color, 12%);\n background-position: 0 -15px;\n }\n\n &:active,\n &.active {\n background-color: darken(@btn-color, 12%);\n border-color: darken(@btn-color, 14%);\n }\n\n &.disabled,\n &[disabled],\n fieldset[disabled] & {\n &,\n &:hover,\n &:focus,\n &.focus,\n &:active,\n &.active {\n background-color: darken(@btn-color, 12%);\n background-image: none;\n }\n }\n}\n\n// Common styles\n.btn {\n // Remove the gradient for the pressed/active state\n &:active,\n &.active {\n background-image: none;\n }\n}\n\n// Apply the mixin to the buttons\n.btn-default { .btn-styles(@btn-default-bg); text-shadow: 0 1px 0 #fff; border-color: #ccc; }\n.btn-primary { .btn-styles(@btn-primary-bg); }\n.btn-success { .btn-styles(@btn-success-bg); }\n.btn-info { .btn-styles(@btn-info-bg); }\n.btn-warning { .btn-styles(@btn-warning-bg); }\n.btn-danger { .btn-styles(@btn-danger-bg); }\n\n\n//\n// Images\n// --------------------------------------------------\n\n.thumbnail,\n.img-thumbnail {\n .box-shadow(0 1px 2px rgba(0,0,0,.075));\n}\n\n\n//\n// Dropdowns\n// --------------------------------------------------\n\n.dropdown-menu > li > a:hover,\n.dropdown-menu > li > a:focus {\n #gradient > .vertical(@start-color: @dropdown-link-hover-bg; @end-color: darken(@dropdown-link-hover-bg, 5%));\n background-color: darken(@dropdown-link-hover-bg, 5%);\n}\n.dropdown-menu > .active > a,\n.dropdown-menu > .active > a:hover,\n.dropdown-menu > .active > a:focus {\n #gradient > .vertical(@start-color: @dropdown-link-active-bg; @end-color: darken(@dropdown-link-active-bg, 5%));\n background-color: darken(@dropdown-link-active-bg, 5%);\n}\n\n\n//\n// Navbar\n// --------------------------------------------------\n\n// Default navbar\n.navbar-default {\n #gradient > .vertical(@start-color: lighten(@navbar-default-bg, 10%); @end-color: @navbar-default-bg);\n .reset-filter(); // Remove gradient in IE<10 to fix bug where dropdowns don't get triggered\n border-radius: @navbar-border-radius;\n @shadow: inset 0 1px 0 rgba(255,255,255,.15), 0 1px 5px rgba(0,0,0,.075);\n .box-shadow(@shadow);\n\n .navbar-nav > .open > a,\n .navbar-nav > .active > a {\n #gradient > .vertical(@start-color: darken(@navbar-default-link-active-bg, 5%); @end-color: darken(@navbar-default-link-active-bg, 2%));\n .box-shadow(inset 0 3px 9px rgba(0,0,0,.075));\n }\n}\n.navbar-brand,\n.navbar-nav > li > a {\n text-shadow: 0 1px 0 rgba(255,255,255,.25);\n}\n\n// Inverted navbar\n.navbar-inverse {\n #gradient > .vertical(@start-color: lighten(@navbar-inverse-bg, 10%); @end-color: @navbar-inverse-bg);\n .reset-filter(); // Remove gradient in IE<10 to fix bug where dropdowns don't get triggered; see https://github.com/twbs/bootstrap/issues/10257\n border-radius: @navbar-border-radius;\n .navbar-nav > .open > a,\n .navbar-nav > .active > a {\n #gradient > .vertical(@start-color: @navbar-inverse-link-active-bg; @end-color: lighten(@navbar-inverse-link-active-bg, 2.5%));\n .box-shadow(inset 0 3px 9px rgba(0,0,0,.25));\n }\n\n .navbar-brand,\n .navbar-nav > li > a {\n text-shadow: 0 -1px 0 rgba(0,0,0,.25);\n }\n}\n\n// Undo rounded corners in static and fixed navbars\n.navbar-static-top,\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n border-radius: 0;\n}\n\n// Fix active state of dropdown items in collapsed mode\n@media (max-width: @grid-float-breakpoint-max) {\n .navbar .navbar-nav .open .dropdown-menu > .active > a {\n &,\n &:hover,\n &:focus {\n color: #fff;\n #gradient > .vertical(@start-color: @dropdown-link-active-bg; @end-color: darken(@dropdown-link-active-bg, 5%));\n }\n }\n}\n\n\n//\n// Alerts\n// --------------------------------------------------\n\n// Common styles\n.alert {\n text-shadow: 0 1px 0 rgba(255,255,255,.2);\n @shadow: inset 0 1px 0 rgba(255,255,255,.25), 0 1px 2px rgba(0,0,0,.05);\n .box-shadow(@shadow);\n}\n\n// Mixin for generating new styles\n.alert-styles(@color) {\n #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 7.5%));\n border-color: darken(@color, 15%);\n}\n\n// Apply the mixin to the alerts\n.alert-success { .alert-styles(@alert-success-bg); }\n.alert-info { .alert-styles(@alert-info-bg); }\n.alert-warning { .alert-styles(@alert-warning-bg); }\n.alert-danger { .alert-styles(@alert-danger-bg); }\n\n\n//\n// Progress bars\n// --------------------------------------------------\n\n// Give the progress background some depth\n.progress {\n #gradient > .vertical(@start-color: darken(@progress-bg, 4%); @end-color: @progress-bg)\n}\n\n// Mixin for generating new styles\n.progress-bar-styles(@color) {\n #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 10%));\n}\n\n// Apply the mixin to the progress bars\n.progress-bar { .progress-bar-styles(@progress-bar-bg); }\n.progress-bar-success { .progress-bar-styles(@progress-bar-success-bg); }\n.progress-bar-info { .progress-bar-styles(@progress-bar-info-bg); }\n.progress-bar-warning { .progress-bar-styles(@progress-bar-warning-bg); }\n.progress-bar-danger { .progress-bar-styles(@progress-bar-danger-bg); }\n\n// Reset the striped class because our mixins don't do multiple gradients and\n// the above custom styles override the new `.progress-bar-striped` in v3.2.0.\n.progress-bar-striped {\n #gradient > .striped();\n}\n\n\n//\n// List groups\n// --------------------------------------------------\n\n.list-group {\n border-radius: @border-radius-base;\n .box-shadow(0 1px 2px rgba(0,0,0,.075));\n}\n.list-group-item.active,\n.list-group-item.active:hover,\n.list-group-item.active:focus {\n text-shadow: 0 -1px 0 darken(@list-group-active-bg, 10%);\n #gradient > .vertical(@start-color: @list-group-active-bg; @end-color: darken(@list-group-active-bg, 7.5%));\n border-color: darken(@list-group-active-border, 7.5%);\n\n .badge {\n text-shadow: none;\n }\n}\n\n\n//\n// Panels\n// --------------------------------------------------\n\n// Common styles\n.panel {\n .box-shadow(0 1px 2px rgba(0,0,0,.05));\n}\n\n// Mixin for generating new styles\n.panel-heading-styles(@color) {\n #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 5%));\n}\n\n// Apply the mixin to the panel headings only\n.panel-default > .panel-heading { .panel-heading-styles(@panel-default-heading-bg); }\n.panel-primary > .panel-heading { .panel-heading-styles(@panel-primary-heading-bg); }\n.panel-success > .panel-heading { .panel-heading-styles(@panel-success-heading-bg); }\n.panel-info > .panel-heading { .panel-heading-styles(@panel-info-heading-bg); }\n.panel-warning > .panel-heading { .panel-heading-styles(@panel-warning-heading-bg); }\n.panel-danger > .panel-heading { .panel-heading-styles(@panel-danger-heading-bg); }\n\n\n//\n// Wells\n// --------------------------------------------------\n\n.well {\n #gradient > .vertical(@start-color: darken(@well-bg, 5%); @end-color: @well-bg);\n border-color: darken(@well-bg, 10%);\n @shadow: inset 0 1px 3px rgba(0,0,0,.05), 0 1px 0 rgba(255,255,255,.1);\n .box-shadow(@shadow);\n}\n","// Vendor Prefixes\n//\n// All vendor mixins are deprecated as of v3.2.0 due to the introduction of\n// Autoprefixer in our Gruntfile. They have been removed in v4.\n\n// - Animations\n// - Backface visibility\n// - Box shadow\n// - Box sizing\n// - Content columns\n// - Hyphens\n// - Placeholder text\n// - Transformations\n// - Transitions\n// - User Select\n\n\n// Animations\n.animation(@animation) {\n -webkit-animation: @animation;\n -o-animation: @animation;\n animation: @animation;\n}\n.animation-name(@name) {\n -webkit-animation-name: @name;\n animation-name: @name;\n}\n.animation-duration(@duration) {\n -webkit-animation-duration: @duration;\n animation-duration: @duration;\n}\n.animation-timing-function(@timing-function) {\n -webkit-animation-timing-function: @timing-function;\n animation-timing-function: @timing-function;\n}\n.animation-delay(@delay) {\n -webkit-animation-delay: @delay;\n animation-delay: @delay;\n}\n.animation-iteration-count(@iteration-count) {\n -webkit-animation-iteration-count: @iteration-count;\n animation-iteration-count: @iteration-count;\n}\n.animation-direction(@direction) {\n -webkit-animation-direction: @direction;\n animation-direction: @direction;\n}\n.animation-fill-mode(@fill-mode) {\n -webkit-animation-fill-mode: @fill-mode;\n animation-fill-mode: @fill-mode;\n}\n\n// Backface visibility\n// Prevent browsers from flickering when using CSS 3D transforms.\n// Default value is `visible`, but can be changed to `hidden`\n\n.backface-visibility(@visibility) {\n -webkit-backface-visibility: @visibility;\n -moz-backface-visibility: @visibility;\n backface-visibility: @visibility;\n}\n\n// Drop shadows\n//\n// Note: Deprecated `.box-shadow()` as of v3.1.0 since all of Bootstrap's\n// supported browsers that have box shadow capabilities now support it.\n\n.box-shadow(@shadow) {\n -webkit-box-shadow: @shadow; // iOS <4.3 & Android <4.1\n box-shadow: @shadow;\n}\n\n// Box sizing\n.box-sizing(@boxmodel) {\n -webkit-box-sizing: @boxmodel;\n -moz-box-sizing: @boxmodel;\n box-sizing: @boxmodel;\n}\n\n// CSS3 Content Columns\n.content-columns(@column-count; @column-gap: @grid-gutter-width) {\n -webkit-column-count: @column-count;\n -moz-column-count: @column-count;\n column-count: @column-count;\n -webkit-column-gap: @column-gap;\n -moz-column-gap: @column-gap;\n column-gap: @column-gap;\n}\n\n// Optional hyphenation\n.hyphens(@mode: auto) {\n word-wrap: break-word;\n -webkit-hyphens: @mode;\n -moz-hyphens: @mode;\n -ms-hyphens: @mode; // IE10+\n -o-hyphens: @mode;\n hyphens: @mode;\n}\n\n// Placeholder text\n.placeholder(@color: @input-color-placeholder) {\n // Firefox\n &::-moz-placeholder {\n color: @color;\n opacity: 1; // Override Firefox's unusual default opacity; see https://github.com/twbs/bootstrap/pull/11526\n }\n &:-ms-input-placeholder { color: @color; } // Internet Explorer 10+\n &::-webkit-input-placeholder { color: @color; } // Safari and Chrome\n}\n\n// Transformations\n.scale(@ratio) {\n -webkit-transform: scale(@ratio);\n -ms-transform: scale(@ratio); // IE9 only\n -o-transform: scale(@ratio);\n transform: scale(@ratio);\n}\n.scale(@ratioX; @ratioY) {\n -webkit-transform: scale(@ratioX, @ratioY);\n -ms-transform: scale(@ratioX, @ratioY); // IE9 only\n -o-transform: scale(@ratioX, @ratioY);\n transform: scale(@ratioX, @ratioY);\n}\n.scaleX(@ratio) {\n -webkit-transform: scaleX(@ratio);\n -ms-transform: scaleX(@ratio); // IE9 only\n -o-transform: scaleX(@ratio);\n transform: scaleX(@ratio);\n}\n.scaleY(@ratio) {\n -webkit-transform: scaleY(@ratio);\n -ms-transform: scaleY(@ratio); // IE9 only\n -o-transform: scaleY(@ratio);\n transform: scaleY(@ratio);\n}\n.skew(@x; @y) {\n -webkit-transform: skewX(@x) skewY(@y);\n -ms-transform: skewX(@x) skewY(@y); // See https://github.com/twbs/bootstrap/issues/4885; IE9+\n -o-transform: skewX(@x) skewY(@y);\n transform: skewX(@x) skewY(@y);\n}\n.translate(@x; @y) {\n -webkit-transform: translate(@x, @y);\n -ms-transform: translate(@x, @y); // IE9 only\n -o-transform: translate(@x, @y);\n transform: translate(@x, @y);\n}\n.translate3d(@x; @y; @z) {\n -webkit-transform: translate3d(@x, @y, @z);\n transform: translate3d(@x, @y, @z);\n}\n.rotate(@degrees) {\n -webkit-transform: rotate(@degrees);\n -ms-transform: rotate(@degrees); // IE9 only\n -o-transform: rotate(@degrees);\n transform: rotate(@degrees);\n}\n.rotateX(@degrees) {\n -webkit-transform: rotateX(@degrees);\n -ms-transform: rotateX(@degrees); // IE9 only\n -o-transform: rotateX(@degrees);\n transform: rotateX(@degrees);\n}\n.rotateY(@degrees) {\n -webkit-transform: rotateY(@degrees);\n -ms-transform: rotateY(@degrees); // IE9 only\n -o-transform: rotateY(@degrees);\n transform: rotateY(@degrees);\n}\n.perspective(@perspective) {\n -webkit-perspective: @perspective;\n -moz-perspective: @perspective;\n perspective: @perspective;\n}\n.perspective-origin(@perspective) {\n -webkit-perspective-origin: @perspective;\n -moz-perspective-origin: @perspective;\n perspective-origin: @perspective;\n}\n.transform-origin(@origin) {\n -webkit-transform-origin: @origin;\n -moz-transform-origin: @origin;\n -ms-transform-origin: @origin; // IE9 only\n transform-origin: @origin;\n}\n\n\n// Transitions\n\n.transition(@transition) {\n -webkit-transition: @transition;\n -o-transition: @transition;\n transition: @transition;\n}\n.transition-property(@transition-property) {\n -webkit-transition-property: @transition-property;\n transition-property: @transition-property;\n}\n.transition-delay(@transition-delay) {\n -webkit-transition-delay: @transition-delay;\n transition-delay: @transition-delay;\n}\n.transition-duration(@transition-duration) {\n -webkit-transition-duration: @transition-duration;\n transition-duration: @transition-duration;\n}\n.transition-timing-function(@timing-function) {\n -webkit-transition-timing-function: @timing-function;\n transition-timing-function: @timing-function;\n}\n.transition-transform(@transition) {\n -webkit-transition: -webkit-transform @transition;\n -moz-transition: -moz-transform @transition;\n -o-transition: -o-transform @transition;\n transition: transform @transition;\n}\n\n\n// User select\n// For selecting text on the page\n\n.user-select(@select) {\n -webkit-user-select: @select;\n -moz-user-select: @select;\n -ms-user-select: @select; // IE10+\n user-select: @select;\n}\n","// Gradients\n\n#gradient {\n\n // Horizontal gradient, from left to right\n //\n // Creates two color stops, start and end, by specifying a color and position for each color stop.\n // Color stops are not available in IE9 and below.\n .horizontal(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n background-image: -webkit-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Opera 12\n background-image: linear-gradient(to right, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n background-repeat: repeat-x;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\",argb(@start-color),argb(@end-color))); // IE9 and down\n }\n\n // Vertical gradient, from top to bottom\n //\n // Creates two color stops, start and end, by specifying a color and position for each color stop.\n // Color stops are not available in IE9 and below.\n .vertical(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n background-image: -webkit-linear-gradient(top, @start-color @start-percent, @end-color @end-percent); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(top, @start-color @start-percent, @end-color @end-percent); // Opera 12\n background-image: linear-gradient(to bottom, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n background-repeat: repeat-x;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\",argb(@start-color),argb(@end-color))); // IE9 and down\n }\n\n .directional(@start-color: #555; @end-color: #333; @deg: 45deg) {\n background-repeat: repeat-x;\n background-image: -webkit-linear-gradient(@deg, @start-color, @end-color); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(@deg, @start-color, @end-color); // Opera 12\n background-image: linear-gradient(@deg, @start-color, @end-color); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n }\n .horizontal-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n background-image: -webkit-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);\n background-image: -o-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);\n background-image: linear-gradient(to right, @start-color, @mid-color @color-stop, @end-color);\n background-repeat: no-repeat;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n }\n .vertical-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n background-image: -webkit-linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-image: -o-linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-image: linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-repeat: no-repeat;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n }\n .radial(@inner-color: #555; @outer-color: #333) {\n background-image: -webkit-radial-gradient(circle, @inner-color, @outer-color);\n background-image: radial-gradient(circle, @inner-color, @outer-color);\n background-repeat: no-repeat;\n }\n .striped(@color: rgba(255,255,255,.15); @angle: 45deg) {\n background-image: -webkit-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n background-image: linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n }\n}\n","// Reset filters for IE\n//\n// When you need to remove a gradient background, do not forget to use this to reset\n// the IE filter for IE9 and below.\n\n.reset-filter() {\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(enabled = false)\"));\n}\n"]}
--------------------------------------------------------------------------------
/static/bs/fonts/glyphicons-halflings-regular.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yance-dev/mydjango/2f841d2b82f9d002a8175dbbe7d963d479b4346a/static/bs/fonts/glyphicons-halflings-regular.eot
--------------------------------------------------------------------------------
/static/bs/fonts/glyphicons-halflings-regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yance-dev/mydjango/2f841d2b82f9d002a8175dbbe7d963d479b4346a/static/bs/fonts/glyphicons-halflings-regular.ttf
--------------------------------------------------------------------------------
/static/bs/fonts/glyphicons-halflings-regular.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yance-dev/mydjango/2f841d2b82f9d002a8175dbbe7d963d479b4346a/static/bs/fonts/glyphicons-halflings-regular.woff
--------------------------------------------------------------------------------
/static/bs/fonts/glyphicons-halflings-regular.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yance-dev/mydjango/2f841d2b82f9d002a8175dbbe7d963d479b4346a/static/bs/fonts/glyphicons-halflings-regular.woff2
--------------------------------------------------------------------------------
/static/bs/js/npm.js:
--------------------------------------------------------------------------------
1 | // This file is autogenerated via the `commonjs` Grunt task. You can require() this file in a CommonJS environment.
2 | require('../../js/transition.js')
3 | require('../../js/alert.js')
4 | require('../../js/button.js')
5 | require('../../js/carousel.js')
6 | require('../../js/collapse.js')
7 | require('../../js/dropdown.js')
8 | require('../../js/modal.js')
9 | require('../../js/tooltip.js')
10 | require('../../js/popover.js')
11 | require('../../js/scrollspy.js')
12 | require('../../js/tab.js')
13 | require('../../js/affix.js')
--------------------------------------------------------------------------------
/static/js/app01.js:
--------------------------------------------------------------------------------
1 | $(function () {
2 | $('.nav li').click(function () {
3 | this.addClass("active").siblings().removeClass("active")
4 | })
5 | })
--------------------------------------------------------------------------------
/templates/add_book.html:
--------------------------------------------------------------------------------
1 | {% extends 'base.html' %}
2 |
3 | {% block content %}
4 |
51 | {% endblock %}
--------------------------------------------------------------------------------
/templates/base.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Title
6 |
7 |
47 |
48 |
49 |
50 |
51 |
52 |
56 | {% block content %}{% endblock %}
57 |
58 |
59 |
60 |
61 |
--------------------------------------------------------------------------------
/templates/book_detail.html:
--------------------------------------------------------------------------------
1 | {% extends 'base.html' %}
2 | {% block content %}
3 |
8 |
9 |
10 |
11 |
12 |
添加书籍
13 |
14 |
15 |
16 | 书籍名称 |
17 | 价格 |
18 | 出版日期 |
19 | 出版社 |
20 | 作者 |
21 | 删除操作 |
22 | 编辑操作 |
23 |
24 |
25 |
26 |
27 | {% for my_book in book_list %}
28 |
29 | {{ my_book.title }} |
30 | {{ my_book.price }} |
31 | {{ my_book.pub_date|date:'Y-m-d' }} |
32 | {{my_book.publish.name }} |
33 |
34 | {% for aut in my_book.authors.all %}
35 | {% if forloop.last %}
36 | {{ aut.name }}
37 | {% else %}
38 | {{ aut.name }},
39 | {% endif %}
40 | {% endfor %}
41 | |
42 | 删除 |
43 | 编辑 |
44 |
45 |
46 | {% endfor %}
47 |
48 |
49 |
50 |
51 |
返回
52 |
53 |
54 |
55 |
56 | {% endblock %}
--------------------------------------------------------------------------------
/templates/books.html:
--------------------------------------------------------------------------------
1 | {% extends 'base.html' %}
2 | {% block content %}
3 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 | 书籍名称 |
16 | 价格 |
17 | 出版日期 |
18 | 出版社 |
19 | 作者 |
20 | 删除操作 |
21 | 编辑操作 |
22 |
23 |
24 |
25 |
26 | {% for my_book in book_list %}
27 |
28 | {{ my_book.title }} |
29 | {{ my_book.price }} |
30 | {{ my_book.pub_date|date:'Y-m-d' }} |
31 |
32 | {{ my_book.publish.name }}
33 | |
34 |
35 | {% for aut in my_book.authors.all %}
36 |
37 | {% if forloop.last %}
38 |
39 | {{ aut.name }}
40 | {% else %}
41 | {{ aut.name }},
42 |
43 | {% endif %}
44 | {% endfor %}
45 | |
46 | 删除 |
47 | 编辑 |
48 |
49 |
50 | {% endfor %}
51 |
52 |
53 |
54 |
55 |
添加书籍
56 |
57 |
58 |
59 |
60 |
61 |
62 | {% endblock %}
--------------------------------------------------------------------------------
/templates/modbook.html:
--------------------------------------------------------------------------------
1 | {% extends 'base.html' %}
2 |
3 | {% block content %}
4 |
73 | {% endblock %}
--------------------------------------------------------------------------------