├── myproject ├── __init__.py ├── core │ ├── __init__.py │ ├── tests │ │ ├── __init__.py │ │ ├── test_home.py │ │ ├── test_list_person.py │ │ ├── test_list_product.py │ │ ├── test_forms.py │ │ ├── test_views_product.py │ │ ├── test_views_person.py │ │ └── test_models.py │ ├── static │ │ ├── img │ │ │ ├── icon-no.gif │ │ │ └── icon-yes.gif │ │ ├── font-awesome-4.2.0 │ │ │ ├── fonts │ │ │ │ ├── FontAwesome.otf │ │ │ │ ├── fontawesome-webfont.eot │ │ │ │ ├── fontawesome-webfont.ttf │ │ │ │ └── fontawesome-webfont.woff │ │ │ ├── less │ │ │ │ ├── fixed-width.less │ │ │ │ ├── bordered-pulled.less │ │ │ │ ├── larger.less │ │ │ │ ├── list.less │ │ │ │ ├── core.less │ │ │ │ ├── font-awesome.less │ │ │ │ ├── stacked.less │ │ │ │ ├── spinning.less │ │ │ │ ├── rotated-flipped.less │ │ │ │ ├── path.less │ │ │ │ ├── mixins.less │ │ │ │ └── variables.less │ │ │ └── scss │ │ │ │ ├── _fixed-width.scss │ │ │ │ ├── _bordered-pulled.scss │ │ │ │ ├── _larger.scss │ │ │ │ ├── _core.scss │ │ │ │ ├── _list.scss │ │ │ │ ├── font-awesome.scss │ │ │ │ ├── _stacked.scss │ │ │ │ ├── _spinning.scss │ │ │ │ ├── _path.scss │ │ │ │ ├── _rotated-flipped.scss │ │ │ │ ├── _mixins.scss │ │ │ │ └── _variables.scss │ │ └── css │ │ │ ├── signin.css │ │ │ └── bootstrap-social.css │ ├── templates │ │ ├── base.html │ │ ├── core │ │ │ ├── person │ │ │ │ ├── phone_create_form.html │ │ │ │ ├── address_create_form.html │ │ │ │ ├── person_create_form.html │ │ │ │ ├── occupation_create_form.html │ │ │ │ ├── occupation_list.html │ │ │ │ ├── person_detail.html │ │ │ │ └── person_list.html │ │ │ └── product │ │ │ │ ├── brand_create_form.html │ │ │ │ ├── product_create_form.html │ │ │ │ ├── category_create_form.html │ │ │ │ ├── brand_list.html │ │ │ │ ├── category_list.html │ │ │ │ ├── product_detail.html │ │ │ │ └── product_list.html │ │ ├── index.html │ │ ├── about.html │ │ ├── base_create_form.html │ │ ├── download.html │ │ ├── pagination.html │ │ ├── contact.html │ │ ├── base_initial.html │ │ ├── limbo │ │ │ └── image_list.html │ │ └── menu.html │ ├── forms.py │ ├── applib │ │ └── lists.py │ ├── admin.py │ ├── models.py │ └── views.py ├── fixtures │ ├── fixtures │ │ ├── marcas.csv │ │ ├── categorias.csv │ │ ├── produtos1.csv │ │ ├── profissoes.csv │ │ ├── produtos_.csv │ │ └── pessoas_.csv │ ├── gen_phones_csv.py │ ├── limbo │ │ ├── gen_fixed_json.py │ │ └── gen_random_json.py │ ├── Makefile │ ├── gen_products_csv.py │ ├── gen_address_csv.py │ ├── gen_persons_csv.py │ ├── gen_random_values.py │ └── csv2json.py ├── wsgi.py ├── urls.py ├── templates_admin │ └── admin │ │ └── login.html └── settings.py ├── modelagem ├── mer.jpg ├── mer.pdf ├── core.png ├── tabelas.jpg ├── tabelas.pdf ├── tables.jpg ├── tables.pdf ├── tikz-er2.sty ├── Makefile ├── mer.tex ├── tables.tex ├── tabelas.tex └── README.md ├── screenshot ├── home.png ├── menu.png ├── contato.png ├── login.png ├── pessoas.png ├── sobre.png ├── download.png ├── produtos.png ├── formulario.png └── README.md ├── requirements.txt ├── manage.py ├── mommy_make.py ├── Makefile ├── .gitignore ├── README.md ├── LICENSE └── .django_commands /myproject/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /myproject/core/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /myproject/core/tests/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /modelagem/mer.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rg3915/django-example/master/modelagem/mer.jpg -------------------------------------------------------------------------------- /modelagem/mer.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rg3915/django-example/master/modelagem/mer.pdf -------------------------------------------------------------------------------- /modelagem/core.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rg3915/django-example/master/modelagem/core.png -------------------------------------------------------------------------------- /screenshot/home.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rg3915/django-example/master/screenshot/home.png -------------------------------------------------------------------------------- /screenshot/menu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rg3915/django-example/master/screenshot/menu.png -------------------------------------------------------------------------------- /modelagem/tabelas.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rg3915/django-example/master/modelagem/tabelas.jpg -------------------------------------------------------------------------------- /modelagem/tabelas.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rg3915/django-example/master/modelagem/tabelas.pdf -------------------------------------------------------------------------------- /modelagem/tables.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rg3915/django-example/master/modelagem/tables.jpg -------------------------------------------------------------------------------- /modelagem/tables.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rg3915/django-example/master/modelagem/tables.pdf -------------------------------------------------------------------------------- /modelagem/tikz-er2.sty: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rg3915/django-example/master/modelagem/tikz-er2.sty -------------------------------------------------------------------------------- /screenshot/contato.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rg3915/django-example/master/screenshot/contato.png -------------------------------------------------------------------------------- /screenshot/login.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rg3915/django-example/master/screenshot/login.png -------------------------------------------------------------------------------- /screenshot/pessoas.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rg3915/django-example/master/screenshot/pessoas.png -------------------------------------------------------------------------------- /screenshot/sobre.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rg3915/django-example/master/screenshot/sobre.png -------------------------------------------------------------------------------- /screenshot/download.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rg3915/django-example/master/screenshot/download.png -------------------------------------------------------------------------------- /screenshot/produtos.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rg3915/django-example/master/screenshot/produtos.png -------------------------------------------------------------------------------- /screenshot/formulario.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rg3915/django-example/master/screenshot/formulario.png -------------------------------------------------------------------------------- /myproject/core/static/img/icon-no.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rg3915/django-example/master/myproject/core/static/img/icon-no.gif -------------------------------------------------------------------------------- /myproject/core/static/img/icon-yes.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rg3915/django-example/master/myproject/core/static/img/icon-yes.gif -------------------------------------------------------------------------------- /myproject/core/templates/base.html: -------------------------------------------------------------------------------- 1 | {% extends "base_initial.html" %} 2 | 3 | {% block menu %} 4 | {% include "menu.html" %} 5 | {% endblock menu %} -------------------------------------------------------------------------------- /myproject/core/static/font-awesome-4.2.0/fonts/FontAwesome.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rg3915/django-example/master/myproject/core/static/font-awesome-4.2.0/fonts/FontAwesome.otf -------------------------------------------------------------------------------- /myproject/core/templates/core/person/phone_create_form.html: -------------------------------------------------------------------------------- 1 | {% extends "base_create_form.html" %} 2 | 3 | {% block title %} 4 | Phone Form 5 | {% endblock title %} -------------------------------------------------------------------------------- /myproject/core/templates/core/product/brand_create_form.html: -------------------------------------------------------------------------------- 1 | {% extends "base_create_form.html" %} 2 | 3 | {% block title %} 4 | Brand Form 5 | {% endblock title %} -------------------------------------------------------------------------------- /myproject/core/templates/core/person/address_create_form.html: -------------------------------------------------------------------------------- 1 | {% extends "base_create_form.html" %} 2 | 3 | {% block title %} 4 | Address Form 5 | {% endblock title %} -------------------------------------------------------------------------------- /myproject/core/templates/core/person/person_create_form.html: -------------------------------------------------------------------------------- 1 | {% extends "base_create_form.html" %} 2 | 3 | {% block title %} 4 | Person Form 5 | {% endblock title %} -------------------------------------------------------------------------------- /myproject/core/templates/core/product/product_create_form.html: -------------------------------------------------------------------------------- 1 | {% extends "base_create_form.html" %} 2 | 3 | {% block title %} 4 | Product Form 5 | {% endblock title %} -------------------------------------------------------------------------------- /myproject/core/templates/core/person/occupation_create_form.html: -------------------------------------------------------------------------------- 1 | {% extends "base_create_form.html" %} 2 | 3 | {% block title %} 4 | Occupation Form 5 | {% endblock title %} -------------------------------------------------------------------------------- /myproject/core/templates/core/product/category_create_form.html: -------------------------------------------------------------------------------- 1 | {% extends "base_create_form.html" %} 2 | 3 | {% block title %} 4 | Category Form 5 | {% endblock title %} -------------------------------------------------------------------------------- /myproject/core/static/font-awesome-4.2.0/fonts/fontawesome-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rg3915/django-example/master/myproject/core/static/font-awesome-4.2.0/fonts/fontawesome-webfont.eot -------------------------------------------------------------------------------- /myproject/core/static/font-awesome-4.2.0/fonts/fontawesome-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rg3915/django-example/master/myproject/core/static/font-awesome-4.2.0/fonts/fontawesome-webfont.ttf -------------------------------------------------------------------------------- /myproject/core/static/font-awesome-4.2.0/fonts/fontawesome-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rg3915/django-example/master/myproject/core/static/font-awesome-4.2.0/fonts/fontawesome-webfont.woff -------------------------------------------------------------------------------- /myproject/core/static/font-awesome-4.2.0/less/fixed-width.less: -------------------------------------------------------------------------------- 1 | // Fixed Width Icons 2 | // ------------------------- 3 | .@{fa-css-prefix}-fw { 4 | width: (18em / 14); 5 | text-align: center; 6 | } 7 | -------------------------------------------------------------------------------- /myproject/core/static/font-awesome-4.2.0/scss/_fixed-width.scss: -------------------------------------------------------------------------------- 1 | // Fixed Width Icons 2 | // ------------------------- 3 | .#{$fa-css-prefix}-fw { 4 | width: (18em / 14); 5 | text-align: center; 6 | } 7 | -------------------------------------------------------------------------------- /screenshot/README.md: -------------------------------------------------------------------------------- 1 | Screenshot 2 | ========== 3 | 4 | Veja como ficou a tela de login personalizada... 5 | 6 | ![login](login.png) 7 | 8 | e a lista de produtos 9 | 10 | ![produtos](produtos.png) 11 | 12 | Veja que tem mais imagens. -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | Django==1.7.2 2 | Unipath==1.0 3 | argparse==1.2.1 4 | dj-database-url==0.3.0 5 | django-bootstrap3==5.0.3 6 | django-extensions==1.4.9 7 | model-mommy==1.2.3 8 | names==0.3.0 9 | pytz==2014.10 10 | rstr==2.1.3 11 | simplejson==3.6.5 12 | six==1.9.0 13 | -------------------------------------------------------------------------------- /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", "myproject.settings") 7 | 8 | from django.core.management import execute_from_command_line 9 | 10 | execute_from_command_line(sys.argv) 11 | -------------------------------------------------------------------------------- /myproject/core/templates/index.html: -------------------------------------------------------------------------------- 1 | {% extends "base.html" %} 2 | 3 | {% block content %} 4 |
5 |

Bem vindo ao site!

6 |

Este site é um exemplo de como fazer uma aplicação no Django.

7 |
8 | {% endblock content %} -------------------------------------------------------------------------------- /myproject/fixtures/fixtures/marcas.csv: -------------------------------------------------------------------------------- 1 | id,brand 2 | 1,ambrella 3 | 2,biork 4 | 3,free 5 | 4,friday 6 | 5,guin 7 | 6,kelon 8 | 7,king 9 | 8,light 10 | 9,mass 11 | 10,osfree 12 | 11,palore 13 | 12,queen 14 | 13,sagukan 15 | 14,saku 16 | 15,syki 17 | 16,tektan 18 | 17,tutu 19 | 18,valory 20 | 19,xenon 21 | 20,yant -------------------------------------------------------------------------------- /modelagem/Makefile: -------------------------------------------------------------------------------- 1 | mer: 2 | latexmk -pdf mer.tex 3 | latexmk -c 4 | convert -density 300 mer.pdf mer.jpg 5 | 6 | tabelas: 7 | latexmk -pdf tabelas.tex 8 | latexmk -c 9 | convert -density 300 tabelas.pdf tabelas.jpg 10 | 11 | tables: 12 | latexmk -pdf tables.tex 13 | latexmk -c 14 | convert -density 300 tables.pdf tables.jpg 15 | -------------------------------------------------------------------------------- /myproject/core/templates/about.html: -------------------------------------------------------------------------------- 1 | {% extends 'base.html' %} 2 | 3 | {% block content %} 4 | 5 |
6 |

Este site é um exemplo de como fazer uma aplicação no Django.

7 | 8 |

Obs: Todos os nomes e valores são fictícios. Qualquer semelhança é mera coincidência.

9 |
10 | {% endblock %} -------------------------------------------------------------------------------- /myproject/fixtures/fixtures/categorias.csv: -------------------------------------------------------------------------------- 1 | id,category 2 | 1,alimento 3 | 2,audio 4 | 3,bebida 5 | 4,bomboniere 6 | 5,cama mesa banho 7 | 6,carnes 8 | 7,cds 9 | 8,congelados 10 | 9,elétrica 11 | 10,eletrodomésticos 12 | 11,eletroeletrônicos 13 | 12,escultura 14 | 13,ferramentas 15 | 14,fotos 16 | 15,frios 17 | 16,games 18 | 17,hidráulica 19 | 18,higiene 20 | 19,limpeza 21 | 20,mercearia 22 | 21,papelaria 23 | 22,tv 24 | 23,video 25 | -------------------------------------------------------------------------------- /myproject/core/static/font-awesome-4.2.0/less/bordered-pulled.less: -------------------------------------------------------------------------------- 1 | // Bordered & Pulled 2 | // ------------------------- 3 | 4 | .@{fa-css-prefix}-border { 5 | padding: .2em .25em .15em; 6 | border: solid .08em @fa-border-color; 7 | border-radius: .1em; 8 | } 9 | 10 | .pull-right { float: right; } 11 | .pull-left { float: left; } 12 | 13 | .@{fa-css-prefix} { 14 | &.pull-left { margin-right: .3em; } 15 | &.pull-right { margin-left: .3em; } 16 | } 17 | -------------------------------------------------------------------------------- /myproject/core/static/font-awesome-4.2.0/scss/_bordered-pulled.scss: -------------------------------------------------------------------------------- 1 | // Bordered & Pulled 2 | // ------------------------- 3 | 4 | .#{$fa-css-prefix}-border { 5 | padding: .2em .25em .15em; 6 | border: solid .08em $fa-border-color; 7 | border-radius: .1em; 8 | } 9 | 10 | .pull-right { float: right; } 11 | .pull-left { float: left; } 12 | 13 | .#{$fa-css-prefix} { 14 | &.pull-left { margin-right: .3em; } 15 | &.pull-right { margin-left: .3em; } 16 | } 17 | -------------------------------------------------------------------------------- /myproject/wsgi.py: -------------------------------------------------------------------------------- 1 | """ 2 | WSGI config for myproject 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/1.7/howto/deployment/wsgi/ 8 | """ 9 | 10 | import os 11 | os.environ.setdefault("DJANGO_SETTINGS_MODULE", "myproject.settings") 12 | 13 | from django.core.wsgi import get_wsgi_application 14 | application = get_wsgi_application() 15 | -------------------------------------------------------------------------------- /myproject/core/static/font-awesome-4.2.0/less/larger.less: -------------------------------------------------------------------------------- 1 | // Icon Sizes 2 | // ------------------------- 3 | 4 | /* makes the font 33% larger relative to the icon container */ 5 | .@{fa-css-prefix}-lg { 6 | font-size: (4em / 3); 7 | line-height: (3em / 4); 8 | vertical-align: -15%; 9 | } 10 | .@{fa-css-prefix}-2x { font-size: 2em; } 11 | .@{fa-css-prefix}-3x { font-size: 3em; } 12 | .@{fa-css-prefix}-4x { font-size: 4em; } 13 | .@{fa-css-prefix}-5x { font-size: 5em; } 14 | -------------------------------------------------------------------------------- /myproject/core/static/font-awesome-4.2.0/scss/_larger.scss: -------------------------------------------------------------------------------- 1 | // Icon Sizes 2 | // ------------------------- 3 | 4 | /* makes the font 33% larger relative to the icon container */ 5 | .#{$fa-css-prefix}-lg { 6 | font-size: (4em / 3); 7 | line-height: (3em / 4); 8 | vertical-align: -15%; 9 | } 10 | .#{$fa-css-prefix}-2x { font-size: 2em; } 11 | .#{$fa-css-prefix}-3x { font-size: 3em; } 12 | .#{$fa-css-prefix}-4x { font-size: 4em; } 13 | .#{$fa-css-prefix}-5x { font-size: 5em; } 14 | -------------------------------------------------------------------------------- /myproject/core/static/font-awesome-4.2.0/less/list.less: -------------------------------------------------------------------------------- 1 | // List Icons 2 | // ------------------------- 3 | 4 | .@{fa-css-prefix}-ul { 5 | padding-left: 0; 6 | margin-left: @fa-li-width; 7 | list-style-type: none; 8 | > li { position: relative; } 9 | } 10 | .@{fa-css-prefix}-li { 11 | position: absolute; 12 | left: -@fa-li-width; 13 | width: @fa-li-width; 14 | top: (2em / 14); 15 | text-align: center; 16 | &.@{fa-css-prefix}-lg { 17 | left: (-@fa-li-width + (4em / 14)); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /myproject/core/static/font-awesome-4.2.0/less/core.less: -------------------------------------------------------------------------------- 1 | // Base Class Definition 2 | // ------------------------- 3 | 4 | .@{fa-css-prefix} { 5 | display: inline-block; 6 | font: normal normal normal 14px/1 FontAwesome; // shortening font declaration 7 | font-size: inherit; // can't have font-size inherit on line above, so need to override 8 | text-rendering: auto; // optimizelegibility throws things off #1094 9 | -webkit-font-smoothing: antialiased; 10 | -moz-osx-font-smoothing: grayscale; 11 | } 12 | -------------------------------------------------------------------------------- /myproject/core/static/font-awesome-4.2.0/scss/_core.scss: -------------------------------------------------------------------------------- 1 | // Base Class Definition 2 | // ------------------------- 3 | 4 | .#{$fa-css-prefix} { 5 | display: inline-block; 6 | font: normal normal normal 14px/1 FontAwesome; // shortening font declaration 7 | font-size: inherit; // can't have font-size inherit on line above, so need to override 8 | text-rendering: auto; // optimizelegibility throws things off #1094 9 | -webkit-font-smoothing: antialiased; 10 | -moz-osx-font-smoothing: grayscale; 11 | } 12 | -------------------------------------------------------------------------------- /myproject/core/static/font-awesome-4.2.0/scss/_list.scss: -------------------------------------------------------------------------------- 1 | // List Icons 2 | // ------------------------- 3 | 4 | .#{$fa-css-prefix}-ul { 5 | padding-left: 0; 6 | margin-left: $fa-li-width; 7 | list-style-type: none; 8 | > li { position: relative; } 9 | } 10 | .#{$fa-css-prefix}-li { 11 | position: absolute; 12 | left: -$fa-li-width; 13 | width: $fa-li-width; 14 | top: (2em / 14); 15 | text-align: center; 16 | &.#{$fa-css-prefix}-lg { 17 | left: -$fa-li-width + (4em / 14); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /myproject/core/static/font-awesome-4.2.0/scss/font-awesome.scss: -------------------------------------------------------------------------------- 1 | /*! 2 | * Font Awesome 4.2.0 by @davegandy - http://fontawesome.io - @fontawesome 3 | * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) 4 | */ 5 | 6 | @import "variables"; 7 | @import "mixins"; 8 | @import "path"; 9 | @import "core"; 10 | @import "larger"; 11 | @import "fixed-width"; 12 | @import "list"; 13 | @import "bordered-pulled"; 14 | @import "spinning"; 15 | @import "rotated-flipped"; 16 | @import "stacked"; 17 | @import "icons"; 18 | -------------------------------------------------------------------------------- /myproject/core/templates/base_create_form.html: -------------------------------------------------------------------------------- 1 | {% extends "base.html" %} 2 | 3 | {% load bootstrap3 %} 4 | 5 | {% block title %} 6 | 7 | {% endblock title %} 8 | 9 | {% block content %} 10 | 11 |

Cadastrar {{ name.capitalize }}

12 |
13 | {% csrf_token %} 14 | {% bootstrap_form form %} 15 | {% buttons %} 16 | 17 | {% endbuttons %} 18 |
19 | 20 | {% endblock content %} 21 | 22 | -------------------------------------------------------------------------------- /myproject/core/tests/test_home.py: -------------------------------------------------------------------------------- 1 | from django.test import TestCase 2 | from django.core.urlresolvers import reverse as r 3 | 4 | 5 | class HomeTest(TestCase): 6 | 7 | def setUp(self): 8 | self.resp = self.client.get(r('home')) 9 | 10 | def test_get(self): 11 | """ 12 | GET / must return status code 200. 13 | """ 14 | self.assertEqual(200, self.resp.status_code) 15 | 16 | def test_template(self): 17 | """ 18 | Home must use template index.html 19 | """ 20 | self.assertTemplateUsed(self.resp, 'index.html') 21 | -------------------------------------------------------------------------------- /myproject/core/static/font-awesome-4.2.0/less/font-awesome.less: -------------------------------------------------------------------------------- 1 | /*! 2 | * Font Awesome 4.2.0 by @davegandy - http://fontawesome.io - @fontawesome 3 | * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) 4 | */ 5 | 6 | @import "variables.less"; 7 | @import "mixins.less"; 8 | @import "path.less"; 9 | @import "core.less"; 10 | @import "larger.less"; 11 | @import "fixed-width.less"; 12 | @import "list.less"; 13 | @import "bordered-pulled.less"; 14 | @import "spinning.less"; 15 | @import "rotated-flipped.less"; 16 | @import "stacked.less"; 17 | @import "icons.less"; 18 | -------------------------------------------------------------------------------- /mommy_make.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | from model_mommy import mommy 3 | from myproject.core.models import Person, Occupation, Address, Phone, Product, Brand, Category 4 | import names 5 | 6 | customers = mommy.make( 7 | Person, first_name=names.get_first_name, last_name=names.get_last_name, _quantity=20) 8 | occupation = mommy.make(Occupation, _quantity=10) 9 | address = mommy.make(Address, _quantity=10) 10 | phone = mommy.make(Phone, _quantity=10) 11 | product = mommy.make(Product, _quantity=10) 12 | brand = mommy.make(Brand, _quantity=10) 13 | category = mommy.make(Category, _quantity=10) 14 | -------------------------------------------------------------------------------- /myproject/core/templates/download.html: -------------------------------------------------------------------------------- 1 | {% extends "base.html" %} 2 | 3 | {% block title %} 4 | Download 5 | {% endblock title %} 6 | 7 | {% block content %} 8 | 9 |
10 |
11 |

Download do projeto

12 |

Você pode baixar o projeto no GitHub.

13 | Download GitHub 14 |
15 |
16 | 17 | {% endblock content %} 18 | 19 | 20 | 21 | 22 | https://github.com/rg3915/django-example -------------------------------------------------------------------------------- /myproject/core/static/font-awesome-4.2.0/less/stacked.less: -------------------------------------------------------------------------------- 1 | // Stacked Icons 2 | // ------------------------- 3 | 4 | .@{fa-css-prefix}-stack { 5 | position: relative; 6 | display: inline-block; 7 | width: 2em; 8 | height: 2em; 9 | line-height: 2em; 10 | vertical-align: middle; 11 | } 12 | .@{fa-css-prefix}-stack-1x, .@{fa-css-prefix}-stack-2x { 13 | position: absolute; 14 | left: 0; 15 | width: 100%; 16 | text-align: center; 17 | } 18 | .@{fa-css-prefix}-stack-1x { line-height: inherit; } 19 | .@{fa-css-prefix}-stack-2x { font-size: 2em; } 20 | .@{fa-css-prefix}-inverse { color: @fa-inverse; } 21 | -------------------------------------------------------------------------------- /myproject/core/static/font-awesome-4.2.0/scss/_stacked.scss: -------------------------------------------------------------------------------- 1 | // Stacked Icons 2 | // ------------------------- 3 | 4 | .#{$fa-css-prefix}-stack { 5 | position: relative; 6 | display: inline-block; 7 | width: 2em; 8 | height: 2em; 9 | line-height: 2em; 10 | vertical-align: middle; 11 | } 12 | .#{$fa-css-prefix}-stack-1x, .#{$fa-css-prefix}-stack-2x { 13 | position: absolute; 14 | left: 0; 15 | width: 100%; 16 | text-align: center; 17 | } 18 | .#{$fa-css-prefix}-stack-1x { line-height: inherit; } 19 | .#{$fa-css-prefix}-stack-2x { font-size: 2em; } 20 | .#{$fa-css-prefix}-inverse { color: $fa-inverse; } 21 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | install: 2 | pip install -r requirements.txt 3 | # pip install -Iv https://pypi.python.org/packages/source/p/pyparsing/pyparsing-2.0.3.tar.gz#md5=0fe479be09fc2cf005f753d3acc35939 4 | # pip install -Iv https://pypi.python.org/packages/source/p/pygraphviz/pygraphviz-1.3rc2.tar.gz#md5=061ff5c4b8ea4b7cd05be0588172ef07 5 | # pip install -Iv http://code.google.com/p/pydot/downloads/detail?name=pydot-1.0.25.tar.gz&can=2&q= 6 | # pip install pydot 7 | # pip freeze > requirements.txt 8 | 9 | create: 10 | python manage.py makemigrations core 11 | python manage.py migrate 12 | python manage.py createsuperuser 13 | 14 | mer: 15 | python manage.py graph_models -e -g -l dot -o modelagem/core.png core 16 | 17 | setup: install create 18 | -------------------------------------------------------------------------------- /myproject/core/static/font-awesome-4.2.0/less/spinning.less: -------------------------------------------------------------------------------- 1 | // Spinning Icons 2 | // -------------------------- 3 | 4 | .@{fa-css-prefix}-spin { 5 | -webkit-animation: fa-spin 2s infinite linear; 6 | animation: fa-spin 2s infinite linear; 7 | } 8 | 9 | @-webkit-keyframes fa-spin { 10 | 0% { 11 | -webkit-transform: rotate(0deg); 12 | transform: rotate(0deg); 13 | } 14 | 100% { 15 | -webkit-transform: rotate(359deg); 16 | transform: rotate(359deg); 17 | } 18 | } 19 | 20 | @keyframes fa-spin { 21 | 0% { 22 | -webkit-transform: rotate(0deg); 23 | transform: rotate(0deg); 24 | } 25 | 100% { 26 | -webkit-transform: rotate(359deg); 27 | transform: rotate(359deg); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /myproject/core/static/font-awesome-4.2.0/less/rotated-flipped.less: -------------------------------------------------------------------------------- 1 | // Rotated & Flipped Icons 2 | // ------------------------- 3 | 4 | .@{fa-css-prefix}-rotate-90 { .fa-icon-rotate(90deg, 1); } 5 | .@{fa-css-prefix}-rotate-180 { .fa-icon-rotate(180deg, 2); } 6 | .@{fa-css-prefix}-rotate-270 { .fa-icon-rotate(270deg, 3); } 7 | 8 | .@{fa-css-prefix}-flip-horizontal { .fa-icon-flip(-1, 1, 0); } 9 | .@{fa-css-prefix}-flip-vertical { .fa-icon-flip(1, -1, 2); } 10 | 11 | // Hook for IE8-9 12 | // ------------------------- 13 | 14 | :root .@{fa-css-prefix}-rotate-90, 15 | :root .@{fa-css-prefix}-rotate-180, 16 | :root .@{fa-css-prefix}-rotate-270, 17 | :root .@{fa-css-prefix}-flip-horizontal, 18 | :root .@{fa-css-prefix}-flip-vertical { 19 | filter: none; 20 | } 21 | -------------------------------------------------------------------------------- /myproject/core/static/font-awesome-4.2.0/scss/_spinning.scss: -------------------------------------------------------------------------------- 1 | // Spinning Icons 2 | // -------------------------- 3 | 4 | .#{$fa-css-prefix}-spin { 5 | -webkit-animation: fa-spin 2s infinite linear; 6 | animation: fa-spin 2s infinite linear; 7 | } 8 | 9 | @-webkit-keyframes fa-spin { 10 | 0% { 11 | -webkit-transform: rotate(0deg); 12 | transform: rotate(0deg); 13 | } 14 | 100% { 15 | -webkit-transform: rotate(359deg); 16 | transform: rotate(359deg); 17 | } 18 | } 19 | 20 | @keyframes fa-spin { 21 | 0% { 22 | -webkit-transform: rotate(0deg); 23 | transform: rotate(0deg); 24 | } 25 | 100% { 26 | -webkit-transform: rotate(359deg); 27 | transform: rotate(359deg); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /myproject/core/static/font-awesome-4.2.0/less/path.less: -------------------------------------------------------------------------------- 1 | /* FONT PATH 2 | * -------------------------- */ 3 | 4 | @font-face { 5 | font-family: 'FontAwesome'; 6 | src: url('@{fa-font-path}/fontawesome-webfont.eot?v=@{fa-version}'); 7 | src: url('@{fa-font-path}/fontawesome-webfont.eot?#iefix&v=@{fa-version}') format('embedded-opentype'), 8 | url('@{fa-font-path}/fontawesome-webfont.woff?v=@{fa-version}') format('woff'), 9 | url('@{fa-font-path}/fontawesome-webfont.ttf?v=@{fa-version}') format('truetype'), 10 | url('@{fa-font-path}/fontawesome-webfont.svg?v=@{fa-version}#fontawesomeregular') format('svg'); 11 | // src: url('@{fa-font-path}/FontAwesome.otf') format('opentype'); // used when developing fonts 12 | font-weight: normal; 13 | font-style: normal; 14 | } 15 | -------------------------------------------------------------------------------- /myproject/core/static/font-awesome-4.2.0/scss/_path.scss: -------------------------------------------------------------------------------- 1 | /* FONT PATH 2 | * -------------------------- */ 3 | 4 | @font-face { 5 | font-family: 'FontAwesome'; 6 | src: url('#{$fa-font-path}/fontawesome-webfont.eot?v=#{$fa-version}'); 7 | src: url('#{$fa-font-path}/fontawesome-webfont.eot?#iefix&v=#{$fa-version}') format('embedded-opentype'), 8 | url('#{$fa-font-path}/fontawesome-webfont.woff?v=#{$fa-version}') format('woff'), 9 | url('#{$fa-font-path}/fontawesome-webfont.ttf?v=#{$fa-version}') format('truetype'), 10 | url('#{$fa-font-path}/fontawesome-webfont.svg?v=#{$fa-version}#fontawesomeregular') format('svg'); 11 | //src: url('#{$fa-font-path}/FontAwesome.otf') format('opentype'); // used when developing fonts 12 | font-weight: normal; 13 | font-style: normal; 14 | } 15 | -------------------------------------------------------------------------------- /myproject/core/templates/pagination.html: -------------------------------------------------------------------------------- 1 | 2 |
3 |
4 | 19 |
20 |
21 | -------------------------------------------------------------------------------- /myproject/core/static/font-awesome-4.2.0/scss/_rotated-flipped.scss: -------------------------------------------------------------------------------- 1 | // Rotated & Flipped Icons 2 | // ------------------------- 3 | 4 | .#{$fa-css-prefix}-rotate-90 { @include fa-icon-rotate(90deg, 1); } 5 | .#{$fa-css-prefix}-rotate-180 { @include fa-icon-rotate(180deg, 2); } 6 | .#{$fa-css-prefix}-rotate-270 { @include fa-icon-rotate(270deg, 3); } 7 | 8 | .#{$fa-css-prefix}-flip-horizontal { @include fa-icon-flip(-1, 1, 0); } 9 | .#{$fa-css-prefix}-flip-vertical { @include fa-icon-flip(1, -1, 2); } 10 | 11 | // Hook for IE8-9 12 | // ------------------------- 13 | 14 | :root .#{$fa-css-prefix}-rotate-90, 15 | :root .#{$fa-css-prefix}-rotate-180, 16 | :root .#{$fa-css-prefix}-rotate-270, 17 | :root .#{$fa-css-prefix}-flip-horizontal, 18 | :root .#{$fa-css-prefix}-flip-vertical { 19 | filter: none; 20 | } 21 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Byte-compiled / optimized / DLL files 2 | __pycache__/ 3 | *.py[cod] 4 | 5 | # C extensions 6 | *.so 7 | 8 | # Distribution / packaging 9 | .Python 10 | env/ 11 | bin/ 12 | build/ 13 | develop-eggs/ 14 | dist/ 15 | eggs/ 16 | include/ 17 | lib/ 18 | lib64/ 19 | local/ 20 | parts/ 21 | sdist/ 22 | var/ 23 | *.egg-info/ 24 | .installed.cfg 25 | *.egg 26 | 27 | # Installer logs 28 | pip-log.txt 29 | pip-delete-this-directory.txt 30 | 31 | # Unit test / coverage reports 32 | htmlcov/ 33 | .tox/ 34 | .coverage 35 | .cache 36 | nosetests.xml 37 | coverage.xml 38 | 39 | # Translations 40 | *.mo 41 | 42 | # Mr Developer 43 | .mr.developer.cfg 44 | .project 45 | .pydevproject 46 | 47 | # Rope 48 | .ropeproject 49 | 50 | # Django stuff: 51 | *.log 52 | *.pot 53 | 54 | # Sphinx documentation 55 | docs/_build/ 56 | 57 | *.sqlite3 -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # django-example 2 | 3 | A complete example for modelling in Django 1.7 4 | 5 | ## Baixando e rodando a app 6 | 7 | $ git clone https://github.com/rg3915/django-example.git 8 | $ virtualenv -p /usr/bin/python3 django-example 9 | $ cd django-example 10 | $ source bin/activate 11 | 12 | Para diminuir o caminho do prompt digite (opcional) 13 | 14 | $ PS1="(`basename \"$VIRTUAL_ENV\"`):/\W$ " 15 | 16 | Instalando as dependências e continuando 17 | 18 | $ make setup 19 | $ python manage.py test 20 | $ cd myproject/fixtures 21 | $ make gen_fixtures # gerando fixtures 22 | $ make load_fixtures 23 | $ cd .. 24 | $ cd .. 25 | $ python manage.py runserver 26 | 27 | Veja os [screenshots][0] e a [modelagem][1]. 28 | 29 | [0]: https://github.com/rg3915/django-example/tree/master/screenshot 30 | [1]: https://github.com/rg3915/django-example/tree/master/modelagem -------------------------------------------------------------------------------- /myproject/fixtures/gen_phones_csv.py: -------------------------------------------------------------------------------- 1 | #!python3 2 | import io 3 | import sys 4 | import datetime 5 | import names 6 | from gen_random_values import * 7 | 8 | type_phone_list = ( 9 | ('pri'), 10 | ('com'), 11 | ('res'), 12 | ('cel'), 13 | ('cl'), 14 | ('oi'), 15 | ('t'), 16 | ('v'), 17 | ('n'), 18 | ('fax'), 19 | ('o'), 20 | ) 21 | 22 | phone_list = [] 23 | repeat = 180 24 | with io.open('fixtures/telefones.csv', 'wt') as f: 25 | f.write('id,person,phone,type_phone\n') 26 | for i in range(repeat): 27 | person = random.randint(1, 100) # person registrados 28 | phone = gen_phone() 29 | type_phone = random.choice(type_phone_list) 30 | # id, person, phone, type_phone 31 | phone_list.append((i + 1, person, phone, type_phone)) 32 | for l in phone_list: 33 | s = str(l[0]) + "," + str(l[1]) + "," + \ 34 | str(l[2]) + "," + str(l[3]) + "\n" 35 | f.write(str(s)) 36 | -------------------------------------------------------------------------------- /myproject/core/templates/contact.html: -------------------------------------------------------------------------------- 1 | {% extends 'base.html' %} 2 | 3 | {% block content %} 4 | 5 | 6 |
7 |
8 | 19 |
20 |
21 | 22 | {% endblock %} -------------------------------------------------------------------------------- /myproject/core/static/font-awesome-4.2.0/less/mixins.less: -------------------------------------------------------------------------------- 1 | // Mixins 2 | // -------------------------- 3 | 4 | .fa-icon() { 5 | display: inline-block; 6 | font: normal normal normal 14px/1 FontAwesome; // shortening font declaration 7 | font-size: inherit; // can't have font-size inherit on line above, so need to override 8 | text-rendering: auto; // optimizelegibility throws things off #1094 9 | -webkit-font-smoothing: antialiased; 10 | -moz-osx-font-smoothing: grayscale; 11 | } 12 | 13 | .fa-icon-rotate(@degrees, @rotation) { 14 | filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=@rotation); 15 | -webkit-transform: rotate(@degrees); 16 | -ms-transform: rotate(@degrees); 17 | transform: rotate(@degrees); 18 | } 19 | 20 | .fa-icon-flip(@horiz, @vert, @rotation) { 21 | filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=@rotation, mirror=1); 22 | -webkit-transform: scale(@horiz, @vert); 23 | -ms-transform: scale(@horiz, @vert); 24 | transform: scale(@horiz, @vert); 25 | } 26 | -------------------------------------------------------------------------------- /myproject/core/forms.py: -------------------------------------------------------------------------------- 1 | from django.forms import ModelForm 2 | from .models import Person, Occupation, Address, Phone, Product, Brand, Category 3 | 4 | 5 | class PersonForm(ModelForm): 6 | 7 | class Meta: 8 | model = Person 9 | fields = '__all__' 10 | 11 | 12 | class OccupationForm(ModelForm): 13 | 14 | class Meta: 15 | model = Occupation 16 | fields = '__all__' 17 | 18 | 19 | class AddressForm(ModelForm): 20 | 21 | class Meta: 22 | model = Address 23 | fields = '__all__' 24 | 25 | 26 | class PhoneForm(ModelForm): 27 | 28 | class Meta: 29 | model = Phone 30 | fields = '__all__' 31 | 32 | 33 | class ProductForm(ModelForm): 34 | 35 | class Meta: 36 | model = Product 37 | fields = '__all__' 38 | 39 | 40 | class BrandForm(ModelForm): 41 | 42 | class Meta: 43 | model = Brand 44 | fields = '__all__' 45 | 46 | 47 | class CategoryForm(ModelForm): 48 | 49 | class Meta: 50 | model = Category 51 | fields = '__all__' 52 | -------------------------------------------------------------------------------- /myproject/core/static/font-awesome-4.2.0/scss/_mixins.scss: -------------------------------------------------------------------------------- 1 | // Mixins 2 | // -------------------------- 3 | 4 | @mixin fa-icon() { 5 | display: inline-block; 6 | font: normal normal normal 14px/1 FontAwesome; // shortening font declaration 7 | font-size: inherit; // can't have font-size inherit on line above, so need to override 8 | text-rendering: auto; // optimizelegibility throws things off #1094 9 | -webkit-font-smoothing: antialiased; 10 | -moz-osx-font-smoothing: grayscale; 11 | } 12 | 13 | @mixin fa-icon-rotate($degrees, $rotation) { 14 | filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation}); 15 | -webkit-transform: rotate($degrees); 16 | -ms-transform: rotate($degrees); 17 | transform: rotate($degrees); 18 | } 19 | 20 | @mixin fa-icon-flip($horiz, $vert, $rotation) { 21 | filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation}); 22 | -webkit-transform: scale($horiz, $vert); 23 | -ms-transform: scale($horiz, $vert); 24 | transform: scale($horiz, $vert); 25 | } 26 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2004 Ero Carrera 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and 4 | associated documentation files (the "Software"), to deal in the Software without restriction, 5 | including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, 6 | and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, 7 | subject to the following conditions: 8 | 9 | The above copyright notice and this permission notice shall be included in all copies or substantial 10 | portions of the Software. 11 | 12 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT 13 | LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 14 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 15 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 16 | WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -------------------------------------------------------------------------------- /myproject/core/static/css/signin.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: url("https://www.djangoproject.com/s/img/desktops/djangodesktop-1024x768.jpg") no-repeat center center fixed; 3 | -webkit-background-size: cover; 4 | -moz-background-size: cover; 5 | -o-background-size: cover; 6 | background-size: cover; 7 | } 8 | 9 | .form-signin { 10 | max-width: 430px; 11 | padding: 15px; 12 | margin: 0 auto; 13 | } 14 | .form-signin .form-signin-heading, 15 | .form-signin .checkbox { 16 | margin-bottom: 10px; 17 | } 18 | .form-signin .checkbox { 19 | font-weight: normal; 20 | } 21 | .form-signin .form-control { 22 | position: relative; 23 | height: auto; 24 | -webkit-box-sizing: border-box; 25 | -moz-box-sizing: border-box; 26 | box-sizing: border-box; 27 | padding: 10px; 28 | font-size: 16px; 29 | } 30 | .form-signin .form-control:focus { 31 | z-index: 2; 32 | } 33 | .form-signin input[type="email"] { 34 | margin-bottom: -1px; 35 | border-bottom-right-radius: 0; 36 | border-bottom-left-radius: 0; 37 | } 38 | .form-signin input[type="password"] { 39 | margin-bottom: 10px; 40 | border-top-left-radius: 0; 41 | border-top-right-radius: 0; 42 | } -------------------------------------------------------------------------------- /myproject/fixtures/limbo/gen_fixed_json.py: -------------------------------------------------------------------------------- 1 | #!python3 2 | import io 3 | import sys 4 | import datetime 5 | import names 6 | from gen_random_values import * 7 | 8 | occupation_list = [] 9 | occupation_repeat = 163 10 | 11 | 12 | def read_occupation(): 13 | with io.open('fixtures/profissoes.json', 'wt') as f: 14 | for i in range(occupation_repeat): 15 | r = io.open('fixtures/profissoes.csv', 'rt', encoding='utf-8') 16 | linelist = r.readlines() 17 | occupation = linelist[i].split('\n')[0].strip("'") 18 | print(occupation) 19 | 20 | # for i in range(occupation_repeat): 21 | occupation_list.append((i + 1, occupation)) 22 | f.write('[\n') 23 | for l in occupation_list: 24 | s = "{\n" + \ 25 | str(' "pk": ') + str(l[0]) + ",\n" + \ 26 | str(' "model": "core.occupation",\n') + \ 27 | str(' "fields": {\n') + \ 28 | str(' "occupation": "') + l[1] + str('"\n') + \ 29 | " }\n" 30 | if l[0] == occupation_repeat: 31 | s = s + "}\n" 32 | else: 33 | s = s + "},\n" 34 | f.write(str(s)) 35 | f.write(']\n') 36 | 37 | if __name__ == '__main__': 38 | read_occupation() 39 | -------------------------------------------------------------------------------- /myproject/core/tests/test_list_person.py: -------------------------------------------------------------------------------- 1 | from django.test import TestCase 2 | from django.core.urlresolvers import reverse as r 3 | 4 | 5 | class PersonListTest(TestCase): 6 | 7 | def setUp(self): 8 | self.resp = self.client.get(r('person_list')) 9 | 10 | def test_get(self): 11 | 'GET /persons/ must return status code 200.' 12 | self.assertEqual(200, self.resp.status_code) 13 | 14 | def test_template(self): 15 | 'Response should be a rendered template.' 16 | self.assertTemplateUsed( 17 | self.resp, 'core/person/person_list.html') 18 | 19 | def test_html(self): 20 | 'Html must contain input controls.' 21 | self.assertContains(self.resp, '', 6) 22 | 23 | 24 | class OccupationListTest(TestCase): 25 | 26 | def setUp(self): 27 | self.resp = self.client.get(r('occupation_list')) 28 | 29 | def test_get(self): 30 | 'GET /occupations/ must return status code 200.' 31 | self.assertEqual(200, self.resp.status_code) 32 | 33 | def test_template(self): 34 | 'Response should be a rendered template.' 35 | self.assertTemplateUsed( 36 | self.resp, 'core/person/occupation_list.html') 37 | 38 | def test_html(self): 39 | 'Html must contain input controls.' 40 | self.assertContains(self.resp, '', 1) 41 | -------------------------------------------------------------------------------- /modelagem/mer.tex: -------------------------------------------------------------------------------- 1 | \documentclass{standalone} 2 | \usepackage{tikz-er2} 3 | %\usetikzlibrary{positioning} 4 | 5 | \begin{document} 6 | 7 | \tikzstyle{every entity} = [fill=blue!20] 8 | \tikzstyle{every relationship} = [fill=red!20] 9 | \begin{tikzpicture}[node distance=4cm] 10 | % pessoa 11 | \node[entity] (pessoa) {Pessoa}; 12 | \node[relationship] (mora) [above left of=pessoa] {mora em} edge node[auto,swap] {1} (pessoa); 13 | \node[relationship] (ocupa) [left of=pessoa] {ocupa um} edge node[auto,swap] {n} (pessoa); 14 | \node[relationship] (possui) [below left of=pessoa] {possui} edge node[auto,swap] {1} (pessoa); 15 | 16 | % Endereço 17 | \node[entity] (Endereço) [left of=mora] {Endere\c {c}o} edge node[auto,swap] {n} (mora); 18 | 19 | % Cargo 20 | \node[entity] (cargo) [left of=ocupa] {Cargo} edge node[auto,swap] {1} (ocupa); 21 | 22 | % Fone 23 | \node[entity] (fone) [left of=possui] {Fone} edge node[auto,swap] {n} (possui); 24 | 25 | % Produto 26 | \node[entity] (produto) at (4,0) {Produto}; 27 | \node[relationship] (da) [below right of=produto] {da} edge node[auto,swap] {n} (produto); 28 | \node[relationship] (de) [above right of=produto] {possui} edge node[auto,swap] {n} (produto); 29 | 30 | % Marca 31 | \node[entity] (marca) [right of=da] {Marca} edge node[auto,swap] {1} (da); 32 | 33 | % Categoria 34 | \node[entity] (categoria) [right of=de] {Categoria} edge node[auto,swap] {1} (de); 35 | 36 | 37 | \end{tikzpicture} 38 | 39 | \end{document} -------------------------------------------------------------------------------- /myproject/fixtures/Makefile: -------------------------------------------------------------------------------- 1 | occupation: 2 | python csv2json.py fixtures/profissoes.csv core.Occupation 3 | 4 | load_occupation: 5 | python ../../manage.py loaddata fixtures/profissoes.csv.json 6 | 7 | brand: 8 | python csv2json.py fixtures/marcas.csv core.Brand 9 | 10 | load_brand: 11 | python ../../manage.py loaddata fixtures/marcas.csv.json 12 | 13 | category: 14 | python csv2json.py fixtures/categorias.csv core.Category 15 | 16 | load_category: 17 | python ../../manage.py loaddata fixtures/categorias.csv.json 18 | 19 | product: 20 | python gen_products_csv.py 21 | python csv2json.py fixtures/produtos.csv core.Product 22 | 23 | load_product: 24 | python ../../manage.py loaddata fixtures/produtos.csv.json 25 | 26 | person: 27 | python gen_persons_csv.py 28 | python csv2json.py fixtures/pessoas.csv core.Person 29 | 30 | load_person: 31 | python ../../manage.py loaddata fixtures/pessoas.csv.json 32 | 33 | address: 34 | python gen_address_csv.py 35 | python csv2json.py fixtures/enderecos.csv core.Address 36 | 37 | load_address: 38 | python ../../manage.py loaddata fixtures/enderecos.csv.json 39 | 40 | phone: 41 | python gen_phones_csv.py 42 | python csv2json.py fixtures/telefones.csv core.Phone 43 | 44 | load_phone: 45 | python ../../manage.py loaddata fixtures/telefones.csv.json 46 | 47 | gen_fixtures: occupation person address phone load_occupation load_person load_address load_phone 48 | 49 | load_fixtures: brand category product load_brand load_category load_product -------------------------------------------------------------------------------- /.django_commands: -------------------------------------------------------------------------------- 1 | # clone 2 | git clone git@github.com:rg3915/django-example.git 3 | 4 | # create virtualenv 5 | virtualenv -p /usr/bin/python3 django-example 6 | cd django-example 7 | source bin/activate 8 | 9 | # short prompt path 10 | PS1="(`basename \"$VIRTUAL_ENV\"`):/\W$ " 11 | 12 | # install programs 13 | pip install django django-bootstrap3 names rstr django-extensions unipath pytz 14 | pip freeze > requirements.txt 15 | 16 | # create project 17 | django-admin.py startproject myproject . 18 | cd myproject 19 | 20 | # create app 21 | manage startapp core 22 | cd .. 23 | manage migrate 24 | 25 | # edit files 26 | myproject/settings.py 27 | myproject/urls.py 28 | myproject/core/views.py 29 | myproject/core/models.py 30 | myproject/core/admin.py 31 | touch myproject/core/forms.py 32 | mkdir myproject/core/tests 33 | touch myproject/core/test_models.py 34 | 35 | # create files (optional) 36 | mkdir -p myproject/core/static/{css,img,js} 37 | mkdir -p myproject/core/templates/core 38 | touch myproject/core/templates/{base.html,index.html,menu.html,pagination.html,about.html} 39 | touch myproject/core/templates/core/{person_list.html,person_detail.html,person_form.html,occupation_list.html,occupation_form.html,address_list.html,address_form.html,phone_list.html,product_list.html,product_detail.html,product_form.html,brand_list.html,brand_form.html,category_list.html,category_form.html} 40 | 41 | python manage.py makemigrations 42 | python manage.py migrate 43 | 44 | python manage.py loaddata fixtures.json 45 | 46 | python manage.py runserver -------------------------------------------------------------------------------- /myproject/core/templates/base_initial.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | {% load bootstrap3 %} 4 | {% bootstrap_css %} 5 | {% bootstrap_javascript %} 6 | 7 | {% block extrastyle %}{% endblock %} 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | {% block title %} 16 | Django Example 17 | {% endblock title %} 18 | 19 | 26 | 27 | 28 | 29 | 30 | 31 | {% block menu %}{% endblock menu %} 32 | 33 |
34 | {% block content %} 35 | 36 | {% endblock content %} 37 |
38 | 39 | {% block javascript %} 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | {% endblock javascript %} 49 | 50 | 51 | 52 | 53 | -------------------------------------------------------------------------------- /myproject/urls.py: -------------------------------------------------------------------------------- 1 | from django.conf.urls import patterns, include, url 2 | from myproject.core.views import * 3 | 4 | from django.contrib import admin 5 | 6 | urlpatterns = patterns( 7 | 'myproject.core.views', 8 | url(r'^$', 'home', name='home'), 9 | url(r'^persons/$', PersonList.as_view(), name='person_list'), 10 | url(r'^occupations/$', OccupationList.as_view(), name='occupation_list'), 11 | url(r'^persons/(?P\d+)/$', 12 | PersonDetail.as_view(), name='person_detail'), 13 | url(r'^products/$', ProductList.as_view(), name='product_list'), 14 | url(r'^products/(?P\d+)/$', 15 | ProductDetail.as_view(), name='product_detail'), 16 | url(r'^brands/$', BrandList.as_view(), name='brand_list'), 17 | url(r'^categorys/$', CategoryList.as_view(), name='category_list'), 18 | 19 | url(r'^person/add/$', PersonCreate.as_view(), name='person_add'), 20 | url(r'^occupation/add/$', OccupationCreate.as_view(), 21 | name='occupation_add'), 22 | url(r'^address/add/$', AddressCreate.as_view(), name='address_add'), 23 | url(r'^phone/add/$', PhoneCreate.as_view(), name='phone_add'), 24 | url(r'^product/add/$', ProductCreate.as_view(), name='product_add'), 25 | url(r'^brand/add/$', BrandCreate.as_view(), name='brand_add'), 26 | url(r'^category/add/$', CategoryCreate.as_view(), name='category_add'), 27 | 28 | url(r'^download/$', 'download', name='download'), 29 | url(r'^about/$', 'about', name='about'), 30 | url(r'^contact/$', 'contact', name='contact'), 31 | url(r'^admin/', include(admin.site.urls), name='admin'), 32 | ) 33 | -------------------------------------------------------------------------------- /myproject/fixtures/limbo/gen_random_json.py: -------------------------------------------------------------------------------- 1 | #!python3 2 | import io 3 | import sys 4 | import datetime 5 | import names 6 | from gen_random_values import * 7 | 8 | lista = [] 9 | repeat = 100 10 | with io.open('fixtures.json', 'wt') as f: 11 | for i in range(repeat): 12 | date = datetime.datetime.now().isoformat(" ") 13 | fname = names.get_first_name() 14 | lname = names.get_last_name() 15 | email = fname[0].lower() + '.' + lname.lower() + '@email.com' 16 | b = random.choice(['true', 'false']) 17 | # pk, first_name, last_name, cpf, birthday, email, phone, blocked, 18 | # created_at, modified_at 19 | lista.append( 20 | (i + 1, fname, lname, gen_cpf(), gen_timestamp(), email, gen_phone(), b, date, date)) 21 | f.write('[\n') 22 | for l in lista: 23 | s = "{\n" + \ 24 | str(' "pk": ') + str(l[0]) + ",\n" + \ 25 | str(' "model": "core.person",\n') + \ 26 | str(' "fields": {\n') + \ 27 | str(' "first_name": "') + l[1] + str('",\n') + \ 28 | str(' "last_name": "') + l[2] + str('",\n') + \ 29 | str(' "cpf": "') + l[3] + str('",\n') + \ 30 | str(' "birthday": "') + l[4] + str('",\n') + \ 31 | str(' "email": "') + l[5] + str('",\n') + \ 32 | str(' "phone": "') + l[6] + str('",\n') + \ 33 | str(' "blocked": ') + l[7] + str(',\n') + \ 34 | str(' "created_at": "') + l[8] + str('",\n') + \ 35 | str(' "modified_at": "') + l[9] + str('"\n') + \ 36 | " }\n" 37 | if l[0] == repeat: 38 | s = s + "}\n" 39 | else: 40 | s = s + "},\n" 41 | f.write(str(s)) 42 | f.write(']\n') 43 | -------------------------------------------------------------------------------- /modelagem/tables.tex: -------------------------------------------------------------------------------- 1 | \documentclass[tikz]{standalone} 2 | \usepackage[utf8]{inputenc} 3 | \usepackage[T1]{fontenc} 4 | \usepackage{tikz-uml} 5 | \usepackage[pdfpagelayout=SinglePage]{hyperref} 6 | 7 | \begin{document} 8 | 9 | \begin{tikzpicture} 10 | \umlclass[x=0,y=0]{Person}{ 11 | - id \\ 12 | - gender \\ 13 | - treatment \\ 14 | - first\_name \\ 15 | - last\_name \\ 16 | - cpf \\ 17 | - birthday \\ 18 | - email \\ 19 | + \color{blue}{occupation\_id} \\ 20 | - blocked \\ 21 | - created\_at \\ 22 | - modified\_at \\ 23 | }{} 24 | \umlclass[x=-5,y=5]{Address}{ 25 | - id \\ 26 | - type\_address \\ 27 | - address \\ 28 | - address\_number \\ 29 | - complement \\ 30 | - district \\ 31 | - city \\ 32 | - uf \\ 33 | - cep \\ 34 | + \color{blue}{person\_id} \\ 35 | }{} 36 | \umlclass[x=-5,y=0]{Occupation}{ 37 | - id \\ 38 | - occupation \\ 39 | }{} 40 | \umlclass[x=-5,y=-5]{Phone}{ 41 | - id \\ 42 | - phone \\ 43 | - type\_phone \\ 44 | + \color{blue}{person\_id} \\ 45 | }{} 46 | \umlclass[x=5,y=0,fill=green!20]{Product}{ 47 | - id \\ 48 | - imported \\ 49 | - outofline \\ 50 | - ncm \\ 51 | + \color{blue}{category\_id} \\ 52 | + \color{blue}{brand\_id} \\ 53 | - product \\ 54 | - cost \\ 55 | - icms \\ 56 | - ipi \\ 57 | - stock \\ 58 | - stock\_min \\ 59 | - created\_at \\ 60 | - modified\_at \\ 61 | }{} 62 | \umlclass[x=10,y=2,fill=green!20]{Category}{ 63 | - id \\ 64 | - category \\ 65 | }{} 66 | \umlclass[x=10,y=-2,fill=green!20]{Brand}{ 67 | - id \\ 68 | - brand \\ 69 | }{} 70 | 71 | \umlassoc{Person}{Address} 72 | \umlassoc{Person}{Occupation} 73 | \umlassoc{Person}{Phone} 74 | \umlassoc{Product}{Category} 75 | \umlassoc{Product}{Brand} 76 | \end{tikzpicture} 77 | 78 | \end{document} -------------------------------------------------------------------------------- /myproject/core/applib/lists.py: -------------------------------------------------------------------------------- 1 | """ List of values for use in choices in models. """ 2 | 3 | gender_list = [('M', 'masculino'), ('F', 'feminino')] 4 | 5 | treatment_list = ( 6 | ('a', 'Arq.'), 7 | ('aa', 'Arqa.'), 8 | ('d', 'Dona'), 9 | ('dr', 'Dr.'), 10 | ('dra', 'Dra.'), 11 | ('e', 'Eng.'), 12 | ('ea', u'Engª.'), 13 | ('p', 'Prof.'), 14 | ('pa', 'Profa.'), 15 | ('sr', 'Sr.'), 16 | ('sra', 'Sra.'), 17 | ('srta', 'Srta.'), 18 | ) 19 | 20 | type_address_list = ( 21 | ('i', 'indefinido'), 22 | ('c', 'comercial'), 23 | ('r', 'residencial'), 24 | ('o', 'outros'), 25 | ) 26 | 27 | uf_list = ( 28 | ('AC', 'Acre'), 29 | ('AL', 'Alagoas'), 30 | ('AM', 'Amazonas'), 31 | ('AP', u'Amapá'), 32 | ('BA', 'Bahia'), 33 | ('CE', u'Ceará'), 34 | ('DF', u'Brasília'), 35 | ('ES', u'Espírito Santo'), 36 | ('GO', u'Goiás'), 37 | ('MA', u'Maranhão'), 38 | ('MG', 'Minas Gerais'), 39 | ('MS', 'Mato Grosso do Sul'), 40 | ('MT', 'Mato Grosso'), 41 | ('PA', u'Pará'), 42 | ('PB', u'Paraíba'), 43 | ('PE', 'Pernambuco'), 44 | ('PI', u'Piauí'), 45 | ('PR', u'Paraná'), 46 | ('RJ', 'Rio de Janeiro'), 47 | ('RN', 'Rio Grande do Norte'), 48 | ('RO', u'Rondônia'), 49 | ('RR', 'Roraima'), 50 | ('RS', 'Rio Grande do Sul'), 51 | ('SC', 'Santa Catarina'), 52 | ('SE', 'Sergipe'), 53 | ('SP', u'São Paulo'), 54 | ('TO', 'Tocantins'), 55 | ) 56 | 57 | type_phone_list = ( 58 | ('pri', 'principal'), 59 | ('com', 'comercial'), 60 | ('res', 'residencial'), 61 | ('cel', 'celular'), 62 | ('cl', 'Claro'), 63 | ('oi', 'Oi'), 64 | ('t', 'Tim'), 65 | ('v', 'Vivo'), 66 | ('n', 'Nextel'), 67 | ('fax', 'fax'), 68 | ('o', 'outros'), 69 | ) 70 | -------------------------------------------------------------------------------- /modelagem/tabelas.tex: -------------------------------------------------------------------------------- 1 | \documentclass[tikz]{standalone} 2 | \usepackage[utf8]{inputenc} 3 | \usepackage[T1]{fontenc} 4 | \usepackage{tikz-uml} 5 | \usepackage[pdfpagelayout=SinglePage]{hyperref} 6 | 7 | \begin{document} 8 | 9 | \begin{tikzpicture} 10 | \umlclass[x=0,y=0]{Pessoa}{ 11 | - id \\ 12 | - genero \\ 13 | - tratamento \\ 14 | - nome \\ 15 | - sobrenome \\ 16 | - cpf \\ 17 | - aniversario \\ 18 | - email \\ 19 | + \color{blue}{cargo\_id} \\ 20 | - bloqueado \\ 21 | - criado\_em \\ 22 | - modificado\_em \\ 23 | }{} 24 | \umlclass[x=-5,y=5]{Endereço}{ 25 | - id \\ 26 | - tipo\_endereco \\ 27 | - endereco \\ 28 | - num\_endereco \\ 29 | - complemento \\ 30 | - bairro \\ 31 | - cidade \\ 32 | - uf \\ 33 | - cep \\ 34 | + \color{blue}{pessoa\_id} \\ 35 | }{} 36 | \umlclass[x=-5,y=0]{Cargo}{ 37 | - id \\ 38 | - cargo \\ 39 | }{} 40 | \umlclass[x=-5,y=-5]{Telefone}{ 41 | - id \\ 42 | - telefone \\ 43 | - tipo\_telefone \\ 44 | + \color{blue}{pessoa\_id} \\ 45 | }{} 46 | \umlclass[x=5,y=0,fill=green!20]{Produto}{ 47 | - id \\ 48 | - importado \\ 49 | - fora\_de\_linha \\ 50 | - ncm \\ 51 | + \color{blue}{categoria\_id} \\ 52 | + \color{blue}{marca\_id} \\ 53 | - produto \\ 54 | - custo \\ 55 | - icms \\ 56 | - ipi \\ 57 | - estoque \\ 58 | - estoque\_minimo \\ 59 | - criado\_em \\ 60 | - modificado\_em \\ 61 | }{} 62 | \umlclass[x=10,y=2,fill=green!20]{Categoria}{ 63 | - id \\ 64 | - categoria \\ 65 | }{} 66 | \umlclass[x=10,y=-2,fill=green!20]{Marca}{ 67 | - id \\ 68 | - marca \\ 69 | }{} 70 | 71 | \umlassoc{Pessoa}{Endereço} 72 | \umlassoc{Pessoa}{Cargo} 73 | \umlassoc{Pessoa}{Telefone} 74 | \umlassoc{Produto}{Categoria} 75 | \umlassoc{Produto}{Marca} 76 | \end{tikzpicture} 77 | 78 | \end{document} -------------------------------------------------------------------------------- /myproject/core/templates/core/person/occupation_list.html: -------------------------------------------------------------------------------- 1 | {% extends "base.html" %} 2 | 3 | {% block title %} 4 | Occupation List 5 | {% endblock title %} 6 | 7 | {% block content %} 8 | 19 | 20 |

Lista de {{ name_plural.capitalize }}

21 | 22 |
23 | {% if occupation_list %} 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | {% for occupation in occupation_list %} 32 | 33 | 34 | 35 | {% endfor %} 36 | 37 |
Profissão
{{ occupation.occupation }}
38 | {% else %} 39 |

Sem itens na lista.

40 | {% endif %} 41 |
42 | 43 |
44 |
45 |

Total: {{ count }} 46 | {% if count <= 1 %} 47 | {{ name }} 48 | {% else %} 49 | {{ name_plural }} 50 | {% endif %} 51 |

52 |
53 | 54 | 55 | {% include "pagination.html" %} 56 | 57 | {% endblock content %} -------------------------------------------------------------------------------- /myproject/core/tests/test_list_product.py: -------------------------------------------------------------------------------- 1 | from django.test import TestCase 2 | from django.core.urlresolvers import reverse as r 3 | 4 | 5 | class ProductListTest(TestCase): 6 | 7 | def setUp(self): 8 | self.resp = self.client.get(r('product_list')) 9 | 10 | def test_get(self): 11 | 'GET /products/ must return status code 200.' 12 | self.assertEqual(200, self.resp.status_code) 13 | 14 | def test_template(self): 15 | 'Response should be a rendered template.' 16 | self.assertTemplateUsed( 17 | self.resp, 'core/product/product_list.html') 18 | 19 | def test_html(self): 20 | 'Html must contain input controls.' 21 | self.assertContains(self.resp, '', 8) 22 | 23 | 24 | class BrandListTest(TestCase): 25 | 26 | def setUp(self): 27 | self.resp = self.client.get(r('brand_list')) 28 | 29 | def test_get(self): 30 | 'GET /brands/ must return status code 200.' 31 | self.assertEqual(200, self.resp.status_code) 32 | 33 | def test_template(self): 34 | 'Response should be a rendered template.' 35 | self.assertTemplateUsed( 36 | self.resp, 'core/product/brand_list.html') 37 | 38 | def test_html(self): 39 | 'Html must contain input controls.' 40 | self.assertContains(self.resp, '', 1) 41 | 42 | 43 | class CategoryListTest(TestCase): 44 | 45 | def setUp(self): 46 | self.resp = self.client.get(r('category_list')) 47 | 48 | def test_get(self): 49 | 'GET /categorys/ must return status code 200.' 50 | self.assertEqual(200, self.resp.status_code) 51 | 52 | def test_template(self): 53 | 'Response should be a rendered template.' 54 | self.assertTemplateUsed( 55 | self.resp, 'core/product/category_list.html') 56 | 57 | def test_html(self): 58 | 'Html must contain input controls.' 59 | self.assertContains(self.resp, '', 1) 60 | -------------------------------------------------------------------------------- /myproject/fixtures/gen_products_csv.py: -------------------------------------------------------------------------------- 1 | #!python3 2 | import io 3 | import sys 4 | import datetime 5 | import names 6 | from gen_random_values import * 7 | 8 | product_list = [] 9 | repeat = 100 10 | with io.open('fixtures/produtos.csv', 'wt') as f: 11 | f.write( 12 | 'id,imported,outofline,ncm,category,brand,product,cost,icms,ipi,stock,stock_min,created_at,modified_at\n') 13 | for i in range(repeat): 14 | imported = random.choice(['True', 'False']) 15 | outofline = random.choice(['True', 'False']) 16 | ncm = gen_ncm() 17 | category = random.randint(1, 23) 18 | brand = random.randint(1, 20) 19 | # le uma lista de produtos. 20 | p = io.open('fixtures/produtos1.csv', 'rt', encoding='utf-8') 21 | linelist = p.readlines() 22 | 23 | product = linelist[i].split('\n')[0] 24 | cost = gen_decimal(4, 2) 25 | 26 | ipi = 0 27 | # para o ipi ficar abaixo de 0.5 28 | if imported == 'True': 29 | ipi = float(gen_ipi()) 30 | if ipi > 0.5: 31 | ipi = ipi - 0.5 32 | 33 | icms = gen_ipi() 34 | stock = random.randint(1, 200) 35 | stock_min = random.randint(1, 20) 36 | date = datetime.datetime.now().isoformat(" ") + "+00" 37 | # id, imported, outofline, ncm, category_id, brand_id, product, cost, icms, ipi, stock, stock_min, created_at, modified_at 38 | product_list.append( 39 | (i + 1, imported, outofline, ncm, category, brand, product, cost, icms, ipi, stock, stock_min, date, date)) 40 | for l in product_list: 41 | s = str(l[0]) + "," + str(l[1]) + "," + str(l[2]) + "," + str(l[3]) \ 42 | + "," + str(l[4]) + "," + str(l[5]) + "," + str(l[6]) + "," + str(l[7]) \ 43 | + "," + str(l[8]) + "," + str(l[9]) + "," + \ 44 | str(l[10]) + "," + str(l[11]) + "," + \ 45 | str(l[12]) + "," + str(l[13]) + "\n" 46 | f.write(str(s)) 47 | -------------------------------------------------------------------------------- /myproject/templates_admin/admin/login.html: -------------------------------------------------------------------------------- 1 | {% extends "base_initial.html" %} 2 | {% load i18n admin_static %} 3 | {% load bootstrap3 %} 4 | 5 | {% block extrastyle %}{{ block.super }}{% endblock %} 6 | 7 | {% block bodyclass %}{{ block.super }} login{% endblock %} 8 | 9 | {% block title %} 10 | Login 11 | {% endblock title %} 12 | 13 | {% block content %} 14 | 15 | {% if form.errors and not form.non_field_errors %} 16 |

17 | {% if form.errors.items|length == 1 %}{% trans "Please correct the error below." %}{% else %}{% trans "Please correct the errors below." %}{% endif %} 18 |

19 | {% endif %} 20 | 21 | {% if form.non_field_errors %} 22 | {% for error in form.non_field_errors %} 23 |

24 | {{ error }} 25 |

26 | {% endfor %} 27 | {% endif %} 28 | 29 |
30 |
31 | 32 | 55 | 56 | 59 |
60 |
61 | 62 | {% endblock %} -------------------------------------------------------------------------------- /myproject/core/templates/core/product/brand_list.html: -------------------------------------------------------------------------------- 1 | {% extends "base.html" %} 2 | 3 | {% block title %} 4 | Brand List 5 | {% endblock title %} 6 | 7 | {% block content %} 8 | 19 | 20 |

Lista de {{ name_plural.capitalize }}

21 | 22 |
23 | {% if brand_list %} 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | {% for brand in brand_list %} 32 | 33 | 34 | 35 | {% empty %} 36 |

Sem itens na lista.

37 | {% endfor %} 38 | 39 |
Marca
{{ brand.brand.capitalize }}
40 | {% else %} 41 |

Sem itens na lista.

42 | {% endif %} 43 |
44 | 45 |
46 |
47 |

Total: {{ count }} 48 | {% if count <= 1 %} 49 | {{ name }} 50 | {% else %} 51 | {{ name_plural }} 52 | {% endif %} 53 |

54 |
55 | 56 | 57 | {% include "pagination.html" %} 58 | 59 | {% endblock content %} -------------------------------------------------------------------------------- /myproject/core/templates/limbo/image_list.html: -------------------------------------------------------------------------------- 1 | {% extends "base.html" %} 2 | 3 | {% block title %} 4 | Product List 5 | {% endblock title %} 6 | 7 | {% block content %} 8 | 19 | 20 |

Lista de Produtos (NCM fictício)

21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 |
40 | {% for product in object_list %} 41 | 42 | 45 | 46 | {% empty %} 47 |

Sem itens na lista.

48 | {% endfor %} 49 |
50 | 51 |
ImportadoNCMCategoriaMarcaProdutoCustoICMSIPIEstoque atualEstoque Min.
52 |
53 | 54 | 55 | {% include "pagination.html" %} 56 | 57 | {% endblock content %} -------------------------------------------------------------------------------- /myproject/core/templates/core/product/category_list.html: -------------------------------------------------------------------------------- 1 | {% extends "base.html" %} 2 | 3 | {% block title %} 4 | Category List 5 | {% endblock title %} 6 | 7 | {% block content %} 8 | 19 | 20 |

Lista de {{ name_plural.capitalize }}

21 | 22 |
23 | {% if category_list %} 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | {% for category in category_list %} 32 | 33 | 34 | 35 | {% empty %} 36 |

Sem itens na lista.

37 | {% endfor %} 38 | 39 |
Categoria
{{ category.category }}
40 | {% else %} 41 |

Sem itens na lista.

42 | {% endif %} 43 |
44 | 45 |
46 |
47 |

Total: {{ count }} 48 | {% if count <= 1 %} 49 | {{ name }} 50 | {% else %} 51 | {{ name_plural }} 52 | {% endif %} 53 |

54 |
55 | 56 | 57 | {% include "pagination.html" %} 58 | 59 | {% endblock content %} -------------------------------------------------------------------------------- /myproject/core/admin.py: -------------------------------------------------------------------------------- 1 | from django.contrib import admin 2 | from .models import Person, Occupation, Address, Phone, Brand, Category, Product 3 | 4 | 5 | class PersonAdmin(admin.ModelAdmin): 6 | 7 | """Customize the look of the auto-generated admin for the Person model""" 8 | ordering = ['first_name'] 9 | list_display = ( 10 | '__str__', 'cpf', 'email', 'occupation', 'created_at', 'active', 'blocked') 11 | date_hierarchy = 'created_at' 12 | search_fields = ('first_name', 'last_name') 13 | list_filter = ('gender', 'active', 'blocked',) 14 | 15 | 16 | class AddressAdmin(admin.ModelAdmin): 17 | 18 | """Customize the look of the auto-generated admin for the Address model""" 19 | ordering = ['person'] 20 | list_display = ( 21 | 'person', 'address', 'district', 'city', 'uf', 'cep', 'type_address') 22 | search_fields = ( 23 | 'person__first_name', 'address', 'district', 'city', 'cep') 24 | list_filter = ('type_address', 'uf') 25 | 26 | 27 | class PhoneAdmin(admin.ModelAdmin): 28 | 29 | """Customize the look of the auto-generated admin for the Phone model""" 30 | ordering = ['person'] 31 | list_display = ('person', 'phone', 'type_phone') 32 | search_fields = ('person__first_name',) 33 | list_filter = ('type_phone',) 34 | 35 | 36 | class ProductAdmin(admin.ModelAdmin): 37 | 38 | """Customize the look of the auto-generated admin for the Product model""" 39 | ordering = ['product'] 40 | list_display = ( 41 | 'ncm', 'imported', 'product', 'category', 'brand', 'cost', 'stock', 'outofline') 42 | date_hierarchy = 'created_at' 43 | search_fields = ('product', 'ncm') 44 | list_filter = ('imported', 'outofline', 'category', 'brand',) 45 | 46 | admin.site.register(Person, PersonAdmin) # Use the customized options 47 | admin.site.register(Occupation) 48 | admin.site.register(Address, AddressAdmin) 49 | admin.site.register(Phone, PhoneAdmin) 50 | admin.site.register(Brand) 51 | admin.site.register(Category) 52 | admin.site.register(Product, ProductAdmin) 53 | -------------------------------------------------------------------------------- /myproject/settings.py: -------------------------------------------------------------------------------- 1 | import dj_database_url 2 | from unipath import Path 3 | BASE_DIR = Path(__file__).parent 4 | 5 | # SECURITY WARNING: keep the secret key used in production secret! 6 | SECRET_KEY = 'i-f5v($6g54-nr2nvkx%ekkson*+6qf47my1+)jmbd9dvnu@6%' 7 | 8 | # SECURITY WARNING: don't run with debug turned on in production! 9 | DEBUG = True 10 | 11 | TEMPLATE_DEBUG = True 12 | 13 | ALLOWED_HOSTS = [] 14 | 15 | 16 | # Application definition 17 | 18 | INSTALLED_APPS = ( 19 | 'django.contrib.admin', 20 | 'django.contrib.auth', 21 | 'django.contrib.contenttypes', 22 | 'django.contrib.sessions', 23 | 'django.contrib.messages', 24 | 'django.contrib.staticfiles', 25 | 'django_extensions', 26 | 'bootstrap3', 27 | 'myproject.core', 28 | ) 29 | 30 | MIDDLEWARE_CLASSES = ( 31 | 'django.contrib.sessions.middleware.SessionMiddleware', 32 | 'django.middleware.common.CommonMiddleware', 33 | 'django.middleware.csrf.CsrfViewMiddleware', 34 | 'django.contrib.auth.middleware.AuthenticationMiddleware', 35 | 'django.contrib.auth.middleware.SessionAuthenticationMiddleware', 36 | 'django.contrib.messages.middleware.MessageMiddleware', 37 | 'django.middleware.clickjacking.XFrameOptionsMiddleware', 38 | ) 39 | 40 | ROOT_URLCONF = 'myproject.urls' 41 | 42 | WSGI_APPLICATION = 'myproject.wsgi.application' 43 | 44 | 45 | # Database 46 | # https://docs.djangoproject.com/en/1.7/ref/settings/#databases 47 | 48 | DATABASES = { 49 | 'default': dj_database_url.config( 50 | default='sqlite:///' + BASE_DIR.child('db.sqlite3')) 51 | } 52 | 53 | # Internationalization 54 | # https://docs.djangoproject.com/en/1.7/topics/i18n/ 55 | 56 | LANGUAGE_CODE = 'pt-br' 57 | 58 | TIME_ZONE = 'UTC' 59 | 60 | USE_I18N = True 61 | 62 | USE_L10N = True 63 | 64 | USE_TZ = True 65 | 66 | USE_THOUSAND_SEPARATOR = True 67 | 68 | # Static files (CSS, JavaScript, Images) 69 | STATIC_ROOT = BASE_DIR.child('staticfiles') 70 | STATIC_URL = '/static/' 71 | 72 | TEMPLATE_DIRS = ( 73 | BASE_DIR.child('templates_admin'), 74 | ) 75 | -------------------------------------------------------------------------------- /myproject/fixtures/gen_address_csv.py: -------------------------------------------------------------------------------- 1 | #!python3 2 | import io 3 | import sys 4 | import rstr 5 | import urllib.request 6 | import json 7 | from gen_random_values import * 8 | from pprint import pprint 9 | 10 | 11 | type_address_list = ( 12 | ('i'), 13 | ('c'), 14 | ('r'), 15 | ('o'), 16 | ) 17 | 18 | 19 | address_list = [] 20 | repeat = 10 21 | print('\nwait...\n') 22 | with io.open('fixtures/enderecos.csv', 'wt') as f: 23 | f.write( 24 | 'id,type_address,address,address_number,district,city,uf,cep,person\n') 25 | for i in range(repeat): 26 | print(repeat - i) 27 | # le uma lista de ceps validos e escolhe um deles. 28 | p = io.open('fixtures/ceps.csv', 'rt', encoding='utf-8') 29 | linelist = p.readlines() 30 | l = random.randint(1, 848877) 31 | # retorna o cep no formato 00000000 32 | cep = linelist[l].split('\n')[0].strip("'") 33 | # acessa a url a seguir 34 | url = 'http://viacep.com.br/ws/' + str(cep) + '/json' 35 | resp = urllib.request.urlopen(url).read() 36 | # carrega o json 37 | data = json.loads(resp.decode('utf-8')) 38 | # pprint(data) 39 | 40 | type_address = random.choice(type_address_list) 41 | address = data['logradouro'] 42 | address_number = random.randint(1, 9999) 43 | district = data['bairro'] 44 | city = data['localidade'] 45 | uf = data['uf'] 46 | person = random.randint(1, 100) # person registrados 47 | # id, type_address, address, address_number, district, city, uf, cep, person 48 | address_list.append( 49 | (i + 1, type_address, address, address_number, district, city, uf, cep, person)) 50 | print('\nbe patient...\n') 51 | for l in address_list: 52 | s = str(l[0]) + "," + str(l[1]) + "," + \ 53 | str(l[2]) + "," + str(l[3]) + "," + \ 54 | str(l[4]) + "," + str(l[5]) + "," + \ 55 | str(l[6]) + "," + str(l[7]) + "," + \ 56 | str(l[8]) + "\n" 57 | f.write(str(s)) 58 | -------------------------------------------------------------------------------- /modelagem/README.md: -------------------------------------------------------------------------------- 1 | django-example 2 | ============== 3 | 4 | # Modelo 5 | 6 | **mer.tex** é a modelagem conceitual (coloquei apenas as entidades). Para fazer este documento eu usei o [LaTeX][9] junto com o pacote [tikz-er2][10]. 7 | 8 | Para compilar o documento use o comando (precisa instalar o *latexmk*) 9 | 10 | $ latexmk -pdf mer.tex && latexmk -c 11 | 12 | Para converter o **pdf** em **jpg** use o [Imagemagick][11]. 13 | 14 | $ convert -density 300 mer.pdf mer.jpg 15 | 16 | ![mer](mer.jpg) 17 | 18 | **tabelas.tex** foi feito em [LaTeX][9] junto com o pacote [tikz-uml][12]. 19 | 20 | ![tabelas](tabelas.jpg) 21 | 22 | ![tables](tables.jpg) 23 | 24 | # Notas 25 | 26 | Para gerar **core.png** use a biblioteca [django-extensions][1] junto com 27 | 28 | $ ./manage.py graph_models -a -g -o core.png 29 | 30 | ou 31 | 32 | $ ./manage.py graph_models -e -g -l dot -o core.png core 33 | 34 | Se der **erro**, instale *pyparsing* novamente desta forma: 35 | 36 | $ pip uninstall pyparsing 37 | $ pip install -Iv https://pypi.python.org/packages/source/p/pyparsing/pyparsing-1.5.7.tar.gz#md5=9be0fcdcc595199c646ab317c1d9a709 38 | $ pip install pydot 39 | $ pip freeze > requirements.txt 40 | 41 | ![a](core.png) 42 | 43 | Leia [django-notes][8]. 44 | 45 | [0]: https://www.djangoproject.com/ 46 | [1]: http://django-extensions.readthedocs.org/en/latest/ 47 | [2]: https://docs.djangoproject.com/en/dev/ref/class-based-views/ 48 | [3]: https://docs.djangoproject.com/en/dev/ref/class-based-views/base/#templateview 49 | [4]: https://docs.djangoproject.com/en/dev/ref/class-based-views/generic-display/#listview 50 | [5]: https://docs.djangoproject.com/en/dev/ref/class-based-views/generic-editing/#formview 51 | [8]: http://django-notes.blogspot.com.br/2012/07/vizualization.html 52 | [9]: http://latexbr.blogspot.com.br/ 53 | [10]: https://bitbucket.org/pavel_calado/tikz-er2/wiki/Home 54 | [11]: http://grandeportal.blogspot.com.br/2012/06/editando-imagens-no-imagemagick.html 55 | [12]: http://perso.ensta-paristech.fr/~kielbasi/tikzuml/index.php?lang=en 56 | [13]: http://rg-vendas.herokuapp.com/ -------------------------------------------------------------------------------- /myproject/fixtures/gen_persons_csv.py: -------------------------------------------------------------------------------- 1 | #!python3 2 | import io 3 | import sys 4 | import datetime 5 | import names 6 | from gen_random_values import * 7 | 8 | """ List of values for use in choices in models. """ 9 | treatment_male_list = ( 10 | ('a'), 11 | ('dr'), 12 | ('e'), 13 | ('p'), 14 | ('sr'), 15 | ) 16 | 17 | treatment_female_list = ( 18 | ('aa'), 19 | ('d'), 20 | ('ea'), 21 | ('pa'), 22 | ('sra'), 23 | ('srta'), 24 | ) 25 | 26 | person_list = [] 27 | repeat = 100 28 | with io.open('fixtures/pessoas.csv', 'wt') as f: 29 | f.write( 30 | 'id,gender,treatment,first_name,last_name,cpf,birthday,email,occupation,active,blocked,created_at,modified_at\n') 31 | for i in range(repeat): 32 | g = random.choice(['M', 'F']) 33 | if g == 'M': 34 | treatment = random.choice(treatment_male_list) 35 | first_name = names.get_first_name(gender='male') 36 | else: 37 | treatment = random.choice(treatment_female_list) 38 | first_name = names.get_first_name(gender='female') 39 | last_name = names.get_last_name() 40 | cpf = gen_cpf() 41 | birthday = gen_timestamp() + '+00' 42 | email = first_name[ 43 | 0].lower() + '.' + last_name.lower() + '@example.com' 44 | occupation = random.randint(1, 163) # occupation registrados 45 | active = random.choice(['True', 'False']) 46 | blocked = random.choice(['True', 'False']) 47 | date = datetime.datetime.now().isoformat(" ") + "+00" 48 | # id,gender,treatment,first_name,last_name,cpf,birthday,email,occupation,active,blocked,created_at,modified_at 49 | person_list.append( 50 | (i + 1, g, treatment, first_name, last_name, cpf, birthday, email, occupation, active, blocked, date, date)) 51 | for l in person_list: 52 | s = str(l[0]) + "," + str(l[1]) + "," + str(l[2]) + "," + str(l[3]) \ 53 | + "," + str(l[4]) + "," + str(l[5]) + "," + str(l[6]) + "," + str(l[7]) \ 54 | + "," + str(l[8]) + "," + str(l[9]) + "," + \ 55 | str(l[10]) + "," + str(l[11]) + "," + \ 56 | str(l[12]) + "\n" 57 | f.write(str(s)) 58 | -------------------------------------------------------------------------------- /myproject/core/templates/core/product/product_detail.html: -------------------------------------------------------------------------------- 1 | {% extends "base.html" %} 2 | 3 | {% block title %} 4 | Product Detail 5 | {% endblock title %} 6 | 7 | {% block content %} 8 | 64 | {% endblock content %} -------------------------------------------------------------------------------- /myproject/core/tests/test_forms.py: -------------------------------------------------------------------------------- 1 | from django.test import TestCase 2 | from myproject.core.forms import PersonForm, AddressForm, ProductForm 3 | 4 | 5 | class PersonFormTest(TestCase): 6 | 7 | # def test_cpf_is_digit(self): 8 | # 'CPF must only accept digits.' 9 | # form = self.make_validated_form(cpf='ABCD0000000') 10 | # self.assertItemsEqual(['cpf'], form.errors) 11 | 12 | # def test_cpf_has_11_digits(self): 13 | # 'CPF must have 11 digits.' 14 | # form = self.make_validated_form(cpf='1234') 15 | # self.assertItemsEqual(['cpf'], form.errors) 16 | 17 | def test_name_must_be_capitalized(self): 18 | 'Name must be capitalized.' 19 | form = self.make_validated_form(name='REGIS') 20 | self.assertEqual('Regis', form.cleaned_data['first_name']) 21 | 22 | def make_validated_form(self, **kwargs): 23 | data = dict( 24 | occupation=1, 25 | gender='M', 26 | treatment='sr', 27 | first_name='Regis', 28 | last_name='da Silva', 29 | cpf='11122233396', 30 | birthday='1979-05-31T00:00:00+00:00', 31 | email='r.santos@example.com', 32 | phone=1, 33 | blocked=False, 34 | ) 35 | data.update(kwargs) 36 | form = PersonForm(data) 37 | form.is_valid() 38 | return form 39 | 40 | 41 | class AddressFormTest(TestCase): 42 | 43 | def make_validated_form(self, **kwargs): 44 | data = dict( 45 | person=1, 46 | type_address='c', 47 | address=u'Av. Paulista', 48 | address_number=721, 49 | complement=u'apto 313', 50 | district=u'Bela Vista', 51 | city=u'São Paulo', 52 | uf='SP', 53 | cep='01311-100', 54 | ) 55 | data.update(kwargs) 56 | form = AddressForm(data) 57 | form.is_valid() 58 | return form 59 | 60 | 61 | class ProductFormTest(TestCase): 62 | 63 | def make_validated_form(self, **kwargs): 64 | data = dict( 65 | brand=1, 66 | category=1, 67 | imported=True, 68 | outofline=False, 69 | ncm='12345678', 70 | product=u'Amendoim', 71 | cost=5.75, 72 | icms=0.05, 73 | ipi=0.1, 74 | stock=100, 75 | stock_min=50, 76 | ) 77 | data.update(kwargs) 78 | form = ProductForm(data) 79 | form.is_valid() 80 | return form 81 | -------------------------------------------------------------------------------- /myproject/fixtures/gen_random_values.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | import random 3 | import rstr 4 | import datetime 5 | from decimal import Decimal 6 | 7 | 8 | def gen_age(): 9 | # gera numeros inteiros entre 15 e 99 10 | return random.randint(15, 99) 11 | 12 | 13 | def gen_cpf(): 14 | # gera uma string com 11 caracteres numericos 15 | return rstr.rstr('1234567890', 11) 16 | 17 | 18 | def gen_ncm(): 19 | return rstr.rstr('123456789', 8) 20 | 21 | 22 | def gen_phone(): 23 | # gera um telefone no formato (xx) xxxx-xxxx 24 | return '({0}) {1}-{2}'.format( 25 | rstr.rstr('1234567890', 2), 26 | rstr.rstr('1234567890', 4), 27 | rstr.rstr('1234567890', 4)) 28 | 29 | 30 | def gen_timestamp(min_year=1980, max_year=1996): 31 | # gera um datetime no formato yyyy-mm-dd hh:mm:ss.000000 32 | year = random.randint(min_year, max_year) 33 | month = random.randint(11, 12) 34 | day = random.randint(1, 28) 35 | hour = random.randint(1, 23) 36 | minute = random.randint(1, 59) 37 | second = random.randint(1, 59) 38 | microsecond = random.randint(1, 999999) 39 | date = datetime.datetime( 40 | year, month, day, hour, minute, second, microsecond).isoformat(" ") 41 | return date 42 | 43 | 44 | def gen_decimal(max_digits, decimal_places): 45 | num_as_str = lambda x: ''.join( 46 | [str(random.randint(0, 9)) for i in range(x)]) 47 | return Decimal("%s.%s" % (num_as_str(max_digits - decimal_places), 48 | num_as_str(decimal_places))) 49 | gen_decimal.required = ['max_digits', 'decimal_places'] 50 | 51 | 52 | def gen_ipi(): 53 | num_as_str = lambda x: ''.join( 54 | [str(random.randint(0, 9)) for i in range(x)]) 55 | return Decimal("0.%s" % (num_as_str(2))) 56 | 57 | 58 | def gen_city(): 59 | list_city = [ 60 | [u'São Paulo', 'SP'], 61 | [u'Belém', 'PA'], 62 | [u'Rio de Janeiro', 'RJ'], 63 | [u'Goiânia', 'GO'], 64 | [u'Salvador', 'BA'], 65 | [u'Guarulhos', 'SP'], 66 | [u'Brasília', 'DF'], 67 | [u'Campinas', 'SP'], 68 | [u'Fortaleza', 'CE'], 69 | [u'São Luís', 'MA'], 70 | [u'Belo Horizonte', 'MG'], 71 | [u'São Gonçalo', 'RJ'], 72 | [u'Manaus', 'AM'], 73 | [u'Maceió', 'AL'], 74 | [u'Curitiba', 'PR'], 75 | [u'Duque de Caxias', 'RJ'], 76 | [u'Recife', 'PE'], 77 | [u'Natal', 'RN'], 78 | [u'Porto Alegre', 'RS'], 79 | [u'Campo Grande', 'MS']] 80 | return random.choice(list_city) 81 | -------------------------------------------------------------------------------- /myproject/fixtures/csv2json.py: -------------------------------------------------------------------------------- 1 | # csv2json.py 2 | # 3 | # Copyright 2009 Brian Gershon -- briang at webcollective.coop 4 | # 5 | # Licensed under the Apache License, Version 2.0 (the "License"); 6 | # you may not use this file except in compliance with the License. 7 | # You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, software 12 | # distributed under the License is distributed on an "AS IS" BASIS, 13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | # See the License for the specific language governing permissions and 15 | # limitations under the License. 16 | # https://djangosnippets.org/snippets/1680/ 17 | 18 | import sys 19 | import getopt 20 | import csv 21 | from os.path import dirname 22 | import simplejson 23 | 24 | try: 25 | script, input_file_name, model_name = sys.argv 26 | except ValueError: 27 | print("\nRun via:\n\n%s input_file_name model_name" % sys.argv[0]) 28 | # print("\ne.g. %s airport.csv app_airport.Airport" % sys.argv[0]) 29 | print("\ne.g. %s categorias.csv core.Category" % sys.argv[0]) 30 | print( 31 | "\nNote: input_file_name should be a path relative to where this script is.") 32 | sys.exit() 33 | 34 | in_file = dirname(__file__) + input_file_name 35 | out_file = dirname(__file__) + input_file_name + ".json" 36 | 37 | print("Converting %s from CSV to JSON as %s" % (in_file, out_file)) 38 | 39 | f = open(in_file, 'r') 40 | fo = open(out_file, 'w') 41 | 42 | reader = csv.reader(f) 43 | 44 | header_row = [] 45 | entries = [] 46 | 47 | # debugging 48 | # if model_name == 'app_airport.Airport': 49 | # import pdb ; pdb.set_trace( ) 50 | 51 | for row in reader: 52 | if not header_row: 53 | header_row = row 54 | continue 55 | 56 | pk = row[0] 57 | model = model_name 58 | fields = {} 59 | for i in range(len(row) - 1): 60 | active_field = row[i + 1] 61 | 62 | # convert numeric strings into actual numbers by converting to either 63 | # int or float 64 | if active_field.isdigit(): 65 | try: 66 | new_number = int(active_field) 67 | except ValueError: 68 | new_number = float(active_field) 69 | fields[header_row[i + 1]] = new_number 70 | else: 71 | fields[header_row[i + 1]] = active_field.strip() 72 | 73 | row_dict = {} 74 | row_dict["pk"] = int(pk) 75 | row_dict["model"] = model_name 76 | 77 | row_dict["fields"] = fields 78 | entries.append(row_dict) 79 | 80 | fo.write("%s" % simplejson.dumps(entries, indent=4)) 81 | 82 | f.close() 83 | fo.close() 84 | -------------------------------------------------------------------------------- /myproject/core/templates/core/person/person_detail.html: -------------------------------------------------------------------------------- 1 | {% extends "base.html" %} 2 | 3 | {% block title %} 4 | Person Detail 5 | {% endblock title %} 6 | 7 | {% block content %} 8 | 9 |
10 |
11 | 12 |
13 |
14 |

{{ object.full_name }}, {{ object.get_treatment_display }}

15 |

{{ object.occupation }}

16 |

{{ object.email }}

17 |
18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 44 | 45 | 46 | 47 | 54 | 55 | 56 |
Sexo{{ object.get_gender_display }}
CPF{{ object.cpf }}
Nascimento{{ object.birthday }}
Ativo 38 | {% if object.active %} 39 | 40 | {% else %} 41 | 42 | {% endif %} 43 |
Bloqueado 48 | {% if object.blocked %} 49 | 50 | {% else %} 51 | 52 | {% endif %} 53 |
57 | 58 | {% if phones %} 59 |

Telefones

60 | 61 |
62 |
    63 | {% for phone in phones %} 64 |
  • 65 | {{ phone.phone }} 66 | {{ phone.get_type_phone_display }} 67 |
  • 68 | {% endfor %} 69 |
70 |
71 | {% endif %} 72 | 73 | {% if address %} 74 |

Endereço

75 |
76 | 77 | {% for address in address %} 78 |

{{ address.get_type_address_display }}

79 |

{{ address.address }}, {{ address.address_number }}

80 |

{{ address.complement }}

81 |

Bairro: {{ address.district }}

82 |

Cidade/UF: {{ address.city }} - {{ address.uf }}

83 |

CEP: {{ address.cep }}

84 |
85 | {% endfor %} 86 | {% endif %} 87 | 88 |
89 | 90 | {% endblock content %} -------------------------------------------------------------------------------- /myproject/core/tests/test_views_product.py: -------------------------------------------------------------------------------- 1 | from django.test import TestCase 2 | from django.core.urlresolvers import reverse as r 3 | 4 | 5 | class ProductTest(TestCase): 6 | 7 | def setUp(self): 8 | self.resp = self.client.get(r('product_add')) 9 | 10 | def test_get(self): 11 | 'GET /product/add/ must return status code 200.' 12 | self.assertEqual(200, self.resp.status_code) 13 | 14 | def test_template(self): 15 | 'Response should be a rendered template.' 16 | self.assertTemplateUsed( 17 | self.resp, 'core/product/product_create_form.html') 18 | 19 | def test_html(self): 20 | 'Html must contain input controls.' 21 | self.assertContains(self.resp, 'Person List 5 | {% endblock title %} 6 | 7 | {% block content %} 8 | 19 | 20 |

Lista de {{ name_plural.capitalize }} (Nomes fictícios)

21 | 22 |
23 | {% if person_list %} 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | {% for person in person_list %} 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 51 | 52 | 53 | {% endfor %} 54 | 55 |
NomeCPFEmailNascimentoProfissãoAtivo
{{ person.full_name }}, {{ person.get_treatment_display }}{{ person.cpf }}{{ person.email }}{{ person.birthday|date:"d/m/Y" }}{{ person.occupation }} 45 | {% if person.active %} 46 | 47 | {% else %} 48 | 49 | {% endif %} 50 |
56 | {% else %} 57 |

Sem itens na lista.

58 | {% endif %} 59 |
60 | 61 |
62 |
63 |

Total: {{ count }} 64 | {% if count <= 1 %} 65 | {{ name }} 66 | {% else %} 67 | {{ name_plural }} 68 | {% endif %} 69 |

70 |
71 | 72 | 73 | 74 | {% include "pagination.html" %} 75 | 76 | {% endblock content %} -------------------------------------------------------------------------------- /myproject/core/templates/menu.html: -------------------------------------------------------------------------------- 1 | 2 | 61 | 62 | -------------------------------------------------------------------------------- /myproject/core/templates/core/product/product_list.html: -------------------------------------------------------------------------------- 1 | {% extends "base.html" %} 2 | 3 | {% block title %} 4 | Product List 5 | {% endblock title %} 6 | 7 | {% block content %} 8 | 19 | 20 |

Lista de {{ name_plural.capitalize }} (NCM fictício)

21 | 22 |
23 | {% if product_list %} 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | {% for product in product_list %} 39 | {% if product.stoq < product.stoq_min %} 40 | 41 | {% else %} 42 | 43 | {% endif %} 44 | 51 | 52 | 53 | 54 | 55 | 56 | {% if product.get_ipi == "0" %} 57 | 58 | {% else %} 59 | 60 | {% endif %} 61 | 62 | 63 | 64 | 65 | {% empty %} 66 |

Sem itens na lista.

67 | {% endfor %} 68 | 69 |
ImportadoNCMProdutoMarcaCustoIPIEstoque atualEstoque Min.
45 | {% if product.imported %} 46 | 47 | {% else %} 48 | 49 | {% endif %} 50 | {{ product.ncm }}{{ product.product }}{{ product.brand }}{{ product.get_cost }}---{{ product.get_ipi }}%{{ product.stock }}{{ product.stock_min }}
70 | {% else %} 71 |

Sem itens na lista.

72 | {% endif %} 73 |
74 | 75 |
76 |
77 |

Total: {{ count }} 78 | {% if count <= 1 %} 79 | {{ name }} 80 | {% else %} 81 | {{ name_plural }} 82 | {% endif %} 83 |

84 |
85 | 86 | 87 | {% include "pagination.html" %} 88 | 89 | {% endblock content %} -------------------------------------------------------------------------------- /myproject/fixtures/fixtures/produtos1.csv: -------------------------------------------------------------------------------- 1 | abacates frescos ou secos 2 | abacaxis frescos ou secos 3 | abajures de cabeceira ou de escritorioetc.eletricos 4 | absorventes e outs.artigos higienicosde papel 5 | acessorios moldados p/tubos de aco 6 | acessorios para tubos de aluminio 7 | acetona nao contendo outs.funcoes oxigenadas 8 | acido citrico 9 | acido formico 10 | acucar de cana 11 | agua destilada 12 | agua mineral 13 | aguardente de vinho ou de bagaco de uvas 14 | agulhas para maqs.de costura 15 | aipo fresco 16 | alarmes contra incendio ou sobreaquecimento 17 | albuns ou livros 18 | alcaparras conservadas em agua salgada 19 | alcool benzilico 20 | alcool isopropilico 21 | aldeido alfa-amilcinamico 22 | alfaces repolhudasfrescas ou refrigeradas 23 | alfinetes de segurancade ferro ou aco 24 | algas frescas refrigeradas 25 | algodao cardado ou penteado 26 | algodao simplesmente debulhado 27 | alho comum em po sem qualquer outro preparo 28 | alicates de metais comuns 29 | alimentos para caes e gatos 30 | amido de milho 31 | armas de guerra 32 | aros e raios para bicicletas e outs.ciclos 33 | arroz nao parboilizado 34 | avelas 35 | azeite de oliva virgem 36 | azeitonas conserv.com agua salgada 37 | bacalhaus (gadidae) secos 38 | baunilha 39 | bolachas e biscoitos 40 | bolas inflaveis 41 | bombas de vacuo 42 | bordados de out.materia textilem peca/tiras ou motivos 43 | cafe nao torradonao descafeinadoem grao t 44 | calcados impermeav.de borracha/plast.cobrindo joelho 45 | calcinhas de malha de algodao 46 | camisasblusasetc.de seda/desperds.de uso feminino 47 | canela e flores de caneleiranao trituradas nem em po 48 | carbosulfan ((dibutilaminotio) metilcarbamato de 2etc. 49 | carnes de bovinodesossadasfrescas ou refrigeradas 50 | cartas de jogar 51 | caseinato de sodio 52 | cavalos reprodutoresde raca pura s 53 | cera artificial de polipropilenoglicois 54 | cha preto (fermentado/parcialm.) apresent.qq.out.forma 55 | citrato de orfenadrina 56 | colchas de malha 57 | corpetes calcinhas penhoares 58 | deidrocolato de sodio 59 | encerados e toldosde outs.materias texteis 60 | escovas de dentesincl.as escovas p/dentaduras 61 | esteiras "mats" de fibras de vidronao tecidos 62 | facas/laminas cort.de metais comunsp/apars.cozinhaetc 63 | feijao adzukisecopara semeadura 64 | files de peixessecossalgadosem salmouran/defumados 65 | fotorresistores montados 66 | gel de silica (dioxido de silicio) 67 | gorduras e oleosde mamiferos marinhosrespect.fracoes 68 | grumos e semolasde milho 69 | imitacoes de perolaspedras preciosas/semide vidro 70 | isoladores de ceramica p/uso eletrico 71 | lampadascubos e semelh.de luz relampago p/fotografia 72 | ligas de aluminio em forma bruta 73 | linho trabalhado de out.formamas nao fiado 74 | macadame de escorias de altos-fornosouts.escoriasetc. 75 | materiais para suturas cirurgicasde polidiexzanona 76 | morangos frescos 77 | oculos de sol 78 | omeprazol 79 | queijo tipo mussarelafresco (nao curado) 80 | relogio de bolsosemelh.cx.met.prec.etc.func.eletr. 81 | roupoesetc.de malha de fibra sint/artif.uso masculino 82 | selos postaisfiscaisetc.n/obliteradosc/curso legal 83 | soroalbumina preparado como medicamento 84 | tachaspregosetc.de cobre/ferro/acoc/cabeca de cobre 85 | teares p/tapetesl>30cms/lancadeirade pincas 86 | tecido de fios alta tenac.de nailonetc.c/fio borracha 87 | teobrominaseus derivados e sais 88 | titanato de chumbo 89 | trimetoprima 90 | tubos e perfis ocosde ferro fundido 91 | uvas frescas 92 | uvas secas 93 | vaselina 94 | vestuario e acess.calcadosetc.de amianto/das misturas 95 | vidro para relogios 96 | vitamina a1 alcool (retinol) 97 | vitamina b12 (cianocobalamina)nao misturada 98 | vitamina b2 (riboflavina)nao misturada 99 | vodca 100 | xampus para os cabelos -------------------------------------------------------------------------------- /myproject/fixtures/fixtures/profissoes.csv: -------------------------------------------------------------------------------- 1 | id,occupation 2 | 1,acougueiro 3 | 2,acupunturista 4 | 3,advogado 5 | 4,almoxarife 6 | 5,analista financeiro 7 | 6,analista programador 8 | 7,analista programador .net 9 | 8,analista programador advpl 10 | 9,analista programador android 11 | 10,analista programador asp.net 12 | 11,analista programador c# 13 | 12,analista programador c++ 14 | 13,analista programador cobol 15 | 14,analista programador delphi 16 | 15,analista programador java 17 | 16,analista programador mainframe 18 | 17,analista programador oracle 19 | 18,analista programador php 20 | 19,analista programador pl sql 21 | 20,analista programador progress 22 | 21,analista programador protheus 23 | 22,analista programador sharepoint 24 | 23,analista programador sql 25 | 24,analista programador vb6 26 | 25,analista programador web 27 | 26,analista programador websphere 28 | 27,arquiteto de informacao 29 | 28,arquiteto de interiores 30 | 29,arquiteto de sistemas 31 | 30,assistente administrativo 32 | 31,assistente comercial 33 | 32,assistente contabil 34 | 33,ator 35 | 34,azulejista 36 | 35,baba 37 | 36,back office 38 | 37,balconista 39 | 38,barista 40 | 39,barman 41 | 40,biologo 42 | 41,biomedico 43 | 42,bioquimico 44 | 43,bombeiro civil 45 | 44,cabeleireiro 46 | 45,caseiro 47 | 46,comprador 48 | 47,confeiteiro 49 | 48,contador 50 | 49,costureiro 51 | 50,cozinheiro 52 | 51,dba 53 | 52,dba oracle 54 | 53,dba sql 55 | 54,degustador 56 | 55,dentista 57 | 56,desenhista projetista 58 | 57,designer 59 | 58,eletricista 60 | 59,eletricista de veiculos 61 | 60,eletricista predial 62 | 61,encanador 63 | 62,encanador industrial 64 | 63,engenheiro ambiental 65 | 64,engenheiro civil 66 | 65,engenheiro de computacao 67 | 66,escriturario 68 | 67,fiscal de loja 69 | 68,fisico 70 | 69,fisioterapeuta 71 | 70,fonoaudiologo 72 | 71,fotografo 73 | 72,garcom 74 | 73,gastronomo 75 | 74,geografo 76 | 75,geologo 77 | 76,gerente administrativo 78 | 77,gerente comercial 79 | 78,guia de turismo 80 | 79,instalador 81 | 80,interprete de libras 82 | 81,jardineiro 83 | 82,jornalista 84 | 83,manobrista 85 | 84,marceneiro 86 | 85,matematico 87 | 86,mecanico 88 | 87,meio oficial carpinteiro 89 | 88,meio oficial de manutencao 90 | 89,mestre de obras 91 | 90,motoboy 92 | 91,motorista 93 | 92,nutricionista 94 | 93,office-boy 95 | 94,oficial de manutencao 96 | 95,orcamentista 97 | 96,padeiro 98 | 97,palestrante 99 | 98,pedreiro 100 | 99,pesquisador 101 | 100,pintor 102 | 101,pintor de moveis 103 | 102,pintor eletrostatico 104 | 103,pizzaiolo 105 | 104,podologo 106 | 105,professor 107 | 106,professor universitario 108 | 107,programador .net 109 | 108,programador abap 110 | 109,programador android 111 | 110,programador asp 112 | 111,programador asp.net 113 | 112,programador back-end 114 | 113,programador c# 115 | 114,programador c++ 116 | 115,programador de banco de dados 117 | 116,programador de software 118 | 117,programador java 119 | 118,programador javascript 120 | 119,programador linux 121 | 120,programador php 122 | 121,programador python 123 | 122,programador ruby on rails 124 | 123,programador sap 125 | 124,programador soa 126 | 125,programador web 127 | 126,promotor de merchandising 128 | 127,promotor de vendas 129 | 128,psicologo 130 | 129,psicopedagogo 131 | 130,publicitario 132 | 131,quimico 133 | 132,reporter 134 | 133,repositor 135 | 134,salgadeiro 136 | 135,sapateiro 137 | 136,secretaria 138 | 137,secretaria executiva 139 | 138,seguranca 140 | 139,servente de obras 141 | 140,sindico 142 | 141,sociologo 143 | 142,soldador 144 | 143,supervisor de vendas 145 | 144,supervisor financeiro 146 | 145,suporte tecnico 147 | 146,sushiman 148 | 147,tecnico eletricista 149 | 148,tecnico eletroeletronico 150 | 149,tecnico em informatica 151 | 150,telefonista 152 | 151,telhadista 153 | 152,tesoureiro 154 | 153,tradutor 155 | 154,vendedor 156 | 155,vendedor de loja 157 | 156,vendedor externo 158 | 157,veterinario 159 | 158,vidraceiro 160 | 159,vigilante 161 | 160,web designer 162 | 161,web developer 163 | 162,webmaster 164 | 163,zelador -------------------------------------------------------------------------------- /myproject/core/tests/test_views_person.py: -------------------------------------------------------------------------------- 1 | from django.test import TestCase 2 | from django.core.urlresolvers import reverse as r 3 | 4 | 5 | class PersonTest(TestCase): 6 | 7 | def setUp(self): 8 | self.resp = self.client.get(r('person_add')) 9 | 10 | def test_get(self): 11 | 'GET /person/add/ must return status code 200.' 12 | self.assertEqual(200, self.resp.status_code) 13 | 14 | def test_template(self): 15 | 'Response should be a rendered template.' 16 | self.assertTemplateUsed( 17 | self.resp, 'core/person/person_create_form.html') 18 | 19 | def test_html(self): 20 | 'Html must contain input controls.' 21 | self.assertContains(self.resp, '30cms/lancadeirade pincas,90.66,0.11,0.20999999999999996,166,13,2015-01-21 16:20:38.196599+00,2015-01-21 16:20:38.196599+00 87 | 86,False,True,63721694,9,10,tecido de fios alta tenac.de nailonetc.c/fio borracha,85.56,0.87,0,169,16,2015-01-21 16:20:38.196772+00,2015-01-21 16:20:38.196772+00 88 | 87,True,False,18834479,22,10,teobrominaseus derivados e sais,12.53,0.20,0.32,84,12,2015-01-21 16:20:38.196958+00,2015-01-21 16:20:38.196958+00 89 | 88,True,True,21582794,7,13,titanato de chumbo,19.38,0.47,0.36,196,13,2015-01-21 16:20:38.197143+00,2015-01-21 16:20:38.197143+00 90 | 89,True,True,92982424,13,1,trimetoprima,90.33,0.48,0.22,109,16,2015-01-21 16:20:38.197326+00,2015-01-21 16:20:38.197326+00 91 | 90,True,True,76938828,2,6,tubos e perfis ocosde ferro fundido,82.96,0.68,0.4,50,11,2015-01-21 16:20:38.197511+00,2015-01-21 16:20:38.197511+00 92 | 91,True,True,77655591,10,17,uvas frescas,96.47,0.95,0.30000000000000004,2,10,2015-01-21 16:20:38.197694+00,2015-01-21 16:20:38.197694+00 93 | 92,True,True,55289846,8,20,uvas secas,30.09,0.19,0.19999999999999996,65,14,2015-01-21 16:20:38.197881+00,2015-01-21 16:20:38.197881+00 94 | 93,True,False,14711994,6,14,vaselina,6.89,0.36,0.06000000000000005,10,16,2015-01-21 16:20:38.198064+00,2015-01-21 16:20:38.198064+00 95 | 94,True,True,47496241,19,17,vestuario e acess.calcadosetc.de amianto/das misturas,77.66,0.76,0.33999999999999997,91,17,2015-01-21 16:20:38.198251+00,2015-01-21 16:20:38.198251+00 96 | 95,False,False,25979241,15,1,vidro para relogios,69.47,0.50,0,174,19,2015-01-21 16:20:38.198422+00,2015-01-21 16:20:38.198422+00 97 | 96,True,True,15689958,7,6,vitamina a1 alcool (retinol),8.32,0.08,0.06999999999999995,167,5,2015-01-21 16:20:38.198605+00,2015-01-21 16:20:38.198605+00 98 | 97,True,False,52225348,10,9,vitamina b12 (cianocobalamina)nao misturada,12.72,0.56,0.42,171,13,2015-01-21 16:20:38.198788+00,2015-01-21 16:20:38.198788+00 99 | 98,True,False,36832211,5,14,vitamina b2 (riboflavina)nao misturada,27.14,0.50,0.23,149,13,2015-01-21 16:20:38.198971+00,2015-01-21 16:20:38.198971+00 100 | 99,True,False,68929471,17,4,vodca,92.05,0.01,0.39,4,6,2015-01-21 16:20:38.199155+00,2015-01-21 16:20:38.199155+00 101 | 100,True,False,75671546,9,10,xampus para os cabelos,45.91,0.78,0.39,179,12,2015-01-21 16:20:38.199338+00,2015-01-21 16:20:38.199338+00 102 | -------------------------------------------------------------------------------- /myproject/fixtures/fixtures/pessoas_.csv: -------------------------------------------------------------------------------- 1 | id,gender,treatment,first_name,last_name,cpf,birthday,email,occupation,active,blocked,created_at,modified_at 2 | 1,M,a,Derek,Gordon,96516886642,1981-11-05 06:13:40.606380+00,d.gordon@example.com,10,True,False,2015-01-21 17:01:17.452046+00,2015-01-21 17:01:17.452046+00 3 | 2,M,sr,David,Semaan,51399349844,1993-12-06 03:57:35.662965+00,d.semaan@example.com,36,False,True,2015-01-21 17:01:17.490289+00,2015-01-21 17:01:17.490289+00 4 | 3,F,d,Lucinda,Rumsey,27430595057,1995-11-10 02:57:54.750342+00,l.rumsey@example.com,84,False,True,2015-01-21 17:01:17.497422+00,2015-01-21 17:01:17.497422+00 5 | 4,F,srta,Tara,Bruner,78748811030,1992-12-06 14:34:06.642314+00,t.bruner@example.com,126,False,False,2015-01-21 17:01:17.500155+00,2015-01-21 17:01:17.500155+00 6 | 5,M,e,John,Padgett,73959751451,1993-11-26 12:58:49.199625+00,j.padgett@example.com,116,True,True,2015-01-21 17:01:17.501668+00,2015-01-21 17:01:17.501668+00 7 | 6,F,d,Patricia,Mckissick,83196673306,1994-11-24 02:32:33.059268+00,p.mckissick@example.com,127,False,True,2015-01-21 17:01:17.509532+00,2015-01-21 17:01:17.509532+00 8 | 7,F,sra,Colleen,Morley,75444126224,1993-12-27 03:06:20.132204+00,c.morley@example.com,95,False,False,2015-01-21 17:01:17.512928+00,2015-01-21 17:01:17.512928+00 9 | 8,F,aa,Sharon,Trueman,24595471583,1990-11-08 05:09:19.356248+00,s.trueman@example.com,44,True,False,2015-01-21 17:01:17.530471+00,2015-01-21 17:01:17.530471+00 10 | 9,M,p,Bill,Kindle,46697598956,1996-11-17 05:04:59.177102+00,b.kindle@example.com,120,False,True,2015-01-21 17:01:17.539831+00,2015-01-21 17:01:17.539831+00 11 | 10,M,p,Allen,Fitzgerald,43175610303,1995-11-13 13:03:21.354555+00,a.fitzgerald@example.com,123,True,True,2015-01-21 17:01:17.540543+00,2015-01-21 17:01:17.540543+00 12 | 11,F,srta,Jacquetta,Frain,71810506396,1993-12-23 13:44:15.852259+00,j.frain@example.com,7,False,False,2015-01-21 17:01:17.572316+00,2015-01-21 17:01:17.572316+00 13 | 12,M,sr,Kenneth,Kleber,74534673859,1986-11-23 05:49:48.786092+00,k.kleber@example.com,147,True,False,2015-01-21 17:01:17.602715+00,2015-01-21 17:01:17.602715+00 14 | 13,F,aa,Jasmine,Thompson,68650475047,1980-12-20 03:08:42.022521+00,j.thompson@example.com,146,False,False,2015-01-21 17:01:17.603384+00,2015-01-21 17:01:17.603384+00 15 | 14,F,srta,Monique,Thao,84821376655,1994-12-05 09:58:11.738231+00,m.thao@example.com,94,False,False,2015-01-21 17:01:17.606750+00,2015-01-21 17:01:17.606750+00 16 | 15,M,a,James,Lee,18242522307,1991-12-20 21:38:15.502817+00,j.lee@example.com,99,False,True,2015-01-21 17:01:17.606975+00,2015-01-21 17:01:17.606975+00 17 | 16,F,pa,Linda,Cleek,42584638961,1982-12-28 07:56:02.515465+00,l.cleek@example.com,120,False,False,2015-01-21 17:01:17.618391+00,2015-01-21 17:01:17.618391+00 18 | 17,M,a,Fred,Mccauley,15073086092,1982-12-23 20:57:32.049406+00,f.mccauley@example.com,135,False,True,2015-01-21 17:01:17.620269+00,2015-01-21 17:01:17.620269+00 19 | 18,F,sra,Toni,Crandall,39797691542,1980-12-19 05:19:08.011526+00,t.crandall@example.com,12,True,False,2015-01-21 17:01:17.622598+00,2015-01-21 17:01:17.622598+00 20 | 19,M,dr,Michael,Neumann,00057719043,1987-12-01 22:18:07.085302+00,m.neumann@example.com,89,True,True,2015-01-21 17:01:17.625383+00,2015-01-21 17:01:17.625383+00 21 | 20,F,sra,Linda,Rau,37212806455,1991-12-25 16:07:45.993177+00,l.rau@example.com,131,False,False,2015-01-21 17:01:17.629812+00,2015-01-21 17:01:17.629812+00 22 | 21,M,e,David,Ling,38240779852,1991-11-27 06:22:58.501359+00,d.ling@example.com,98,False,False,2015-01-21 17:01:17.635099+00,2015-01-21 17:01:17.635099+00 23 | 22,F,srta,Gina,Berry,55062767592,1994-12-19 18:26:28.858136+00,g.berry@example.com,9,True,True,2015-01-21 17:01:17.635689+00,2015-01-21 17:01:17.635689+00 24 | 23,F,aa,Carrie,Worthington,65739309088,1986-12-19 08:33:28.022029+00,c.worthington@example.com,18,True,True,2015-01-21 17:01:17.638046+00,2015-01-21 17:01:17.638046+00 25 | 24,F,sra,Yvonne,Graham,45447183470,1994-11-12 21:41:52.974379+00,y.graham@example.com,162,False,True,2015-01-21 17:01:17.638501+00,2015-01-21 17:01:17.638501+00 26 | 25,F,srta,Tonya,Turner,48355412226,1981-12-20 07:45:58.563840+00,t.turner@example.com,109,True,True,2015-01-21 17:01:17.638931+00,2015-01-21 17:01:17.638931+00 27 | 26,F,aa,Antoinette,Kelley,89767763263,1984-12-26 16:52:04.550756+00,a.kelley@example.com,62,True,True,2015-01-21 17:01:17.639691+00,2015-01-21 17:01:17.639691+00 28 | 27,M,dr,Rodrigo,Henderson,78131407955,1993-11-01 17:25:31.071516+00,r.henderson@example.com,144,False,False,2015-01-21 17:01:17.640618+00,2015-01-21 17:01:17.640618+00 29 | 28,M,a,Roy,Churchill,75867203400,1984-12-20 03:54:09.311606+00,r.churchill@example.com,90,False,True,2015-01-21 17:01:17.643521+00,2015-01-21 17:01:17.643521+00 30 | 29,M,e,David,Vizza,71503707463,1984-11-06 12:49:54.520798+00,d.vizza@example.com,23,True,True,2015-01-21 17:01:17.720054+00,2015-01-21 17:01:17.720054+00 31 | 30,M,e,Joseph,Shireman,91680378228,1993-12-11 02:52:03.838194+00,j.shireman@example.com,83,False,True,2015-01-21 17:01:17.743748+00,2015-01-21 17:01:17.743748+00 32 | 31,F,srta,Griselda,Siegal,90155363210,1995-12-13 05:18:14.826018+00,g.siegal@example.com,39,True,False,2015-01-21 17:01:17.768345+00,2015-01-21 17:01:17.768345+00 33 | 32,M,p,Ray,Patty,39089860594,1980-12-18 17:09:57.931698+00,r.patty@example.com,5,False,True,2015-01-21 17:01:17.777555+00,2015-01-21 17:01:17.777555+00 34 | 33,F,d,Sharon,Moreno,70830732713,1986-12-27 14:09:22.230340+00,s.moreno@example.com,138,True,False,2015-01-21 17:01:17.778041+00,2015-01-21 17:01:17.778041+00 35 | 34,M,dr,Peter,Price,68468812645,1993-11-05 05:27:11.896688+00,p.price@example.com,99,True,True,2015-01-21 17:01:17.778353+00,2015-01-21 17:01:17.778353+00 36 | 35,F,pa,Mindy,Sherwood,13690852688,1980-11-11 11:23:01.858167+00,m.sherwood@example.com,84,False,False,2015-01-21 17:01:17.780799+00,2015-01-21 17:01:17.780799+00 37 | 36,F,sra,Renee,Cadena,03289971479,1996-12-11 07:58:50.750350+00,r.cadena@example.com,81,False,True,2015-01-21 17:01:17.786324+00,2015-01-21 17:01:17.786324+00 38 | 37,M,p,Anthony,Harris,33233291632,1996-12-05 17:02:05.386707+00,a.harris@example.com,106,True,False,2015-01-21 17:01:17.786560+00,2015-01-21 17:01:17.786560+00 39 | 38,F,aa,Mona,Brooker,90038384467,1988-11-21 13:45:18.693893+00,m.brooker@example.com,45,True,True,2015-01-21 17:01:17.794144+00,2015-01-21 17:01:17.794144+00 40 | 39,M,e,Timothy,Perez,71870440124,1984-11-10 12:56:33.918809+00,t.perez@example.com,122,False,False,2015-01-21 17:01:17.794407+00,2015-01-21 17:01:17.794407+00 41 | 40,M,e,James,Landstrom,42053388373,1985-11-03 01:13:36.886001+00,j.landstrom@example.com,100,False,True,2015-01-21 17:01:17.831905+00,2015-01-21 17:01:17.831905+00 42 | 41,F,d,Sherry,Garcia,76589853167,1995-11-20 07:55:30.379561+00,s.garcia@example.com,55,True,False,2015-01-21 17:01:17.832302+00,2015-01-21 17:01:17.832302+00 43 | 42,F,pa,Yolanda,Clark,24752765595,1987-11-04 21:17:27.416488+00,y.clark@example.com,2,False,False,2015-01-21 17:01:17.832697+00,2015-01-21 17:01:17.832697+00 44 | 43,F,srta,Joyce,Correll,19192320868,1995-12-02 15:28:46.961266+00,j.correll@example.com,115,True,True,2015-01-21 17:01:17.838189+00,2015-01-21 17:01:17.838189+00 45 | 44,F,srta,Susan,Haskins,41113455112,1989-12-03 03:43:55.250738+00,s.haskins@example.com,34,False,True,2015-01-21 17:01:17.839961+00,2015-01-21 17:01:17.839961+00 46 | 45,F,ea,Ann,Parkhill,60286872257,1984-11-09 17:44:06.516011+00,a.parkhill@example.com,52,True,False,2015-01-21 17:01:17.853423+00,2015-01-21 17:01:17.853423+00 47 | 46,F,aa,Jessica,Niles,78281625228,1986-11-08 07:47:23.011385+00,j.niles@example.com,77,False,False,2015-01-21 17:01:17.856737+00,2015-01-21 17:01:17.856737+00 48 | 47,M,a,Michael,Booton,24814459626,1993-12-23 04:28:09.993190+00,m.booton@example.com,70,False,True,2015-01-21 17:01:17.893485+00,2015-01-21 17:01:17.893485+00 49 | 48,M,dr,Howard,Orton,67154489571,1986-11-13 06:01:58.468138+00,h.orton@example.com,65,True,True,2015-01-21 17:01:17.898646+00,2015-01-21 17:01:17.898646+00 50 | 49,F,pa,Kirsten,Moore,57782248992,1991-12-04 12:46:07.636719+00,k.moore@example.com,68,False,False,2015-01-21 17:01:17.899461+00,2015-01-21 17:01:17.899461+00 51 | 50,M,dr,Woodrow,Rector,61219520808,1982-12-13 04:54:01.290809+00,w.rector@example.com,113,False,False,2015-01-21 17:01:17.902120+00,2015-01-21 17:01:17.902120+00 52 | 51,M,a,Michael,Moore,98701521365,1993-12-28 16:49:32.440934+00,m.moore@example.com,16,False,False,2015-01-21 17:01:17.902331+00,2015-01-21 17:01:17.902331+00 53 | 52,F,aa,Rose,Brown,71197739392,1981-12-08 07:20:52.324477+00,r.brown@example.com,85,False,False,2015-01-21 17:01:17.902596+00,2015-01-21 17:01:17.902596+00 54 | 53,M,e,James,Burbage,22329008599,1991-12-06 18:25:28.402999+00,j.burbage@example.com,49,True,False,2015-01-21 17:01:17.919274+00,2015-01-21 17:01:17.919274+00 55 | 54,M,e,Christopher,Dempsey,40599331596,1983-12-18 04:08:24.693231+00,c.dempsey@example.com,20,False,True,2015-01-21 17:01:17.920790+00,2015-01-21 17:01:17.920790+00 56 | 55,F,sra,Kathleen,Yates,43338299932,1990-12-27 05:59:58.778671+00,k.yates@example.com,35,False,False,2015-01-21 17:01:17.921405+00,2015-01-21 17:01:17.921405+00 57 | 56,M,p,Martin,Washington,18044146627,1992-12-20 23:56:14.746381+00,m.washington@example.com,91,True,False,2015-01-21 17:01:17.921767+00,2015-01-21 17:01:17.921767+00 58 | 57,M,dr,Arnoldo,Lincoln,38771430044,1991-12-07 10:54:15.066853+00,a.lincoln@example.com,73,False,True,2015-01-21 17:01:17.925184+00,2015-01-21 17:01:17.925184+00 59 | 58,M,p,Carl,Brass,34102960317,1996-12-10 21:40:56.657352+00,c.brass@example.com,153,False,False,2015-01-21 17:01:17.939368+00,2015-01-21 17:01:17.939368+00 60 | 59,F,sra,Emma,Brown,72279851499,1983-11-09 17:35:07.496285+00,e.brown@example.com,92,False,False,2015-01-21 17:01:17.939767+00,2015-01-21 17:01:17.939767+00 61 | 60,F,pa,Bernice,Bassett,60268729630,1994-12-04 06:25:58.228095+00,b.bassett@example.com,46,True,True,2015-01-21 17:01:17.941618+00,2015-01-21 17:01:17.941618+00 62 | 61,F,pa,Marie,Delucia,90158701635,1994-11-13 09:20:57.737801+00,m.delucia@example.com,61,False,True,2015-01-21 17:01:17.952373+00,2015-01-21 17:01:17.952373+00 63 | 62,M,e,Walter,Sharp,43401105724,1980-12-16 20:42:12.443558+00,w.sharp@example.com,16,False,True,2015-01-21 17:01:17.952979+00,2015-01-21 17:01:17.952979+00 64 | 63,M,a,Edward,Gonzalez,94944480743,1981-12-19 11:25:51.911142+00,e.gonzalez@example.com,105,True,True,2015-01-21 17:01:17.953232+00,2015-01-21 17:01:17.953232+00 65 | 64,F,srta,Sharon,Ortega,66963826378,1991-12-17 09:54:16.639302+00,s.ortega@example.com,51,False,True,2015-01-21 17:01:17.953812+00,2015-01-21 17:01:17.953812+00 66 | 65,F,srta,Rebecca,Allen,24382053396,1987-12-18 03:14:08.861650+00,r.allen@example.com,45,False,False,2015-01-21 17:01:17.954066+00,2015-01-21 17:01:17.954066+00 67 | 66,F,ea,Mary,Ripley,71727926278,1994-11-09 19:46:43.886418+00,m.ripley@example.com,33,True,True,2015-01-21 17:01:17.957922+00,2015-01-21 17:01:17.957922+00 68 | 67,F,srta,Nellie,Tucker,31490327890,1993-11-03 01:55:37.247005+00,n.tucker@example.com,9,False,True,2015-01-21 17:01:17.958474+00,2015-01-21 17:01:17.958474+00 69 | 68,M,e,Archie,Ahn,55037960353,1996-11-02 22:09:26.516395+00,a.ahn@example.com,112,False,False,2015-01-21 17:01:17.964256+00,2015-01-21 17:01:17.964256+00 70 | 69,F,ea,Betty,Daniel,21149178933,1993-12-06 18:43:09.249616+00,b.daniel@example.com,152,False,True,2015-01-21 17:01:17.964791+00,2015-01-21 17:01:17.964791+00 71 | 70,M,dr,Leonard,Barbara,62755464547,1988-12-23 14:59:27.340152+00,l.barbara@example.com,106,True,False,2015-01-21 17:01:17.976272+00,2015-01-21 17:01:17.976272+00 72 | 71,M,e,Robert,Keating,69919518137,1980-12-04 09:59:22.710895+00,r.keating@example.com,55,False,False,2015-01-21 17:01:17.978818+00,2015-01-21 17:01:17.978818+00 73 | 72,M,dr,Edwin,Boore,17218172114,1990-12-11 18:36:37.197558+00,e.boore@example.com,142,False,False,2015-01-21 17:01:18.022372+00,2015-01-21 17:01:18.022372+00 74 | 73,F,d,Kara,Hall,46998996718,1984-11-13 10:58:12.081656+00,k.hall@example.com,3,False,False,2015-01-21 17:01:18.023033+00,2015-01-21 17:01:18.023033+00 75 | 74,F,pa,Diane,Chu,11651388484,1985-11-14 12:34:04.746205+00,d.chu@example.com,162,True,False,2015-01-21 17:01:18.025213+00,2015-01-21 17:01:18.025213+00 76 | 75,F,pa,Joannie,Nicholson,55962068837,1990-11-03 19:13:36.626257+00,j.nicholson@example.com,29,False,True,2015-01-21 17:01:18.028890+00,2015-01-21 17:01:18.028890+00 77 | 76,F,d,Dannette,Lupton,10256165814,1985-11-25 15:11:25.245249+00,d.lupton@example.com,84,False,True,2015-01-21 17:01:18.044495+00,2015-01-21 17:01:18.044495+00 78 | 77,F,pa,Joan,Smith,65518214388,1995-12-15 21:40:37.563226+00,j.smith@example.com,141,False,True,2015-01-21 17:01:18.044805+00,2015-01-21 17:01:18.044805+00 79 | 78,M,e,Dan,Fulton,02664270926,1994-12-08 14:27:43.629914+00,d.fulton@example.com,110,False,True,2015-01-21 17:01:18.046004+00,2015-01-21 17:01:18.046004+00 80 | 79,F,ea,Emma,Collins,80593237649,1989-12-13 10:04:01.289317+00,e.collins@example.com,124,True,True,2015-01-21 17:01:18.046373+00,2015-01-21 17:01:18.046373+00 81 | 80,M,e,Jeffrey,Viens,56112132217,1991-11-11 13:29:56.754732+00,j.viens@example.com,87,False,True,2015-01-21 17:01:18.058047+00,2015-01-21 17:01:18.058047+00 82 | 81,M,a,Joel,Marshall,38115393898,1986-12-23 07:48:21.260823+00,j.marshall@example.com,104,True,True,2015-01-21 17:01:18.058490+00,2015-01-21 17:01:18.058490+00 83 | 82,F,aa,Jennifer,Roberts,67619468856,1984-11-10 01:14:24.128242+00,j.roberts@example.com,95,False,False,2015-01-21 17:01:18.058732+00,2015-01-21 17:01:18.058732+00 84 | 83,F,pa,Mildred,Landfair,70751605170,1987-11-09 05:19:51.770413+00,m.landfair@example.com,8,False,False,2015-01-21 17:01:18.113356+00,2015-01-21 17:01:18.113356+00 85 | 84,F,aa,Margret,Walden,94155185845,1985-12-27 05:40:33.481872+00,m.walden@example.com,136,True,False,2015-01-21 17:01:18.115312+00,2015-01-21 17:01:18.115312+00 86 | 85,M,dr,Chris,Medlin,44592689327,1995-11-12 09:36:30.156110+00,c.medlin@example.com,21,True,True,2015-01-21 17:01:18.118869+00,2015-01-21 17:01:18.118869+00 87 | 86,M,p,Thomas,Hane,35175364507,1980-11-13 03:55:18.686511+00,t.hane@example.com,133,False,True,2015-01-21 17:01:18.140964+00,2015-01-21 17:01:18.140964+00 88 | 87,M,e,Brian,Sweat,56302194036,1991-12-10 01:02:42.783863+00,b.sweat@example.com,104,True,True,2015-01-21 17:01:18.144316+00,2015-01-21 17:01:18.144316+00 89 | 88,M,e,David,Stewart,67642777580,1983-11-24 19:43:11.817350+00,d.stewart@example.com,128,True,True,2015-01-21 17:01:18.144573+00,2015-01-21 17:01:18.144573+00 90 | 89,F,d,Alexandra,Mccormick,03760379079,1985-12-10 18:49:08.120393+00,a.mccormick@example.com,68,False,False,2015-01-21 17:01:18.145587+00,2015-01-21 17:01:18.145587+00 91 | 90,M,sr,Richard,Hall,68072321533,1984-11-03 04:08:40.789814+00,r.hall@example.com,23,False,False,2015-01-21 17:01:18.145822+00,2015-01-21 17:01:18.145822+00 92 | 91,M,dr,Robert,Kozakiewicz,53686686503,1986-11-10 11:47:39.293797+00,r.kozakiewicz@example.com,132,False,False,2015-01-21 17:01:18.193473+00,2015-01-21 17:01:18.193473+00 93 | 92,F,srta,Jeanne,Gothard,84233911905,1989-11-20 13:44:28.999583+00,j.gothard@example.com,42,True,False,2015-01-21 17:01:18.210564+00,2015-01-21 17:01:18.210564+00 94 | 93,M,dr,Melvin,Styons,78345167312,1989-12-20 11:30:38.843438+00,m.styons@example.com,73,False,False,2015-01-21 17:01:18.241692+00,2015-01-21 17:01:18.241692+00 95 | 94,F,sra,Janet,Thompson,72111893427,1984-12-19 15:18:39.387667+00,j.thompson@example.com,136,False,True,2015-01-21 17:01:18.242009+00,2015-01-21 17:01:18.242009+00 96 | 95,M,e,Adrian,Stith,96797902639,1994-11-05 04:39:44.750734+00,a.stith@example.com,152,True,False,2015-01-21 17:01:18.248039+00,2015-01-21 17:01:18.248039+00 97 | 96,F,ea,Rita,Gajate,22443428298,1990-12-21 01:01:48.537242+00,r.gajate@example.com,97,True,True,2015-01-21 17:01:18.303961+00,2015-01-21 17:01:18.303961+00 98 | 97,M,p,Keenan,Worthington,09277622963,1989-11-14 23:30:51.171081+00,k.worthington@example.com,145,True,True,2015-01-21 17:01:18.307280+00,2015-01-21 17:01:18.307280+00 99 | 98,F,ea,Marian,Lipsey,17223077720,1985-12-06 04:48:35.895101+00,m.lipsey@example.com,84,False,True,2015-01-21 17:01:18.315185+00,2015-01-21 17:01:18.315185+00 100 | 99,F,ea,Barbara,Yates,33828527115,1995-11-24 21:33:23.673107+00,b.yates@example.com,146,False,False,2015-01-21 17:01:18.315829+00,2015-01-21 17:01:18.315829+00 101 | 100,F,srta,Katrina,Duskey,51257337533,1985-12-24 03:23:47.340678+00,k.duskey@example.com,2,True,True,2015-01-21 17:01:18.372150+00,2015-01-21 17:01:18.372150+00 102 | -------------------------------------------------------------------------------- /myproject/core/static/font-awesome-4.2.0/less/variables.less: -------------------------------------------------------------------------------- 1 | // Variables 2 | // -------------------------- 3 | 4 | @fa-font-path: "../fonts"; 5 | //@fa-font-path: "//netdna.bootstrapcdn.com/font-awesome/4.2.0/fonts"; // for referencing Bootstrap CDN font files directly 6 | @fa-css-prefix: fa; 7 | @fa-version: "4.2.0"; 8 | @fa-border-color: #eee; 9 | @fa-inverse: #fff; 10 | @fa-li-width: (30em / 14); 11 | 12 | @fa-var-adjust: "\f042"; 13 | @fa-var-adn: "\f170"; 14 | @fa-var-align-center: "\f037"; 15 | @fa-var-align-justify: "\f039"; 16 | @fa-var-align-left: "\f036"; 17 | @fa-var-align-right: "\f038"; 18 | @fa-var-ambulance: "\f0f9"; 19 | @fa-var-anchor: "\f13d"; 20 | @fa-var-android: "\f17b"; 21 | @fa-var-angellist: "\f209"; 22 | @fa-var-angle-double-down: "\f103"; 23 | @fa-var-angle-double-left: "\f100"; 24 | @fa-var-angle-double-right: "\f101"; 25 | @fa-var-angle-double-up: "\f102"; 26 | @fa-var-angle-down: "\f107"; 27 | @fa-var-angle-left: "\f104"; 28 | @fa-var-angle-right: "\f105"; 29 | @fa-var-angle-up: "\f106"; 30 | @fa-var-apple: "\f179"; 31 | @fa-var-archive: "\f187"; 32 | @fa-var-area-chart: "\f1fe"; 33 | @fa-var-arrow-circle-down: "\f0ab"; 34 | @fa-var-arrow-circle-left: "\f0a8"; 35 | @fa-var-arrow-circle-o-down: "\f01a"; 36 | @fa-var-arrow-circle-o-left: "\f190"; 37 | @fa-var-arrow-circle-o-right: "\f18e"; 38 | @fa-var-arrow-circle-o-up: "\f01b"; 39 | @fa-var-arrow-circle-right: "\f0a9"; 40 | @fa-var-arrow-circle-up: "\f0aa"; 41 | @fa-var-arrow-down: "\f063"; 42 | @fa-var-arrow-left: "\f060"; 43 | @fa-var-arrow-right: "\f061"; 44 | @fa-var-arrow-up: "\f062"; 45 | @fa-var-arrows: "\f047"; 46 | @fa-var-arrows-alt: "\f0b2"; 47 | @fa-var-arrows-h: "\f07e"; 48 | @fa-var-arrows-v: "\f07d"; 49 | @fa-var-asterisk: "\f069"; 50 | @fa-var-at: "\f1fa"; 51 | @fa-var-automobile: "\f1b9"; 52 | @fa-var-backward: "\f04a"; 53 | @fa-var-ban: "\f05e"; 54 | @fa-var-bank: "\f19c"; 55 | @fa-var-bar-chart: "\f080"; 56 | @fa-var-bar-chart-o: "\f080"; 57 | @fa-var-barcode: "\f02a"; 58 | @fa-var-bars: "\f0c9"; 59 | @fa-var-beer: "\f0fc"; 60 | @fa-var-behance: "\f1b4"; 61 | @fa-var-behance-square: "\f1b5"; 62 | @fa-var-bell: "\f0f3"; 63 | @fa-var-bell-o: "\f0a2"; 64 | @fa-var-bell-slash: "\f1f6"; 65 | @fa-var-bell-slash-o: "\f1f7"; 66 | @fa-var-bicycle: "\f206"; 67 | @fa-var-binoculars: "\f1e5"; 68 | @fa-var-birthday-cake: "\f1fd"; 69 | @fa-var-bitbucket: "\f171"; 70 | @fa-var-bitbucket-square: "\f172"; 71 | @fa-var-bitcoin: "\f15a"; 72 | @fa-var-bold: "\f032"; 73 | @fa-var-bolt: "\f0e7"; 74 | @fa-var-bomb: "\f1e2"; 75 | @fa-var-book: "\f02d"; 76 | @fa-var-bookmark: "\f02e"; 77 | @fa-var-bookmark-o: "\f097"; 78 | @fa-var-briefcase: "\f0b1"; 79 | @fa-var-btc: "\f15a"; 80 | @fa-var-bug: "\f188"; 81 | @fa-var-building: "\f1ad"; 82 | @fa-var-building-o: "\f0f7"; 83 | @fa-var-bullhorn: "\f0a1"; 84 | @fa-var-bullseye: "\f140"; 85 | @fa-var-bus: "\f207"; 86 | @fa-var-cab: "\f1ba"; 87 | @fa-var-calculator: "\f1ec"; 88 | @fa-var-calendar: "\f073"; 89 | @fa-var-calendar-o: "\f133"; 90 | @fa-var-camera: "\f030"; 91 | @fa-var-camera-retro: "\f083"; 92 | @fa-var-car: "\f1b9"; 93 | @fa-var-caret-down: "\f0d7"; 94 | @fa-var-caret-left: "\f0d9"; 95 | @fa-var-caret-right: "\f0da"; 96 | @fa-var-caret-square-o-down: "\f150"; 97 | @fa-var-caret-square-o-left: "\f191"; 98 | @fa-var-caret-square-o-right: "\f152"; 99 | @fa-var-caret-square-o-up: "\f151"; 100 | @fa-var-caret-up: "\f0d8"; 101 | @fa-var-cc: "\f20a"; 102 | @fa-var-cc-amex: "\f1f3"; 103 | @fa-var-cc-discover: "\f1f2"; 104 | @fa-var-cc-mastercard: "\f1f1"; 105 | @fa-var-cc-paypal: "\f1f4"; 106 | @fa-var-cc-stripe: "\f1f5"; 107 | @fa-var-cc-visa: "\f1f0"; 108 | @fa-var-certificate: "\f0a3"; 109 | @fa-var-chain: "\f0c1"; 110 | @fa-var-chain-broken: "\f127"; 111 | @fa-var-check: "\f00c"; 112 | @fa-var-check-circle: "\f058"; 113 | @fa-var-check-circle-o: "\f05d"; 114 | @fa-var-check-square: "\f14a"; 115 | @fa-var-check-square-o: "\f046"; 116 | @fa-var-chevron-circle-down: "\f13a"; 117 | @fa-var-chevron-circle-left: "\f137"; 118 | @fa-var-chevron-circle-right: "\f138"; 119 | @fa-var-chevron-circle-up: "\f139"; 120 | @fa-var-chevron-down: "\f078"; 121 | @fa-var-chevron-left: "\f053"; 122 | @fa-var-chevron-right: "\f054"; 123 | @fa-var-chevron-up: "\f077"; 124 | @fa-var-child: "\f1ae"; 125 | @fa-var-circle: "\f111"; 126 | @fa-var-circle-o: "\f10c"; 127 | @fa-var-circle-o-notch: "\f1ce"; 128 | @fa-var-circle-thin: "\f1db"; 129 | @fa-var-clipboard: "\f0ea"; 130 | @fa-var-clock-o: "\f017"; 131 | @fa-var-close: "\f00d"; 132 | @fa-var-cloud: "\f0c2"; 133 | @fa-var-cloud-download: "\f0ed"; 134 | @fa-var-cloud-upload: "\f0ee"; 135 | @fa-var-cny: "\f157"; 136 | @fa-var-code: "\f121"; 137 | @fa-var-code-fork: "\f126"; 138 | @fa-var-codepen: "\f1cb"; 139 | @fa-var-coffee: "\f0f4"; 140 | @fa-var-cog: "\f013"; 141 | @fa-var-cogs: "\f085"; 142 | @fa-var-columns: "\f0db"; 143 | @fa-var-comment: "\f075"; 144 | @fa-var-comment-o: "\f0e5"; 145 | @fa-var-comments: "\f086"; 146 | @fa-var-comments-o: "\f0e6"; 147 | @fa-var-compass: "\f14e"; 148 | @fa-var-compress: "\f066"; 149 | @fa-var-copy: "\f0c5"; 150 | @fa-var-copyright: "\f1f9"; 151 | @fa-var-credit-card: "\f09d"; 152 | @fa-var-crop: "\f125"; 153 | @fa-var-crosshairs: "\f05b"; 154 | @fa-var-css3: "\f13c"; 155 | @fa-var-cube: "\f1b2"; 156 | @fa-var-cubes: "\f1b3"; 157 | @fa-var-cut: "\f0c4"; 158 | @fa-var-cutlery: "\f0f5"; 159 | @fa-var-dashboard: "\f0e4"; 160 | @fa-var-database: "\f1c0"; 161 | @fa-var-dedent: "\f03b"; 162 | @fa-var-delicious: "\f1a5"; 163 | @fa-var-desktop: "\f108"; 164 | @fa-var-deviantart: "\f1bd"; 165 | @fa-var-digg: "\f1a6"; 166 | @fa-var-dollar: "\f155"; 167 | @fa-var-dot-circle-o: "\f192"; 168 | @fa-var-download: "\f019"; 169 | @fa-var-dribbble: "\f17d"; 170 | @fa-var-dropbox: "\f16b"; 171 | @fa-var-drupal: "\f1a9"; 172 | @fa-var-edit: "\f044"; 173 | @fa-var-eject: "\f052"; 174 | @fa-var-ellipsis-h: "\f141"; 175 | @fa-var-ellipsis-v: "\f142"; 176 | @fa-var-empire: "\f1d1"; 177 | @fa-var-envelope: "\f0e0"; 178 | @fa-var-envelope-o: "\f003"; 179 | @fa-var-envelope-square: "\f199"; 180 | @fa-var-eraser: "\f12d"; 181 | @fa-var-eur: "\f153"; 182 | @fa-var-euro: "\f153"; 183 | @fa-var-exchange: "\f0ec"; 184 | @fa-var-exclamation: "\f12a"; 185 | @fa-var-exclamation-circle: "\f06a"; 186 | @fa-var-exclamation-triangle: "\f071"; 187 | @fa-var-expand: "\f065"; 188 | @fa-var-external-link: "\f08e"; 189 | @fa-var-external-link-square: "\f14c"; 190 | @fa-var-eye: "\f06e"; 191 | @fa-var-eye-slash: "\f070"; 192 | @fa-var-eyedropper: "\f1fb"; 193 | @fa-var-facebook: "\f09a"; 194 | @fa-var-facebook-square: "\f082"; 195 | @fa-var-fast-backward: "\f049"; 196 | @fa-var-fast-forward: "\f050"; 197 | @fa-var-fax: "\f1ac"; 198 | @fa-var-female: "\f182"; 199 | @fa-var-fighter-jet: "\f0fb"; 200 | @fa-var-file: "\f15b"; 201 | @fa-var-file-archive-o: "\f1c6"; 202 | @fa-var-file-audio-o: "\f1c7"; 203 | @fa-var-file-code-o: "\f1c9"; 204 | @fa-var-file-excel-o: "\f1c3"; 205 | @fa-var-file-image-o: "\f1c5"; 206 | @fa-var-file-movie-o: "\f1c8"; 207 | @fa-var-file-o: "\f016"; 208 | @fa-var-file-pdf-o: "\f1c1"; 209 | @fa-var-file-photo-o: "\f1c5"; 210 | @fa-var-file-picture-o: "\f1c5"; 211 | @fa-var-file-powerpoint-o: "\f1c4"; 212 | @fa-var-file-sound-o: "\f1c7"; 213 | @fa-var-file-text: "\f15c"; 214 | @fa-var-file-text-o: "\f0f6"; 215 | @fa-var-file-video-o: "\f1c8"; 216 | @fa-var-file-word-o: "\f1c2"; 217 | @fa-var-file-zip-o: "\f1c6"; 218 | @fa-var-files-o: "\f0c5"; 219 | @fa-var-film: "\f008"; 220 | @fa-var-filter: "\f0b0"; 221 | @fa-var-fire: "\f06d"; 222 | @fa-var-fire-extinguisher: "\f134"; 223 | @fa-var-flag: "\f024"; 224 | @fa-var-flag-checkered: "\f11e"; 225 | @fa-var-flag-o: "\f11d"; 226 | @fa-var-flash: "\f0e7"; 227 | @fa-var-flask: "\f0c3"; 228 | @fa-var-flickr: "\f16e"; 229 | @fa-var-floppy-o: "\f0c7"; 230 | @fa-var-folder: "\f07b"; 231 | @fa-var-folder-o: "\f114"; 232 | @fa-var-folder-open: "\f07c"; 233 | @fa-var-folder-open-o: "\f115"; 234 | @fa-var-font: "\f031"; 235 | @fa-var-forward: "\f04e"; 236 | @fa-var-foursquare: "\f180"; 237 | @fa-var-frown-o: "\f119"; 238 | @fa-var-futbol-o: "\f1e3"; 239 | @fa-var-gamepad: "\f11b"; 240 | @fa-var-gavel: "\f0e3"; 241 | @fa-var-gbp: "\f154"; 242 | @fa-var-ge: "\f1d1"; 243 | @fa-var-gear: "\f013"; 244 | @fa-var-gears: "\f085"; 245 | @fa-var-gift: "\f06b"; 246 | @fa-var-git: "\f1d3"; 247 | @fa-var-git-square: "\f1d2"; 248 | @fa-var-github: "\f09b"; 249 | @fa-var-github-alt: "\f113"; 250 | @fa-var-github-square: "\f092"; 251 | @fa-var-gittip: "\f184"; 252 | @fa-var-glass: "\f000"; 253 | @fa-var-globe: "\f0ac"; 254 | @fa-var-google: "\f1a0"; 255 | @fa-var-google-plus: "\f0d5"; 256 | @fa-var-google-plus-square: "\f0d4"; 257 | @fa-var-google-wallet: "\f1ee"; 258 | @fa-var-graduation-cap: "\f19d"; 259 | @fa-var-group: "\f0c0"; 260 | @fa-var-h-square: "\f0fd"; 261 | @fa-var-hacker-news: "\f1d4"; 262 | @fa-var-hand-o-down: "\f0a7"; 263 | @fa-var-hand-o-left: "\f0a5"; 264 | @fa-var-hand-o-right: "\f0a4"; 265 | @fa-var-hand-o-up: "\f0a6"; 266 | @fa-var-hdd-o: "\f0a0"; 267 | @fa-var-header: "\f1dc"; 268 | @fa-var-headphones: "\f025"; 269 | @fa-var-heart: "\f004"; 270 | @fa-var-heart-o: "\f08a"; 271 | @fa-var-history: "\f1da"; 272 | @fa-var-home: "\f015"; 273 | @fa-var-hospital-o: "\f0f8"; 274 | @fa-var-html5: "\f13b"; 275 | @fa-var-ils: "\f20b"; 276 | @fa-var-image: "\f03e"; 277 | @fa-var-inbox: "\f01c"; 278 | @fa-var-indent: "\f03c"; 279 | @fa-var-info: "\f129"; 280 | @fa-var-info-circle: "\f05a"; 281 | @fa-var-inr: "\f156"; 282 | @fa-var-instagram: "\f16d"; 283 | @fa-var-institution: "\f19c"; 284 | @fa-var-ioxhost: "\f208"; 285 | @fa-var-italic: "\f033"; 286 | @fa-var-joomla: "\f1aa"; 287 | @fa-var-jpy: "\f157"; 288 | @fa-var-jsfiddle: "\f1cc"; 289 | @fa-var-key: "\f084"; 290 | @fa-var-keyboard-o: "\f11c"; 291 | @fa-var-krw: "\f159"; 292 | @fa-var-language: "\f1ab"; 293 | @fa-var-laptop: "\f109"; 294 | @fa-var-lastfm: "\f202"; 295 | @fa-var-lastfm-square: "\f203"; 296 | @fa-var-leaf: "\f06c"; 297 | @fa-var-legal: "\f0e3"; 298 | @fa-var-lemon-o: "\f094"; 299 | @fa-var-level-down: "\f149"; 300 | @fa-var-level-up: "\f148"; 301 | @fa-var-life-bouy: "\f1cd"; 302 | @fa-var-life-buoy: "\f1cd"; 303 | @fa-var-life-ring: "\f1cd"; 304 | @fa-var-life-saver: "\f1cd"; 305 | @fa-var-lightbulb-o: "\f0eb"; 306 | @fa-var-line-chart: "\f201"; 307 | @fa-var-link: "\f0c1"; 308 | @fa-var-linkedin: "\f0e1"; 309 | @fa-var-linkedin-square: "\f08c"; 310 | @fa-var-linux: "\f17c"; 311 | @fa-var-list: "\f03a"; 312 | @fa-var-list-alt: "\f022"; 313 | @fa-var-list-ol: "\f0cb"; 314 | @fa-var-list-ul: "\f0ca"; 315 | @fa-var-location-arrow: "\f124"; 316 | @fa-var-lock: "\f023"; 317 | @fa-var-long-arrow-down: "\f175"; 318 | @fa-var-long-arrow-left: "\f177"; 319 | @fa-var-long-arrow-right: "\f178"; 320 | @fa-var-long-arrow-up: "\f176"; 321 | @fa-var-magic: "\f0d0"; 322 | @fa-var-magnet: "\f076"; 323 | @fa-var-mail-forward: "\f064"; 324 | @fa-var-mail-reply: "\f112"; 325 | @fa-var-mail-reply-all: "\f122"; 326 | @fa-var-male: "\f183"; 327 | @fa-var-map-marker: "\f041"; 328 | @fa-var-maxcdn: "\f136"; 329 | @fa-var-meanpath: "\f20c"; 330 | @fa-var-medkit: "\f0fa"; 331 | @fa-var-meh-o: "\f11a"; 332 | @fa-var-microphone: "\f130"; 333 | @fa-var-microphone-slash: "\f131"; 334 | @fa-var-minus: "\f068"; 335 | @fa-var-minus-circle: "\f056"; 336 | @fa-var-minus-square: "\f146"; 337 | @fa-var-minus-square-o: "\f147"; 338 | @fa-var-mobile: "\f10b"; 339 | @fa-var-mobile-phone: "\f10b"; 340 | @fa-var-money: "\f0d6"; 341 | @fa-var-moon-o: "\f186"; 342 | @fa-var-mortar-board: "\f19d"; 343 | @fa-var-music: "\f001"; 344 | @fa-var-navicon: "\f0c9"; 345 | @fa-var-newspaper-o: "\f1ea"; 346 | @fa-var-openid: "\f19b"; 347 | @fa-var-outdent: "\f03b"; 348 | @fa-var-pagelines: "\f18c"; 349 | @fa-var-paint-brush: "\f1fc"; 350 | @fa-var-paper-plane: "\f1d8"; 351 | @fa-var-paper-plane-o: "\f1d9"; 352 | @fa-var-paperclip: "\f0c6"; 353 | @fa-var-paragraph: "\f1dd"; 354 | @fa-var-paste: "\f0ea"; 355 | @fa-var-pause: "\f04c"; 356 | @fa-var-paw: "\f1b0"; 357 | @fa-var-paypal: "\f1ed"; 358 | @fa-var-pencil: "\f040"; 359 | @fa-var-pencil-square: "\f14b"; 360 | @fa-var-pencil-square-o: "\f044"; 361 | @fa-var-phone: "\f095"; 362 | @fa-var-phone-square: "\f098"; 363 | @fa-var-photo: "\f03e"; 364 | @fa-var-picture-o: "\f03e"; 365 | @fa-var-pie-chart: "\f200"; 366 | @fa-var-pied-piper: "\f1a7"; 367 | @fa-var-pied-piper-alt: "\f1a8"; 368 | @fa-var-pinterest: "\f0d2"; 369 | @fa-var-pinterest-square: "\f0d3"; 370 | @fa-var-plane: "\f072"; 371 | @fa-var-play: "\f04b"; 372 | @fa-var-play-circle: "\f144"; 373 | @fa-var-play-circle-o: "\f01d"; 374 | @fa-var-plug: "\f1e6"; 375 | @fa-var-plus: "\f067"; 376 | @fa-var-plus-circle: "\f055"; 377 | @fa-var-plus-square: "\f0fe"; 378 | @fa-var-plus-square-o: "\f196"; 379 | @fa-var-power-off: "\f011"; 380 | @fa-var-print: "\f02f"; 381 | @fa-var-puzzle-piece: "\f12e"; 382 | @fa-var-qq: "\f1d6"; 383 | @fa-var-qrcode: "\f029"; 384 | @fa-var-question: "\f128"; 385 | @fa-var-question-circle: "\f059"; 386 | @fa-var-quote-left: "\f10d"; 387 | @fa-var-quote-right: "\f10e"; 388 | @fa-var-ra: "\f1d0"; 389 | @fa-var-random: "\f074"; 390 | @fa-var-rebel: "\f1d0"; 391 | @fa-var-recycle: "\f1b8"; 392 | @fa-var-reddit: "\f1a1"; 393 | @fa-var-reddit-square: "\f1a2"; 394 | @fa-var-refresh: "\f021"; 395 | @fa-var-remove: "\f00d"; 396 | @fa-var-renren: "\f18b"; 397 | @fa-var-reorder: "\f0c9"; 398 | @fa-var-repeat: "\f01e"; 399 | @fa-var-reply: "\f112"; 400 | @fa-var-reply-all: "\f122"; 401 | @fa-var-retweet: "\f079"; 402 | @fa-var-rmb: "\f157"; 403 | @fa-var-road: "\f018"; 404 | @fa-var-rocket: "\f135"; 405 | @fa-var-rotate-left: "\f0e2"; 406 | @fa-var-rotate-right: "\f01e"; 407 | @fa-var-rouble: "\f158"; 408 | @fa-var-rss: "\f09e"; 409 | @fa-var-rss-square: "\f143"; 410 | @fa-var-rub: "\f158"; 411 | @fa-var-ruble: "\f158"; 412 | @fa-var-rupee: "\f156"; 413 | @fa-var-save: "\f0c7"; 414 | @fa-var-scissors: "\f0c4"; 415 | @fa-var-search: "\f002"; 416 | @fa-var-search-minus: "\f010"; 417 | @fa-var-search-plus: "\f00e"; 418 | @fa-var-send: "\f1d8"; 419 | @fa-var-send-o: "\f1d9"; 420 | @fa-var-share: "\f064"; 421 | @fa-var-share-alt: "\f1e0"; 422 | @fa-var-share-alt-square: "\f1e1"; 423 | @fa-var-share-square: "\f14d"; 424 | @fa-var-share-square-o: "\f045"; 425 | @fa-var-shekel: "\f20b"; 426 | @fa-var-sheqel: "\f20b"; 427 | @fa-var-shield: "\f132"; 428 | @fa-var-shopping-cart: "\f07a"; 429 | @fa-var-sign-in: "\f090"; 430 | @fa-var-sign-out: "\f08b"; 431 | @fa-var-signal: "\f012"; 432 | @fa-var-sitemap: "\f0e8"; 433 | @fa-var-skype: "\f17e"; 434 | @fa-var-slack: "\f198"; 435 | @fa-var-sliders: "\f1de"; 436 | @fa-var-slideshare: "\f1e7"; 437 | @fa-var-smile-o: "\f118"; 438 | @fa-var-soccer-ball-o: "\f1e3"; 439 | @fa-var-sort: "\f0dc"; 440 | @fa-var-sort-alpha-asc: "\f15d"; 441 | @fa-var-sort-alpha-desc: "\f15e"; 442 | @fa-var-sort-amount-asc: "\f160"; 443 | @fa-var-sort-amount-desc: "\f161"; 444 | @fa-var-sort-asc: "\f0de"; 445 | @fa-var-sort-desc: "\f0dd"; 446 | @fa-var-sort-down: "\f0dd"; 447 | @fa-var-sort-numeric-asc: "\f162"; 448 | @fa-var-sort-numeric-desc: "\f163"; 449 | @fa-var-sort-up: "\f0de"; 450 | @fa-var-soundcloud: "\f1be"; 451 | @fa-var-space-shuttle: "\f197"; 452 | @fa-var-spinner: "\f110"; 453 | @fa-var-spoon: "\f1b1"; 454 | @fa-var-spotify: "\f1bc"; 455 | @fa-var-square: "\f0c8"; 456 | @fa-var-square-o: "\f096"; 457 | @fa-var-stack-exchange: "\f18d"; 458 | @fa-var-stack-overflow: "\f16c"; 459 | @fa-var-star: "\f005"; 460 | @fa-var-star-half: "\f089"; 461 | @fa-var-star-half-empty: "\f123"; 462 | @fa-var-star-half-full: "\f123"; 463 | @fa-var-star-half-o: "\f123"; 464 | @fa-var-star-o: "\f006"; 465 | @fa-var-steam: "\f1b6"; 466 | @fa-var-steam-square: "\f1b7"; 467 | @fa-var-step-backward: "\f048"; 468 | @fa-var-step-forward: "\f051"; 469 | @fa-var-stethoscope: "\f0f1"; 470 | @fa-var-stop: "\f04d"; 471 | @fa-var-strikethrough: "\f0cc"; 472 | @fa-var-stumbleupon: "\f1a4"; 473 | @fa-var-stumbleupon-circle: "\f1a3"; 474 | @fa-var-subscript: "\f12c"; 475 | @fa-var-suitcase: "\f0f2"; 476 | @fa-var-sun-o: "\f185"; 477 | @fa-var-superscript: "\f12b"; 478 | @fa-var-support: "\f1cd"; 479 | @fa-var-table: "\f0ce"; 480 | @fa-var-tablet: "\f10a"; 481 | @fa-var-tachometer: "\f0e4"; 482 | @fa-var-tag: "\f02b"; 483 | @fa-var-tags: "\f02c"; 484 | @fa-var-tasks: "\f0ae"; 485 | @fa-var-taxi: "\f1ba"; 486 | @fa-var-tencent-weibo: "\f1d5"; 487 | @fa-var-terminal: "\f120"; 488 | @fa-var-text-height: "\f034"; 489 | @fa-var-text-width: "\f035"; 490 | @fa-var-th: "\f00a"; 491 | @fa-var-th-large: "\f009"; 492 | @fa-var-th-list: "\f00b"; 493 | @fa-var-thumb-tack: "\f08d"; 494 | @fa-var-thumbs-down: "\f165"; 495 | @fa-var-thumbs-o-down: "\f088"; 496 | @fa-var-thumbs-o-up: "\f087"; 497 | @fa-var-thumbs-up: "\f164"; 498 | @fa-var-ticket: "\f145"; 499 | @fa-var-times: "\f00d"; 500 | @fa-var-times-circle: "\f057"; 501 | @fa-var-times-circle-o: "\f05c"; 502 | @fa-var-tint: "\f043"; 503 | @fa-var-toggle-down: "\f150"; 504 | @fa-var-toggle-left: "\f191"; 505 | @fa-var-toggle-off: "\f204"; 506 | @fa-var-toggle-on: "\f205"; 507 | @fa-var-toggle-right: "\f152"; 508 | @fa-var-toggle-up: "\f151"; 509 | @fa-var-trash: "\f1f8"; 510 | @fa-var-trash-o: "\f014"; 511 | @fa-var-tree: "\f1bb"; 512 | @fa-var-trello: "\f181"; 513 | @fa-var-trophy: "\f091"; 514 | @fa-var-truck: "\f0d1"; 515 | @fa-var-try: "\f195"; 516 | @fa-var-tty: "\f1e4"; 517 | @fa-var-tumblr: "\f173"; 518 | @fa-var-tumblr-square: "\f174"; 519 | @fa-var-turkish-lira: "\f195"; 520 | @fa-var-twitch: "\f1e8"; 521 | @fa-var-twitter: "\f099"; 522 | @fa-var-twitter-square: "\f081"; 523 | @fa-var-umbrella: "\f0e9"; 524 | @fa-var-underline: "\f0cd"; 525 | @fa-var-undo: "\f0e2"; 526 | @fa-var-university: "\f19c"; 527 | @fa-var-unlink: "\f127"; 528 | @fa-var-unlock: "\f09c"; 529 | @fa-var-unlock-alt: "\f13e"; 530 | @fa-var-unsorted: "\f0dc"; 531 | @fa-var-upload: "\f093"; 532 | @fa-var-usd: "\f155"; 533 | @fa-var-user: "\f007"; 534 | @fa-var-user-md: "\f0f0"; 535 | @fa-var-users: "\f0c0"; 536 | @fa-var-video-camera: "\f03d"; 537 | @fa-var-vimeo-square: "\f194"; 538 | @fa-var-vine: "\f1ca"; 539 | @fa-var-vk: "\f189"; 540 | @fa-var-volume-down: "\f027"; 541 | @fa-var-volume-off: "\f026"; 542 | @fa-var-volume-up: "\f028"; 543 | @fa-var-warning: "\f071"; 544 | @fa-var-wechat: "\f1d7"; 545 | @fa-var-weibo: "\f18a"; 546 | @fa-var-weixin: "\f1d7"; 547 | @fa-var-wheelchair: "\f193"; 548 | @fa-var-wifi: "\f1eb"; 549 | @fa-var-windows: "\f17a"; 550 | @fa-var-won: "\f159"; 551 | @fa-var-wordpress: "\f19a"; 552 | @fa-var-wrench: "\f0ad"; 553 | @fa-var-xing: "\f168"; 554 | @fa-var-xing-square: "\f169"; 555 | @fa-var-yahoo: "\f19e"; 556 | @fa-var-yelp: "\f1e9"; 557 | @fa-var-yen: "\f157"; 558 | @fa-var-youtube: "\f167"; 559 | @fa-var-youtube-play: "\f16a"; 560 | @fa-var-youtube-square: "\f166"; 561 | 562 | -------------------------------------------------------------------------------- /myproject/core/static/font-awesome-4.2.0/scss/_variables.scss: -------------------------------------------------------------------------------- 1 | // Variables 2 | // -------------------------- 3 | 4 | $fa-font-path: "../fonts" !default; 5 | //$fa-font-path: "//netdna.bootstrapcdn.com/font-awesome/4.2.0/fonts" !default; // for referencing Bootstrap CDN font files directly 6 | $fa-css-prefix: fa !default; 7 | $fa-version: "4.2.0" !default; 8 | $fa-border-color: #eee !default; 9 | $fa-inverse: #fff !default; 10 | $fa-li-width: (30em / 14) !default; 11 | 12 | $fa-var-adjust: "\f042"; 13 | $fa-var-adn: "\f170"; 14 | $fa-var-align-center: "\f037"; 15 | $fa-var-align-justify: "\f039"; 16 | $fa-var-align-left: "\f036"; 17 | $fa-var-align-right: "\f038"; 18 | $fa-var-ambulance: "\f0f9"; 19 | $fa-var-anchor: "\f13d"; 20 | $fa-var-android: "\f17b"; 21 | $fa-var-angellist: "\f209"; 22 | $fa-var-angle-double-down: "\f103"; 23 | $fa-var-angle-double-left: "\f100"; 24 | $fa-var-angle-double-right: "\f101"; 25 | $fa-var-angle-double-up: "\f102"; 26 | $fa-var-angle-down: "\f107"; 27 | $fa-var-angle-left: "\f104"; 28 | $fa-var-angle-right: "\f105"; 29 | $fa-var-angle-up: "\f106"; 30 | $fa-var-apple: "\f179"; 31 | $fa-var-archive: "\f187"; 32 | $fa-var-area-chart: "\f1fe"; 33 | $fa-var-arrow-circle-down: "\f0ab"; 34 | $fa-var-arrow-circle-left: "\f0a8"; 35 | $fa-var-arrow-circle-o-down: "\f01a"; 36 | $fa-var-arrow-circle-o-left: "\f190"; 37 | $fa-var-arrow-circle-o-right: "\f18e"; 38 | $fa-var-arrow-circle-o-up: "\f01b"; 39 | $fa-var-arrow-circle-right: "\f0a9"; 40 | $fa-var-arrow-circle-up: "\f0aa"; 41 | $fa-var-arrow-down: "\f063"; 42 | $fa-var-arrow-left: "\f060"; 43 | $fa-var-arrow-right: "\f061"; 44 | $fa-var-arrow-up: "\f062"; 45 | $fa-var-arrows: "\f047"; 46 | $fa-var-arrows-alt: "\f0b2"; 47 | $fa-var-arrows-h: "\f07e"; 48 | $fa-var-arrows-v: "\f07d"; 49 | $fa-var-asterisk: "\f069"; 50 | $fa-var-at: "\f1fa"; 51 | $fa-var-automobile: "\f1b9"; 52 | $fa-var-backward: "\f04a"; 53 | $fa-var-ban: "\f05e"; 54 | $fa-var-bank: "\f19c"; 55 | $fa-var-bar-chart: "\f080"; 56 | $fa-var-bar-chart-o: "\f080"; 57 | $fa-var-barcode: "\f02a"; 58 | $fa-var-bars: "\f0c9"; 59 | $fa-var-beer: "\f0fc"; 60 | $fa-var-behance: "\f1b4"; 61 | $fa-var-behance-square: "\f1b5"; 62 | $fa-var-bell: "\f0f3"; 63 | $fa-var-bell-o: "\f0a2"; 64 | $fa-var-bell-slash: "\f1f6"; 65 | $fa-var-bell-slash-o: "\f1f7"; 66 | $fa-var-bicycle: "\f206"; 67 | $fa-var-binoculars: "\f1e5"; 68 | $fa-var-birthday-cake: "\f1fd"; 69 | $fa-var-bitbucket: "\f171"; 70 | $fa-var-bitbucket-square: "\f172"; 71 | $fa-var-bitcoin: "\f15a"; 72 | $fa-var-bold: "\f032"; 73 | $fa-var-bolt: "\f0e7"; 74 | $fa-var-bomb: "\f1e2"; 75 | $fa-var-book: "\f02d"; 76 | $fa-var-bookmark: "\f02e"; 77 | $fa-var-bookmark-o: "\f097"; 78 | $fa-var-briefcase: "\f0b1"; 79 | $fa-var-btc: "\f15a"; 80 | $fa-var-bug: "\f188"; 81 | $fa-var-building: "\f1ad"; 82 | $fa-var-building-o: "\f0f7"; 83 | $fa-var-bullhorn: "\f0a1"; 84 | $fa-var-bullseye: "\f140"; 85 | $fa-var-bus: "\f207"; 86 | $fa-var-cab: "\f1ba"; 87 | $fa-var-calculator: "\f1ec"; 88 | $fa-var-calendar: "\f073"; 89 | $fa-var-calendar-o: "\f133"; 90 | $fa-var-camera: "\f030"; 91 | $fa-var-camera-retro: "\f083"; 92 | $fa-var-car: "\f1b9"; 93 | $fa-var-caret-down: "\f0d7"; 94 | $fa-var-caret-left: "\f0d9"; 95 | $fa-var-caret-right: "\f0da"; 96 | $fa-var-caret-square-o-down: "\f150"; 97 | $fa-var-caret-square-o-left: "\f191"; 98 | $fa-var-caret-square-o-right: "\f152"; 99 | $fa-var-caret-square-o-up: "\f151"; 100 | $fa-var-caret-up: "\f0d8"; 101 | $fa-var-cc: "\f20a"; 102 | $fa-var-cc-amex: "\f1f3"; 103 | $fa-var-cc-discover: "\f1f2"; 104 | $fa-var-cc-mastercard: "\f1f1"; 105 | $fa-var-cc-paypal: "\f1f4"; 106 | $fa-var-cc-stripe: "\f1f5"; 107 | $fa-var-cc-visa: "\f1f0"; 108 | $fa-var-certificate: "\f0a3"; 109 | $fa-var-chain: "\f0c1"; 110 | $fa-var-chain-broken: "\f127"; 111 | $fa-var-check: "\f00c"; 112 | $fa-var-check-circle: "\f058"; 113 | $fa-var-check-circle-o: "\f05d"; 114 | $fa-var-check-square: "\f14a"; 115 | $fa-var-check-square-o: "\f046"; 116 | $fa-var-chevron-circle-down: "\f13a"; 117 | $fa-var-chevron-circle-left: "\f137"; 118 | $fa-var-chevron-circle-right: "\f138"; 119 | $fa-var-chevron-circle-up: "\f139"; 120 | $fa-var-chevron-down: "\f078"; 121 | $fa-var-chevron-left: "\f053"; 122 | $fa-var-chevron-right: "\f054"; 123 | $fa-var-chevron-up: "\f077"; 124 | $fa-var-child: "\f1ae"; 125 | $fa-var-circle: "\f111"; 126 | $fa-var-circle-o: "\f10c"; 127 | $fa-var-circle-o-notch: "\f1ce"; 128 | $fa-var-circle-thin: "\f1db"; 129 | $fa-var-clipboard: "\f0ea"; 130 | $fa-var-clock-o: "\f017"; 131 | $fa-var-close: "\f00d"; 132 | $fa-var-cloud: "\f0c2"; 133 | $fa-var-cloud-download: "\f0ed"; 134 | $fa-var-cloud-upload: "\f0ee"; 135 | $fa-var-cny: "\f157"; 136 | $fa-var-code: "\f121"; 137 | $fa-var-code-fork: "\f126"; 138 | $fa-var-codepen: "\f1cb"; 139 | $fa-var-coffee: "\f0f4"; 140 | $fa-var-cog: "\f013"; 141 | $fa-var-cogs: "\f085"; 142 | $fa-var-columns: "\f0db"; 143 | $fa-var-comment: "\f075"; 144 | $fa-var-comment-o: "\f0e5"; 145 | $fa-var-comments: "\f086"; 146 | $fa-var-comments-o: "\f0e6"; 147 | $fa-var-compass: "\f14e"; 148 | $fa-var-compress: "\f066"; 149 | $fa-var-copy: "\f0c5"; 150 | $fa-var-copyright: "\f1f9"; 151 | $fa-var-credit-card: "\f09d"; 152 | $fa-var-crop: "\f125"; 153 | $fa-var-crosshairs: "\f05b"; 154 | $fa-var-css3: "\f13c"; 155 | $fa-var-cube: "\f1b2"; 156 | $fa-var-cubes: "\f1b3"; 157 | $fa-var-cut: "\f0c4"; 158 | $fa-var-cutlery: "\f0f5"; 159 | $fa-var-dashboard: "\f0e4"; 160 | $fa-var-database: "\f1c0"; 161 | $fa-var-dedent: "\f03b"; 162 | $fa-var-delicious: "\f1a5"; 163 | $fa-var-desktop: "\f108"; 164 | $fa-var-deviantart: "\f1bd"; 165 | $fa-var-digg: "\f1a6"; 166 | $fa-var-dollar: "\f155"; 167 | $fa-var-dot-circle-o: "\f192"; 168 | $fa-var-download: "\f019"; 169 | $fa-var-dribbble: "\f17d"; 170 | $fa-var-dropbox: "\f16b"; 171 | $fa-var-drupal: "\f1a9"; 172 | $fa-var-edit: "\f044"; 173 | $fa-var-eject: "\f052"; 174 | $fa-var-ellipsis-h: "\f141"; 175 | $fa-var-ellipsis-v: "\f142"; 176 | $fa-var-empire: "\f1d1"; 177 | $fa-var-envelope: "\f0e0"; 178 | $fa-var-envelope-o: "\f003"; 179 | $fa-var-envelope-square: "\f199"; 180 | $fa-var-eraser: "\f12d"; 181 | $fa-var-eur: "\f153"; 182 | $fa-var-euro: "\f153"; 183 | $fa-var-exchange: "\f0ec"; 184 | $fa-var-exclamation: "\f12a"; 185 | $fa-var-exclamation-circle: "\f06a"; 186 | $fa-var-exclamation-triangle: "\f071"; 187 | $fa-var-expand: "\f065"; 188 | $fa-var-external-link: "\f08e"; 189 | $fa-var-external-link-square: "\f14c"; 190 | $fa-var-eye: "\f06e"; 191 | $fa-var-eye-slash: "\f070"; 192 | $fa-var-eyedropper: "\f1fb"; 193 | $fa-var-facebook: "\f09a"; 194 | $fa-var-facebook-square: "\f082"; 195 | $fa-var-fast-backward: "\f049"; 196 | $fa-var-fast-forward: "\f050"; 197 | $fa-var-fax: "\f1ac"; 198 | $fa-var-female: "\f182"; 199 | $fa-var-fighter-jet: "\f0fb"; 200 | $fa-var-file: "\f15b"; 201 | $fa-var-file-archive-o: "\f1c6"; 202 | $fa-var-file-audio-o: "\f1c7"; 203 | $fa-var-file-code-o: "\f1c9"; 204 | $fa-var-file-excel-o: "\f1c3"; 205 | $fa-var-file-image-o: "\f1c5"; 206 | $fa-var-file-movie-o: "\f1c8"; 207 | $fa-var-file-o: "\f016"; 208 | $fa-var-file-pdf-o: "\f1c1"; 209 | $fa-var-file-photo-o: "\f1c5"; 210 | $fa-var-file-picture-o: "\f1c5"; 211 | $fa-var-file-powerpoint-o: "\f1c4"; 212 | $fa-var-file-sound-o: "\f1c7"; 213 | $fa-var-file-text: "\f15c"; 214 | $fa-var-file-text-o: "\f0f6"; 215 | $fa-var-file-video-o: "\f1c8"; 216 | $fa-var-file-word-o: "\f1c2"; 217 | $fa-var-file-zip-o: "\f1c6"; 218 | $fa-var-files-o: "\f0c5"; 219 | $fa-var-film: "\f008"; 220 | $fa-var-filter: "\f0b0"; 221 | $fa-var-fire: "\f06d"; 222 | $fa-var-fire-extinguisher: "\f134"; 223 | $fa-var-flag: "\f024"; 224 | $fa-var-flag-checkered: "\f11e"; 225 | $fa-var-flag-o: "\f11d"; 226 | $fa-var-flash: "\f0e7"; 227 | $fa-var-flask: "\f0c3"; 228 | $fa-var-flickr: "\f16e"; 229 | $fa-var-floppy-o: "\f0c7"; 230 | $fa-var-folder: "\f07b"; 231 | $fa-var-folder-o: "\f114"; 232 | $fa-var-folder-open: "\f07c"; 233 | $fa-var-folder-open-o: "\f115"; 234 | $fa-var-font: "\f031"; 235 | $fa-var-forward: "\f04e"; 236 | $fa-var-foursquare: "\f180"; 237 | $fa-var-frown-o: "\f119"; 238 | $fa-var-futbol-o: "\f1e3"; 239 | $fa-var-gamepad: "\f11b"; 240 | $fa-var-gavel: "\f0e3"; 241 | $fa-var-gbp: "\f154"; 242 | $fa-var-ge: "\f1d1"; 243 | $fa-var-gear: "\f013"; 244 | $fa-var-gears: "\f085"; 245 | $fa-var-gift: "\f06b"; 246 | $fa-var-git: "\f1d3"; 247 | $fa-var-git-square: "\f1d2"; 248 | $fa-var-github: "\f09b"; 249 | $fa-var-github-alt: "\f113"; 250 | $fa-var-github-square: "\f092"; 251 | $fa-var-gittip: "\f184"; 252 | $fa-var-glass: "\f000"; 253 | $fa-var-globe: "\f0ac"; 254 | $fa-var-google: "\f1a0"; 255 | $fa-var-google-plus: "\f0d5"; 256 | $fa-var-google-plus-square: "\f0d4"; 257 | $fa-var-google-wallet: "\f1ee"; 258 | $fa-var-graduation-cap: "\f19d"; 259 | $fa-var-group: "\f0c0"; 260 | $fa-var-h-square: "\f0fd"; 261 | $fa-var-hacker-news: "\f1d4"; 262 | $fa-var-hand-o-down: "\f0a7"; 263 | $fa-var-hand-o-left: "\f0a5"; 264 | $fa-var-hand-o-right: "\f0a4"; 265 | $fa-var-hand-o-up: "\f0a6"; 266 | $fa-var-hdd-o: "\f0a0"; 267 | $fa-var-header: "\f1dc"; 268 | $fa-var-headphones: "\f025"; 269 | $fa-var-heart: "\f004"; 270 | $fa-var-heart-o: "\f08a"; 271 | $fa-var-history: "\f1da"; 272 | $fa-var-home: "\f015"; 273 | $fa-var-hospital-o: "\f0f8"; 274 | $fa-var-html5: "\f13b"; 275 | $fa-var-ils: "\f20b"; 276 | $fa-var-image: "\f03e"; 277 | $fa-var-inbox: "\f01c"; 278 | $fa-var-indent: "\f03c"; 279 | $fa-var-info: "\f129"; 280 | $fa-var-info-circle: "\f05a"; 281 | $fa-var-inr: "\f156"; 282 | $fa-var-instagram: "\f16d"; 283 | $fa-var-institution: "\f19c"; 284 | $fa-var-ioxhost: "\f208"; 285 | $fa-var-italic: "\f033"; 286 | $fa-var-joomla: "\f1aa"; 287 | $fa-var-jpy: "\f157"; 288 | $fa-var-jsfiddle: "\f1cc"; 289 | $fa-var-key: "\f084"; 290 | $fa-var-keyboard-o: "\f11c"; 291 | $fa-var-krw: "\f159"; 292 | $fa-var-language: "\f1ab"; 293 | $fa-var-laptop: "\f109"; 294 | $fa-var-lastfm: "\f202"; 295 | $fa-var-lastfm-square: "\f203"; 296 | $fa-var-leaf: "\f06c"; 297 | $fa-var-legal: "\f0e3"; 298 | $fa-var-lemon-o: "\f094"; 299 | $fa-var-level-down: "\f149"; 300 | $fa-var-level-up: "\f148"; 301 | $fa-var-life-bouy: "\f1cd"; 302 | $fa-var-life-buoy: "\f1cd"; 303 | $fa-var-life-ring: "\f1cd"; 304 | $fa-var-life-saver: "\f1cd"; 305 | $fa-var-lightbulb-o: "\f0eb"; 306 | $fa-var-line-chart: "\f201"; 307 | $fa-var-link: "\f0c1"; 308 | $fa-var-linkedin: "\f0e1"; 309 | $fa-var-linkedin-square: "\f08c"; 310 | $fa-var-linux: "\f17c"; 311 | $fa-var-list: "\f03a"; 312 | $fa-var-list-alt: "\f022"; 313 | $fa-var-list-ol: "\f0cb"; 314 | $fa-var-list-ul: "\f0ca"; 315 | $fa-var-location-arrow: "\f124"; 316 | $fa-var-lock: "\f023"; 317 | $fa-var-long-arrow-down: "\f175"; 318 | $fa-var-long-arrow-left: "\f177"; 319 | $fa-var-long-arrow-right: "\f178"; 320 | $fa-var-long-arrow-up: "\f176"; 321 | $fa-var-magic: "\f0d0"; 322 | $fa-var-magnet: "\f076"; 323 | $fa-var-mail-forward: "\f064"; 324 | $fa-var-mail-reply: "\f112"; 325 | $fa-var-mail-reply-all: "\f122"; 326 | $fa-var-male: "\f183"; 327 | $fa-var-map-marker: "\f041"; 328 | $fa-var-maxcdn: "\f136"; 329 | $fa-var-meanpath: "\f20c"; 330 | $fa-var-medkit: "\f0fa"; 331 | $fa-var-meh-o: "\f11a"; 332 | $fa-var-microphone: "\f130"; 333 | $fa-var-microphone-slash: "\f131"; 334 | $fa-var-minus: "\f068"; 335 | $fa-var-minus-circle: "\f056"; 336 | $fa-var-minus-square: "\f146"; 337 | $fa-var-minus-square-o: "\f147"; 338 | $fa-var-mobile: "\f10b"; 339 | $fa-var-mobile-phone: "\f10b"; 340 | $fa-var-money: "\f0d6"; 341 | $fa-var-moon-o: "\f186"; 342 | $fa-var-mortar-board: "\f19d"; 343 | $fa-var-music: "\f001"; 344 | $fa-var-navicon: "\f0c9"; 345 | $fa-var-newspaper-o: "\f1ea"; 346 | $fa-var-openid: "\f19b"; 347 | $fa-var-outdent: "\f03b"; 348 | $fa-var-pagelines: "\f18c"; 349 | $fa-var-paint-brush: "\f1fc"; 350 | $fa-var-paper-plane: "\f1d8"; 351 | $fa-var-paper-plane-o: "\f1d9"; 352 | $fa-var-paperclip: "\f0c6"; 353 | $fa-var-paragraph: "\f1dd"; 354 | $fa-var-paste: "\f0ea"; 355 | $fa-var-pause: "\f04c"; 356 | $fa-var-paw: "\f1b0"; 357 | $fa-var-paypal: "\f1ed"; 358 | $fa-var-pencil: "\f040"; 359 | $fa-var-pencil-square: "\f14b"; 360 | $fa-var-pencil-square-o: "\f044"; 361 | $fa-var-phone: "\f095"; 362 | $fa-var-phone-square: "\f098"; 363 | $fa-var-photo: "\f03e"; 364 | $fa-var-picture-o: "\f03e"; 365 | $fa-var-pie-chart: "\f200"; 366 | $fa-var-pied-piper: "\f1a7"; 367 | $fa-var-pied-piper-alt: "\f1a8"; 368 | $fa-var-pinterest: "\f0d2"; 369 | $fa-var-pinterest-square: "\f0d3"; 370 | $fa-var-plane: "\f072"; 371 | $fa-var-play: "\f04b"; 372 | $fa-var-play-circle: "\f144"; 373 | $fa-var-play-circle-o: "\f01d"; 374 | $fa-var-plug: "\f1e6"; 375 | $fa-var-plus: "\f067"; 376 | $fa-var-plus-circle: "\f055"; 377 | $fa-var-plus-square: "\f0fe"; 378 | $fa-var-plus-square-o: "\f196"; 379 | $fa-var-power-off: "\f011"; 380 | $fa-var-print: "\f02f"; 381 | $fa-var-puzzle-piece: "\f12e"; 382 | $fa-var-qq: "\f1d6"; 383 | $fa-var-qrcode: "\f029"; 384 | $fa-var-question: "\f128"; 385 | $fa-var-question-circle: "\f059"; 386 | $fa-var-quote-left: "\f10d"; 387 | $fa-var-quote-right: "\f10e"; 388 | $fa-var-ra: "\f1d0"; 389 | $fa-var-random: "\f074"; 390 | $fa-var-rebel: "\f1d0"; 391 | $fa-var-recycle: "\f1b8"; 392 | $fa-var-reddit: "\f1a1"; 393 | $fa-var-reddit-square: "\f1a2"; 394 | $fa-var-refresh: "\f021"; 395 | $fa-var-remove: "\f00d"; 396 | $fa-var-renren: "\f18b"; 397 | $fa-var-reorder: "\f0c9"; 398 | $fa-var-repeat: "\f01e"; 399 | $fa-var-reply: "\f112"; 400 | $fa-var-reply-all: "\f122"; 401 | $fa-var-retweet: "\f079"; 402 | $fa-var-rmb: "\f157"; 403 | $fa-var-road: "\f018"; 404 | $fa-var-rocket: "\f135"; 405 | $fa-var-rotate-left: "\f0e2"; 406 | $fa-var-rotate-right: "\f01e"; 407 | $fa-var-rouble: "\f158"; 408 | $fa-var-rss: "\f09e"; 409 | $fa-var-rss-square: "\f143"; 410 | $fa-var-rub: "\f158"; 411 | $fa-var-ruble: "\f158"; 412 | $fa-var-rupee: "\f156"; 413 | $fa-var-save: "\f0c7"; 414 | $fa-var-scissors: "\f0c4"; 415 | $fa-var-search: "\f002"; 416 | $fa-var-search-minus: "\f010"; 417 | $fa-var-search-plus: "\f00e"; 418 | $fa-var-send: "\f1d8"; 419 | $fa-var-send-o: "\f1d9"; 420 | $fa-var-share: "\f064"; 421 | $fa-var-share-alt: "\f1e0"; 422 | $fa-var-share-alt-square: "\f1e1"; 423 | $fa-var-share-square: "\f14d"; 424 | $fa-var-share-square-o: "\f045"; 425 | $fa-var-shekel: "\f20b"; 426 | $fa-var-sheqel: "\f20b"; 427 | $fa-var-shield: "\f132"; 428 | $fa-var-shopping-cart: "\f07a"; 429 | $fa-var-sign-in: "\f090"; 430 | $fa-var-sign-out: "\f08b"; 431 | $fa-var-signal: "\f012"; 432 | $fa-var-sitemap: "\f0e8"; 433 | $fa-var-skype: "\f17e"; 434 | $fa-var-slack: "\f198"; 435 | $fa-var-sliders: "\f1de"; 436 | $fa-var-slideshare: "\f1e7"; 437 | $fa-var-smile-o: "\f118"; 438 | $fa-var-soccer-ball-o: "\f1e3"; 439 | $fa-var-sort: "\f0dc"; 440 | $fa-var-sort-alpha-asc: "\f15d"; 441 | $fa-var-sort-alpha-desc: "\f15e"; 442 | $fa-var-sort-amount-asc: "\f160"; 443 | $fa-var-sort-amount-desc: "\f161"; 444 | $fa-var-sort-asc: "\f0de"; 445 | $fa-var-sort-desc: "\f0dd"; 446 | $fa-var-sort-down: "\f0dd"; 447 | $fa-var-sort-numeric-asc: "\f162"; 448 | $fa-var-sort-numeric-desc: "\f163"; 449 | $fa-var-sort-up: "\f0de"; 450 | $fa-var-soundcloud: "\f1be"; 451 | $fa-var-space-shuttle: "\f197"; 452 | $fa-var-spinner: "\f110"; 453 | $fa-var-spoon: "\f1b1"; 454 | $fa-var-spotify: "\f1bc"; 455 | $fa-var-square: "\f0c8"; 456 | $fa-var-square-o: "\f096"; 457 | $fa-var-stack-exchange: "\f18d"; 458 | $fa-var-stack-overflow: "\f16c"; 459 | $fa-var-star: "\f005"; 460 | $fa-var-star-half: "\f089"; 461 | $fa-var-star-half-empty: "\f123"; 462 | $fa-var-star-half-full: "\f123"; 463 | $fa-var-star-half-o: "\f123"; 464 | $fa-var-star-o: "\f006"; 465 | $fa-var-steam: "\f1b6"; 466 | $fa-var-steam-square: "\f1b7"; 467 | $fa-var-step-backward: "\f048"; 468 | $fa-var-step-forward: "\f051"; 469 | $fa-var-stethoscope: "\f0f1"; 470 | $fa-var-stop: "\f04d"; 471 | $fa-var-strikethrough: "\f0cc"; 472 | $fa-var-stumbleupon: "\f1a4"; 473 | $fa-var-stumbleupon-circle: "\f1a3"; 474 | $fa-var-subscript: "\f12c"; 475 | $fa-var-suitcase: "\f0f2"; 476 | $fa-var-sun-o: "\f185"; 477 | $fa-var-superscript: "\f12b"; 478 | $fa-var-support: "\f1cd"; 479 | $fa-var-table: "\f0ce"; 480 | $fa-var-tablet: "\f10a"; 481 | $fa-var-tachometer: "\f0e4"; 482 | $fa-var-tag: "\f02b"; 483 | $fa-var-tags: "\f02c"; 484 | $fa-var-tasks: "\f0ae"; 485 | $fa-var-taxi: "\f1ba"; 486 | $fa-var-tencent-weibo: "\f1d5"; 487 | $fa-var-terminal: "\f120"; 488 | $fa-var-text-height: "\f034"; 489 | $fa-var-text-width: "\f035"; 490 | $fa-var-th: "\f00a"; 491 | $fa-var-th-large: "\f009"; 492 | $fa-var-th-list: "\f00b"; 493 | $fa-var-thumb-tack: "\f08d"; 494 | $fa-var-thumbs-down: "\f165"; 495 | $fa-var-thumbs-o-down: "\f088"; 496 | $fa-var-thumbs-o-up: "\f087"; 497 | $fa-var-thumbs-up: "\f164"; 498 | $fa-var-ticket: "\f145"; 499 | $fa-var-times: "\f00d"; 500 | $fa-var-times-circle: "\f057"; 501 | $fa-var-times-circle-o: "\f05c"; 502 | $fa-var-tint: "\f043"; 503 | $fa-var-toggle-down: "\f150"; 504 | $fa-var-toggle-left: "\f191"; 505 | $fa-var-toggle-off: "\f204"; 506 | $fa-var-toggle-on: "\f205"; 507 | $fa-var-toggle-right: "\f152"; 508 | $fa-var-toggle-up: "\f151"; 509 | $fa-var-trash: "\f1f8"; 510 | $fa-var-trash-o: "\f014"; 511 | $fa-var-tree: "\f1bb"; 512 | $fa-var-trello: "\f181"; 513 | $fa-var-trophy: "\f091"; 514 | $fa-var-truck: "\f0d1"; 515 | $fa-var-try: "\f195"; 516 | $fa-var-tty: "\f1e4"; 517 | $fa-var-tumblr: "\f173"; 518 | $fa-var-tumblr-square: "\f174"; 519 | $fa-var-turkish-lira: "\f195"; 520 | $fa-var-twitch: "\f1e8"; 521 | $fa-var-twitter: "\f099"; 522 | $fa-var-twitter-square: "\f081"; 523 | $fa-var-umbrella: "\f0e9"; 524 | $fa-var-underline: "\f0cd"; 525 | $fa-var-undo: "\f0e2"; 526 | $fa-var-university: "\f19c"; 527 | $fa-var-unlink: "\f127"; 528 | $fa-var-unlock: "\f09c"; 529 | $fa-var-unlock-alt: "\f13e"; 530 | $fa-var-unsorted: "\f0dc"; 531 | $fa-var-upload: "\f093"; 532 | $fa-var-usd: "\f155"; 533 | $fa-var-user: "\f007"; 534 | $fa-var-user-md: "\f0f0"; 535 | $fa-var-users: "\f0c0"; 536 | $fa-var-video-camera: "\f03d"; 537 | $fa-var-vimeo-square: "\f194"; 538 | $fa-var-vine: "\f1ca"; 539 | $fa-var-vk: "\f189"; 540 | $fa-var-volume-down: "\f027"; 541 | $fa-var-volume-off: "\f026"; 542 | $fa-var-volume-up: "\f028"; 543 | $fa-var-warning: "\f071"; 544 | $fa-var-wechat: "\f1d7"; 545 | $fa-var-weibo: "\f18a"; 546 | $fa-var-weixin: "\f1d7"; 547 | $fa-var-wheelchair: "\f193"; 548 | $fa-var-wifi: "\f1eb"; 549 | $fa-var-windows: "\f17a"; 550 | $fa-var-won: "\f159"; 551 | $fa-var-wordpress: "\f19a"; 552 | $fa-var-wrench: "\f0ad"; 553 | $fa-var-xing: "\f168"; 554 | $fa-var-xing-square: "\f169"; 555 | $fa-var-yahoo: "\f19e"; 556 | $fa-var-yelp: "\f1e9"; 557 | $fa-var-yen: "\f157"; 558 | $fa-var-youtube: "\f167"; 559 | $fa-var-youtube-play: "\f16a"; 560 | $fa-var-youtube-square: "\f166"; 561 | 562 | -------------------------------------------------------------------------------- /myproject/core/static/css/bootstrap-social.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Social Buttons for Bootstrap 3 | * 4 | * Copyright 2013-2014 Panayiotis Lipiridis 5 | * Licensed under the MIT License 6 | * 7 | * https://github.com/lipis/bootstrap-social 8 | */ 9 | 10 | .btn-social{position:relative;padding-left:44px;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.btn-social>:first-child{position:absolute;left:0;top:0;bottom:0;width:32px;line-height:34px;font-size:1.6em;text-align:center;border-right:1px solid rgba(0,0,0,0.2)} 11 | .btn-social.btn-lg{padding-left:61px}.btn-social.btn-lg :first-child{line-height:45px;width:45px;font-size:1.8em} 12 | .btn-social.btn-sm{padding-left:38px}.btn-social.btn-sm :first-child{line-height:28px;width:28px;font-size:1.4em} 13 | .btn-social.btn-xs{padding-left:30px}.btn-social.btn-xs :first-child{line-height:20px;width:20px;font-size:1.2em} 14 | .btn-social-icon{position:relative;padding-left:44px;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;height:34px;width:34px;padding:0}.btn-social-icon>:first-child{position:absolute;left:0;top:0;bottom:0;width:32px;line-height:34px;font-size:1.6em;text-align:center;border-right:1px solid rgba(0,0,0,0.2)} 15 | .btn-social-icon.btn-lg{padding-left:61px}.btn-social-icon.btn-lg :first-child{line-height:45px;width:45px;font-size:1.8em} 16 | .btn-social-icon.btn-sm{padding-left:38px}.btn-social-icon.btn-sm :first-child{line-height:28px;width:28px;font-size:1.4em} 17 | .btn-social-icon.btn-xs{padding-left:30px}.btn-social-icon.btn-xs :first-child{line-height:20px;width:20px;font-size:1.2em} 18 | .btn-social-icon :first-child{border:none;text-align:center;width:100% !important} 19 | .btn-social-icon.btn-lg{height:45px;width:45px;padding-left:0;padding-right:0} 20 | .btn-social-icon.btn-sm{height:30px;width:30px;padding-left:0;padding-right:0} 21 | .btn-social-icon.btn-xs{height:22px;width:22px;padding-left:0;padding-right:0} 22 | .btn-adn{color:#fff;background-color:#d87a68;border-color:rgba(0,0,0,0.2)}.btn-adn:hover,.btn-adn:focus,.btn-adn:active,.btn-adn.active,.open>.dropdown-toggle.btn-adn{color:#fff;background-color:#ce563f;border-color:rgba(0,0,0,0.2)} 23 | .btn-adn:active,.btn-adn.active,.open>.dropdown-toggle.btn-adn{background-image:none} 24 | .btn-adn.disabled,.btn-adn[disabled],fieldset[disabled] .btn-adn,.btn-adn.disabled:hover,.btn-adn[disabled]:hover,fieldset[disabled] .btn-adn:hover,.btn-adn.disabled:focus,.btn-adn[disabled]:focus,fieldset[disabled] .btn-adn:focus,.btn-adn.disabled:active,.btn-adn[disabled]:active,fieldset[disabled] .btn-adn:active,.btn-adn.disabled.active,.btn-adn[disabled].active,fieldset[disabled] .btn-adn.active{background-color:#d87a68;border-color:rgba(0,0,0,0.2)} 25 | .btn-adn .badge{color:#d87a68;background-color:#fff} 26 | .btn-bitbucket{color:#fff;background-color:#205081;border-color:rgba(0,0,0,0.2)}.btn-bitbucket:hover,.btn-bitbucket:focus,.btn-bitbucket:active,.btn-bitbucket.active,.open>.dropdown-toggle.btn-bitbucket{color:#fff;background-color:#163758;border-color:rgba(0,0,0,0.2)} 27 | .btn-bitbucket:active,.btn-bitbucket.active,.open>.dropdown-toggle.btn-bitbucket{background-image:none} 28 | .btn-bitbucket.disabled,.btn-bitbucket[disabled],fieldset[disabled] .btn-bitbucket,.btn-bitbucket.disabled:hover,.btn-bitbucket[disabled]:hover,fieldset[disabled] .btn-bitbucket:hover,.btn-bitbucket.disabled:focus,.btn-bitbucket[disabled]:focus,fieldset[disabled] .btn-bitbucket:focus,.btn-bitbucket.disabled:active,.btn-bitbucket[disabled]:active,fieldset[disabled] .btn-bitbucket:active,.btn-bitbucket.disabled.active,.btn-bitbucket[disabled].active,fieldset[disabled] .btn-bitbucket.active{background-color:#205081;border-color:rgba(0,0,0,0.2)} 29 | .btn-bitbucket .badge{color:#205081;background-color:#fff} 30 | .btn-dropbox{color:#fff;background-color:#1087dd;border-color:rgba(0,0,0,0.2)}.btn-dropbox:hover,.btn-dropbox:focus,.btn-dropbox:active,.btn-dropbox.active,.open>.dropdown-toggle.btn-dropbox{color:#fff;background-color:#0d6aad;border-color:rgba(0,0,0,0.2)} 31 | .btn-dropbox:active,.btn-dropbox.active,.open>.dropdown-toggle.btn-dropbox{background-image:none} 32 | .btn-dropbox.disabled,.btn-dropbox[disabled],fieldset[disabled] .btn-dropbox,.btn-dropbox.disabled:hover,.btn-dropbox[disabled]:hover,fieldset[disabled] .btn-dropbox:hover,.btn-dropbox.disabled:focus,.btn-dropbox[disabled]:focus,fieldset[disabled] .btn-dropbox:focus,.btn-dropbox.disabled:active,.btn-dropbox[disabled]:active,fieldset[disabled] .btn-dropbox:active,.btn-dropbox.disabled.active,.btn-dropbox[disabled].active,fieldset[disabled] .btn-dropbox.active{background-color:#1087dd;border-color:rgba(0,0,0,0.2)} 33 | .btn-dropbox .badge{color:#1087dd;background-color:#fff} 34 | .btn-facebook{color:#fff;background-color:#3b5998;border-color:rgba(0,0,0,0.2)}.btn-facebook:hover,.btn-facebook:focus,.btn-facebook:active,.btn-facebook.active,.open>.dropdown-toggle.btn-facebook{color:#fff;background-color:#2d4373;border-color:rgba(0,0,0,0.2)} 35 | .btn-facebook:active,.btn-facebook.active,.open>.dropdown-toggle.btn-facebook{background-image:none} 36 | .btn-facebook.disabled,.btn-facebook[disabled],fieldset[disabled] .btn-facebook,.btn-facebook.disabled:hover,.btn-facebook[disabled]:hover,fieldset[disabled] .btn-facebook:hover,.btn-facebook.disabled:focus,.btn-facebook[disabled]:focus,fieldset[disabled] .btn-facebook:focus,.btn-facebook.disabled:active,.btn-facebook[disabled]:active,fieldset[disabled] .btn-facebook:active,.btn-facebook.disabled.active,.btn-facebook[disabled].active,fieldset[disabled] .btn-facebook.active{background-color:#3b5998;border-color:rgba(0,0,0,0.2)} 37 | .btn-facebook .badge{color:#3b5998;background-color:#fff} 38 | .btn-flickr{color:#fff;background-color:#ff0084;border-color:rgba(0,0,0,0.2)}.btn-flickr:hover,.btn-flickr:focus,.btn-flickr:active,.btn-flickr.active,.open>.dropdown-toggle.btn-flickr{color:#fff;background-color:#cc006a;border-color:rgba(0,0,0,0.2)} 39 | .btn-flickr:active,.btn-flickr.active,.open>.dropdown-toggle.btn-flickr{background-image:none} 40 | .btn-flickr.disabled,.btn-flickr[disabled],fieldset[disabled] .btn-flickr,.btn-flickr.disabled:hover,.btn-flickr[disabled]:hover,fieldset[disabled] .btn-flickr:hover,.btn-flickr.disabled:focus,.btn-flickr[disabled]:focus,fieldset[disabled] .btn-flickr:focus,.btn-flickr.disabled:active,.btn-flickr[disabled]:active,fieldset[disabled] .btn-flickr:active,.btn-flickr.disabled.active,.btn-flickr[disabled].active,fieldset[disabled] .btn-flickr.active{background-color:#ff0084;border-color:rgba(0,0,0,0.2)} 41 | .btn-flickr .badge{color:#ff0084;background-color:#fff} 42 | .btn-foursquare{color:#fff;background-color:#f94877;border-color:rgba(0,0,0,0.2)}.btn-foursquare:hover,.btn-foursquare:focus,.btn-foursquare:active,.btn-foursquare.active,.open>.dropdown-toggle.btn-foursquare{color:#fff;background-color:#f71752;border-color:rgba(0,0,0,0.2)} 43 | .btn-foursquare:active,.btn-foursquare.active,.open>.dropdown-toggle.btn-foursquare{background-image:none} 44 | .btn-foursquare.disabled,.btn-foursquare[disabled],fieldset[disabled] .btn-foursquare,.btn-foursquare.disabled:hover,.btn-foursquare[disabled]:hover,fieldset[disabled] .btn-foursquare:hover,.btn-foursquare.disabled:focus,.btn-foursquare[disabled]:focus,fieldset[disabled] .btn-foursquare:focus,.btn-foursquare.disabled:active,.btn-foursquare[disabled]:active,fieldset[disabled] .btn-foursquare:active,.btn-foursquare.disabled.active,.btn-foursquare[disabled].active,fieldset[disabled] .btn-foursquare.active{background-color:#f94877;border-color:rgba(0,0,0,0.2)} 45 | .btn-foursquare .badge{color:#f94877;background-color:#fff} 46 | .btn-github{color:#fff;background-color:#444;border-color:rgba(0,0,0,0.2)}.btn-github:hover,.btn-github:focus,.btn-github:active,.btn-github.active,.open>.dropdown-toggle.btn-github{color:#fff;background-color:#2b2b2b;border-color:rgba(0,0,0,0.2)} 47 | .btn-github:active,.btn-github.active,.open>.dropdown-toggle.btn-github{background-image:none} 48 | .btn-github.disabled,.btn-github[disabled],fieldset[disabled] .btn-github,.btn-github.disabled:hover,.btn-github[disabled]:hover,fieldset[disabled] .btn-github:hover,.btn-github.disabled:focus,.btn-github[disabled]:focus,fieldset[disabled] .btn-github:focus,.btn-github.disabled:active,.btn-github[disabled]:active,fieldset[disabled] .btn-github:active,.btn-github.disabled.active,.btn-github[disabled].active,fieldset[disabled] .btn-github.active{background-color:#444;border-color:rgba(0,0,0,0.2)} 49 | .btn-github .badge{color:#444;background-color:#fff} 50 | .btn-google-plus{color:#fff;background-color:#dd4b39;border-color:rgba(0,0,0,0.2)}.btn-google-plus:hover,.btn-google-plus:focus,.btn-google-plus:active,.btn-google-plus.active,.open>.dropdown-toggle.btn-google-plus{color:#fff;background-color:#c23321;border-color:rgba(0,0,0,0.2)} 51 | .btn-google-plus:active,.btn-google-plus.active,.open>.dropdown-toggle.btn-google-plus{background-image:none} 52 | .btn-google-plus.disabled,.btn-google-plus[disabled],fieldset[disabled] .btn-google-plus,.btn-google-plus.disabled:hover,.btn-google-plus[disabled]:hover,fieldset[disabled] .btn-google-plus:hover,.btn-google-plus.disabled:focus,.btn-google-plus[disabled]:focus,fieldset[disabled] .btn-google-plus:focus,.btn-google-plus.disabled:active,.btn-google-plus[disabled]:active,fieldset[disabled] .btn-google-plus:active,.btn-google-plus.disabled.active,.btn-google-plus[disabled].active,fieldset[disabled] .btn-google-plus.active{background-color:#dd4b39;border-color:rgba(0,0,0,0.2)} 53 | .btn-google-plus .badge{color:#dd4b39;background-color:#fff} 54 | .btn-instagram{color:#fff;background-color:#3f729b;border-color:rgba(0,0,0,0.2)}.btn-instagram:hover,.btn-instagram:focus,.btn-instagram:active,.btn-instagram.active,.open>.dropdown-toggle.btn-instagram{color:#fff;background-color:#305777;border-color:rgba(0,0,0,0.2)} 55 | .btn-instagram:active,.btn-instagram.active,.open>.dropdown-toggle.btn-instagram{background-image:none} 56 | .btn-instagram.disabled,.btn-instagram[disabled],fieldset[disabled] .btn-instagram,.btn-instagram.disabled:hover,.btn-instagram[disabled]:hover,fieldset[disabled] .btn-instagram:hover,.btn-instagram.disabled:focus,.btn-instagram[disabled]:focus,fieldset[disabled] .btn-instagram:focus,.btn-instagram.disabled:active,.btn-instagram[disabled]:active,fieldset[disabled] .btn-instagram:active,.btn-instagram.disabled.active,.btn-instagram[disabled].active,fieldset[disabled] .btn-instagram.active{background-color:#3f729b;border-color:rgba(0,0,0,0.2)} 57 | .btn-instagram .badge{color:#3f729b;background-color:#fff} 58 | .btn-linkedin{color:#fff;background-color:#007bb6;border-color:rgba(0,0,0,0.2)}.btn-linkedin:hover,.btn-linkedin:focus,.btn-linkedin:active,.btn-linkedin.active,.open>.dropdown-toggle.btn-linkedin{color:#fff;background-color:#005983;border-color:rgba(0,0,0,0.2)} 59 | .btn-linkedin:active,.btn-linkedin.active,.open>.dropdown-toggle.btn-linkedin{background-image:none} 60 | .btn-linkedin.disabled,.btn-linkedin[disabled],fieldset[disabled] .btn-linkedin,.btn-linkedin.disabled:hover,.btn-linkedin[disabled]:hover,fieldset[disabled] .btn-linkedin:hover,.btn-linkedin.disabled:focus,.btn-linkedin[disabled]:focus,fieldset[disabled] .btn-linkedin:focus,.btn-linkedin.disabled:active,.btn-linkedin[disabled]:active,fieldset[disabled] .btn-linkedin:active,.btn-linkedin.disabled.active,.btn-linkedin[disabled].active,fieldset[disabled] .btn-linkedin.active{background-color:#007bb6;border-color:rgba(0,0,0,0.2)} 61 | .btn-linkedin .badge{color:#007bb6;background-color:#fff} 62 | .btn-microsoft{color:#fff;background-color:#2672ec;border-color:rgba(0,0,0,0.2)}.btn-microsoft:hover,.btn-microsoft:focus,.btn-microsoft:active,.btn-microsoft.active,.open>.dropdown-toggle.btn-microsoft{color:#fff;background-color:#125acd;border-color:rgba(0,0,0,0.2)} 63 | .btn-microsoft:active,.btn-microsoft.active,.open>.dropdown-toggle.btn-microsoft{background-image:none} 64 | .btn-microsoft.disabled,.btn-microsoft[disabled],fieldset[disabled] .btn-microsoft,.btn-microsoft.disabled:hover,.btn-microsoft[disabled]:hover,fieldset[disabled] .btn-microsoft:hover,.btn-microsoft.disabled:focus,.btn-microsoft[disabled]:focus,fieldset[disabled] .btn-microsoft:focus,.btn-microsoft.disabled:active,.btn-microsoft[disabled]:active,fieldset[disabled] .btn-microsoft:active,.btn-microsoft.disabled.active,.btn-microsoft[disabled].active,fieldset[disabled] .btn-microsoft.active{background-color:#2672ec;border-color:rgba(0,0,0,0.2)} 65 | .btn-microsoft .badge{color:#2672ec;background-color:#fff} 66 | .btn-openid{color:#fff;background-color:#f7931e;border-color:rgba(0,0,0,0.2)}.btn-openid:hover,.btn-openid:focus,.btn-openid:active,.btn-openid.active,.open>.dropdown-toggle.btn-openid{color:#fff;background-color:#da7908;border-color:rgba(0,0,0,0.2)} 67 | .btn-openid:active,.btn-openid.active,.open>.dropdown-toggle.btn-openid{background-image:none} 68 | .btn-openid.disabled,.btn-openid[disabled],fieldset[disabled] .btn-openid,.btn-openid.disabled:hover,.btn-openid[disabled]:hover,fieldset[disabled] .btn-openid:hover,.btn-openid.disabled:focus,.btn-openid[disabled]:focus,fieldset[disabled] .btn-openid:focus,.btn-openid.disabled:active,.btn-openid[disabled]:active,fieldset[disabled] .btn-openid:active,.btn-openid.disabled.active,.btn-openid[disabled].active,fieldset[disabled] .btn-openid.active{background-color:#f7931e;border-color:rgba(0,0,0,0.2)} 69 | .btn-openid .badge{color:#f7931e;background-color:#fff} 70 | .btn-pinterest{color:#fff;background-color:#cb2027;border-color:rgba(0,0,0,0.2)}.btn-pinterest:hover,.btn-pinterest:focus,.btn-pinterest:active,.btn-pinterest.active,.open>.dropdown-toggle.btn-pinterest{color:#fff;background-color:#9f191f;border-color:rgba(0,0,0,0.2)} 71 | .btn-pinterest:active,.btn-pinterest.active,.open>.dropdown-toggle.btn-pinterest{background-image:none} 72 | .btn-pinterest.disabled,.btn-pinterest[disabled],fieldset[disabled] .btn-pinterest,.btn-pinterest.disabled:hover,.btn-pinterest[disabled]:hover,fieldset[disabled] .btn-pinterest:hover,.btn-pinterest.disabled:focus,.btn-pinterest[disabled]:focus,fieldset[disabled] .btn-pinterest:focus,.btn-pinterest.disabled:active,.btn-pinterest[disabled]:active,fieldset[disabled] .btn-pinterest:active,.btn-pinterest.disabled.active,.btn-pinterest[disabled].active,fieldset[disabled] .btn-pinterest.active{background-color:#cb2027;border-color:rgba(0,0,0,0.2)} 73 | .btn-pinterest .badge{color:#cb2027;background-color:#fff} 74 | .btn-reddit{color:#000;background-color:#eff7ff;border-color:rgba(0,0,0,0.2)}.btn-reddit:hover,.btn-reddit:focus,.btn-reddit:active,.btn-reddit.active,.open>.dropdown-toggle.btn-reddit{color:#000;background-color:#bcddff;border-color:rgba(0,0,0,0.2)} 75 | .btn-reddit:active,.btn-reddit.active,.open>.dropdown-toggle.btn-reddit{background-image:none} 76 | .btn-reddit.disabled,.btn-reddit[disabled],fieldset[disabled] .btn-reddit,.btn-reddit.disabled:hover,.btn-reddit[disabled]:hover,fieldset[disabled] .btn-reddit:hover,.btn-reddit.disabled:focus,.btn-reddit[disabled]:focus,fieldset[disabled] .btn-reddit:focus,.btn-reddit.disabled:active,.btn-reddit[disabled]:active,fieldset[disabled] .btn-reddit:active,.btn-reddit.disabled.active,.btn-reddit[disabled].active,fieldset[disabled] .btn-reddit.active{background-color:#eff7ff;border-color:rgba(0,0,0,0.2)} 77 | .btn-reddit .badge{color:#eff7ff;background-color:#000} 78 | .btn-soundcloud{color:#fff;background-color:#f50;border-color:rgba(0,0,0,0.2)}.btn-soundcloud:hover,.btn-soundcloud:focus,.btn-soundcloud:active,.btn-soundcloud.active,.open>.dropdown-toggle.btn-soundcloud{color:#fff;background-color:#c40;border-color:rgba(0,0,0,0.2)} 79 | .btn-soundcloud:active,.btn-soundcloud.active,.open>.dropdown-toggle.btn-soundcloud{background-image:none} 80 | .btn-soundcloud.disabled,.btn-soundcloud[disabled],fieldset[disabled] .btn-soundcloud,.btn-soundcloud.disabled:hover,.btn-soundcloud[disabled]:hover,fieldset[disabled] .btn-soundcloud:hover,.btn-soundcloud.disabled:focus,.btn-soundcloud[disabled]:focus,fieldset[disabled] .btn-soundcloud:focus,.btn-soundcloud.disabled:active,.btn-soundcloud[disabled]:active,fieldset[disabled] .btn-soundcloud:active,.btn-soundcloud.disabled.active,.btn-soundcloud[disabled].active,fieldset[disabled] .btn-soundcloud.active{background-color:#f50;border-color:rgba(0,0,0,0.2)} 81 | .btn-soundcloud .badge{color:#f50;background-color:#fff} 82 | .btn-tumblr{color:#fff;background-color:#2c4762;border-color:rgba(0,0,0,0.2)}.btn-tumblr:hover,.btn-tumblr:focus,.btn-tumblr:active,.btn-tumblr.active,.open>.dropdown-toggle.btn-tumblr{color:#fff;background-color:#1c2d3f;border-color:rgba(0,0,0,0.2)} 83 | .btn-tumblr:active,.btn-tumblr.active,.open>.dropdown-toggle.btn-tumblr{background-image:none} 84 | .btn-tumblr.disabled,.btn-tumblr[disabled],fieldset[disabled] .btn-tumblr,.btn-tumblr.disabled:hover,.btn-tumblr[disabled]:hover,fieldset[disabled] .btn-tumblr:hover,.btn-tumblr.disabled:focus,.btn-tumblr[disabled]:focus,fieldset[disabled] .btn-tumblr:focus,.btn-tumblr.disabled:active,.btn-tumblr[disabled]:active,fieldset[disabled] .btn-tumblr:active,.btn-tumblr.disabled.active,.btn-tumblr[disabled].active,fieldset[disabled] .btn-tumblr.active{background-color:#2c4762;border-color:rgba(0,0,0,0.2)} 85 | .btn-tumblr .badge{color:#2c4762;background-color:#fff} 86 | .btn-twitter{color:#fff;background-color:#55acee;border-color:rgba(0,0,0,0.2)}.btn-twitter:hover,.btn-twitter:focus,.btn-twitter:active,.btn-twitter.active,.open>.dropdown-toggle.btn-twitter{color:#fff;background-color:#2795e9;border-color:rgba(0,0,0,0.2)} 87 | .btn-twitter:active,.btn-twitter.active,.open>.dropdown-toggle.btn-twitter{background-image:none} 88 | .btn-twitter.disabled,.btn-twitter[disabled],fieldset[disabled] .btn-twitter,.btn-twitter.disabled:hover,.btn-twitter[disabled]:hover,fieldset[disabled] .btn-twitter:hover,.btn-twitter.disabled:focus,.btn-twitter[disabled]:focus,fieldset[disabled] .btn-twitter:focus,.btn-twitter.disabled:active,.btn-twitter[disabled]:active,fieldset[disabled] .btn-twitter:active,.btn-twitter.disabled.active,.btn-twitter[disabled].active,fieldset[disabled] .btn-twitter.active{background-color:#55acee;border-color:rgba(0,0,0,0.2)} 89 | .btn-twitter .badge{color:#55acee;background-color:#fff} 90 | .btn-vimeo{color:#fff;background-color:#1ab7ea;border-color:rgba(0,0,0,0.2)}.btn-vimeo:hover,.btn-vimeo:focus,.btn-vimeo:active,.btn-vimeo.active,.open>.dropdown-toggle.btn-vimeo{color:#fff;background-color:#1295bf;border-color:rgba(0,0,0,0.2)} 91 | .btn-vimeo:active,.btn-vimeo.active,.open>.dropdown-toggle.btn-vimeo{background-image:none} 92 | .btn-vimeo.disabled,.btn-vimeo[disabled],fieldset[disabled] .btn-vimeo,.btn-vimeo.disabled:hover,.btn-vimeo[disabled]:hover,fieldset[disabled] .btn-vimeo:hover,.btn-vimeo.disabled:focus,.btn-vimeo[disabled]:focus,fieldset[disabled] .btn-vimeo:focus,.btn-vimeo.disabled:active,.btn-vimeo[disabled]:active,fieldset[disabled] .btn-vimeo:active,.btn-vimeo.disabled.active,.btn-vimeo[disabled].active,fieldset[disabled] .btn-vimeo.active{background-color:#1ab7ea;border-color:rgba(0,0,0,0.2)} 93 | .btn-vimeo .badge{color:#1ab7ea;background-color:#fff} 94 | .btn-vk{color:#fff;background-color:#587ea3;border-color:rgba(0,0,0,0.2)}.btn-vk:hover,.btn-vk:focus,.btn-vk:active,.btn-vk.active,.open>.dropdown-toggle.btn-vk{color:#fff;background-color:#466482;border-color:rgba(0,0,0,0.2)} 95 | .btn-vk:active,.btn-vk.active,.open>.dropdown-toggle.btn-vk{background-image:none} 96 | .btn-vk.disabled,.btn-vk[disabled],fieldset[disabled] .btn-vk,.btn-vk.disabled:hover,.btn-vk[disabled]:hover,fieldset[disabled] .btn-vk:hover,.btn-vk.disabled:focus,.btn-vk[disabled]:focus,fieldset[disabled] .btn-vk:focus,.btn-vk.disabled:active,.btn-vk[disabled]:active,fieldset[disabled] .btn-vk:active,.btn-vk.disabled.active,.btn-vk[disabled].active,fieldset[disabled] .btn-vk.active{background-color:#587ea3;border-color:rgba(0,0,0,0.2)} 97 | .btn-vk .badge{color:#587ea3;background-color:#fff} 98 | .btn-yahoo{color:#fff;background-color:#720e9e;border-color:rgba(0,0,0,0.2)}.btn-yahoo:hover,.btn-yahoo:focus,.btn-yahoo:active,.btn-yahoo.active,.open>.dropdown-toggle.btn-yahoo{color:#fff;background-color:#500a6f;border-color:rgba(0,0,0,0.2)} 99 | .btn-yahoo:active,.btn-yahoo.active,.open>.dropdown-toggle.btn-yahoo{background-image:none} 100 | .btn-yahoo.disabled,.btn-yahoo[disabled],fieldset[disabled] .btn-yahoo,.btn-yahoo.disabled:hover,.btn-yahoo[disabled]:hover,fieldset[disabled] .btn-yahoo:hover,.btn-yahoo.disabled:focus,.btn-yahoo[disabled]:focus,fieldset[disabled] .btn-yahoo:focus,.btn-yahoo.disabled:active,.btn-yahoo[disabled]:active,fieldset[disabled] .btn-yahoo:active,.btn-yahoo.disabled.active,.btn-yahoo[disabled].active,fieldset[disabled] .btn-yahoo.active{background-color:#720e9e;border-color:rgba(0,0,0,0.2)} 101 | .btn-yahoo .badge{color:#720e9e;background-color:#fff} 102 | --------------------------------------------------------------------------------