├── .gitignore ├── DjangoHome ├── django_house │ ├── __init__.py │ ├── settings.py │ ├── urls.py │ └── wsgi.py ├── house │ ├── __init__.py │ ├── admin.py │ ├── forms.py │ ├── models.py │ ├── site.py │ ├── templates │ │ ├── branch_detail.html │ │ ├── building_detail.html │ │ ├── company_detail.html │ │ ├── company_index.html │ │ ├── company_index.html.bak │ │ ├── company_search.html │ │ ├── data │ │ │ ├── all_count.xml │ │ │ ├── all_size.xml │ │ │ ├── live_count.xml │ │ │ └── live_size.xml │ │ ├── datastat_companystat.html │ │ ├── datastat_trend.html │ │ ├── datastat_trend.html.2 │ │ ├── datastat_trend.html.bak.1 │ │ ├── datastat_trend_all.html │ │ ├── datastat_trend_live.html │ │ ├── inc_html │ │ │ ├── footer_inc.html │ │ │ ├── header_inc.html │ │ │ └── navbar_inc.html │ │ ├── pagination │ │ │ └── pagination.html │ │ ├── project_detail.html │ │ ├── project_index.html │ │ ├── project_search.html │ │ └── tmp.bak.html │ ├── tests.py │ ├── urls.py │ └── views.py ├── log │ ├── Django_LemonHouse.log.2015-03-08 │ ├── Django_LemonHouse.log.2015-03-09 │ └── Django_LemonHouse.log.2015-03-10 ├── manage.py └── static │ ├── css │ ├── bootstrap-responsive.css │ ├── bootstrap-responsive.min.css │ ├── bootstrap.css │ └── bootstrap.min.css │ ├── fusioncharts │ ├── js │ │ ├── fusioncharts.charts.js │ │ ├── fusioncharts.gantt.js │ │ ├── fusioncharts.js │ │ ├── fusioncharts.maps.js │ │ ├── fusioncharts.powercharts.js │ │ ├── fusioncharts.widgets.js │ │ └── jquery-1.9.1.js │ ├── maps │ │ ├── fusioncharts.usa.js │ │ ├── fusioncharts.world.js │ │ └── readme.txt │ └── themes │ │ ├── fusioncharts.theme.carbon.js │ │ ├── fusioncharts.theme.ocean.js │ │ └── fusioncharts.theme.zune.js │ ├── img │ ├── glyphicons-halflings-white.png │ └── glyphicons-halflings.png │ └── js │ ├── bootstrap.js │ ├── bootstrap.min.js │ ├── jquery │ └── jquery.min.js │ └── locales │ └── bootstrap-datetimepicker.zh-CN.js ├── README.md ├── spider ├── LemonHouseSpider.py ├── LemonHouseSpider.py.bak └── LemonHouseSpiderLogging.conf ├── src └── pagination │ ├── pagination.html │ ├── pagination.html.bak │ └── pagination.html.new └── task ├── LemonHouse.cron ├── companystat.sql └── datastat.sql /.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 | build/ 12 | develop-eggs/ 13 | dist/ 14 | downloads/ 15 | eggs/ 16 | lib/ 17 | lib64/ 18 | parts/ 19 | sdist/ 20 | var/ 21 | *.egg-info/ 22 | .installed.cfg 23 | *.egg 24 | 25 | # PyInstaller 26 | # Usually these files are written by a python script from a template 27 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 28 | *.manifest 29 | *.spec 30 | 31 | # Installer logs 32 | pip-log.txt 33 | pip-delete-this-directory.txt 34 | 35 | # Unit test / coverage reports 36 | htmlcov/ 37 | .tox/ 38 | .coverage 39 | .cache 40 | nosetests.xml 41 | coverage.xml 42 | 43 | # Translations 44 | *.mo 45 | *.pot 46 | 47 | # Django stuff: 48 | *.log 49 | 50 | # Sphinx documentation 51 | docs/_build/ 52 | 53 | # PyBuilder 54 | target/ 55 | -------------------------------------------------------------------------------- /DjangoHome/django_house/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cheyo/LemonHouse/b06dbe11ef632fbfdc23464e67b7eb5b67dd257d/DjangoHome/django_house/__init__.py -------------------------------------------------------------------------------- /DjangoHome/django_house/settings.py: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | 4 | """ 5 | Django settings for django_house project. 6 | 7 | For more information on this file, see 8 | https://docs.djangoproject.com/en/1.6/topics/settings/ 9 | 10 | For the full list of settings and their values, see 11 | https://docs.djangoproject.com/en/1.6/ref/settings/ 12 | """ 13 | 14 | # Build paths inside the project like this: os.path.join(BASE_DIR, ...) 15 | import os 16 | BASE_DIR = os.path.dirname(os.path.dirname(__file__)) 17 | 18 | 19 | # Quick-start development settings - unsuitable for production 20 | # See https://docs.djangoproject.com/en/1.6/howto/deployment/checklist/ 21 | 22 | # SECURITY WARNING: keep the secret key used in production secret! 23 | SECRET_KEY = 'd(bdekws!7e*iihl(&!+!e&ob-1fas@muu42+ostzoohi5t(ml' 24 | 25 | # SECURITY WARNING: don't run with debug turned on in production! 26 | DEBUG = True 27 | 28 | TEMPLATE_DEBUG = True 29 | 30 | ALLOWED_HOSTS = [] 31 | 32 | 33 | # Application definition 34 | 35 | INSTALLED_APPS = ( 36 | 'django.contrib.admin', 37 | 'django.contrib.auth', 38 | 'django.contrib.contenttypes', 39 | 'django.contrib.sessions', 40 | 'django.contrib.messages', 41 | 'django.contrib.staticfiles', 42 | 'pagination', 43 | 'house', 44 | ) 45 | 46 | MIDDLEWARE_CLASSES = ( 47 | 'django.contrib.sessions.middleware.SessionMiddleware', 48 | 'django.middleware.common.CommonMiddleware', 49 | 'django.middleware.csrf.CsrfViewMiddleware', 50 | 'django.contrib.auth.middleware.AuthenticationMiddleware', 51 | 'django.contrib.messages.middleware.MessageMiddleware', 52 | 'django.middleware.clickjacking.XFrameOptionsMiddleware', 53 | 'pagination.middleware.PaginationMiddleware', 54 | ) 55 | 56 | ROOT_URLCONF = 'django_house.urls' 57 | 58 | WSGI_APPLICATION = 'django_house.wsgi.application' 59 | 60 | SESSION_EXPIRE_AT_BROWSER_CLOSE = True 61 | 62 | # Database 63 | # https://docs.djangoproject.com/en/1.6/ref/settings/#databases 64 | 65 | DATABASES = { 66 | 'default': { 67 | 'ENGINE': 'django.db.backends.mysql', 68 | 'NAME': 'LemonHouse', 69 | 'USER': 'root', 70 | 'PASSWORD': 'abcabc', 71 | 'HOST': '127.0.0.1', 72 | } 73 | } 74 | 75 | # Internationalization 76 | # https://docs.djangoproject.com/en/1.6/topics/i18n/ 77 | 78 | LANGUAGE_CODE = 'en-us' 79 | 80 | TIME_ZONE = 'Asia/Shanghai' 81 | 82 | USE_I18N = True 83 | 84 | USE_L10N = True 85 | 86 | USE_TZ = True 87 | 88 | 89 | # Static files (CSS, JavaScript, Images) 90 | # https://docs.djangoproject.com/en/1.6/howto/static-files/ 91 | 92 | STATIC_URL = '/static/' 93 | 94 | STATICFILES_DIRS = ( 95 | # Put strings here, like "/home/html/static" or "C:/www/django/static". 96 | # Always use forward slashes, even on Windows. 97 | # Don't forget to use absolute paths, not relative paths. 98 | os.path.join(BASE_DIR, "static"), 99 | ) 100 | 101 | TEMPLATE_CONTEXT_PROCESSORS = ( 102 | "django.contrib.auth.context_processors.auth", 103 | "django.core.context_processors.debug", 104 | "django.core.context_processors.i18n", 105 | "django.core.context_processors.media", 106 | "django.core.context_processors.static", 107 | "django.core.context_processors.tz", 108 | "django.contrib.messages.context_processors.messages", 109 | "django.core.context_processors.request", # new add 110 | "house.site.settings" # new add 111 | ) 112 | 113 | PROJECT_ROOT = os.path.join(os.path.realpath(os.path.dirname(__file__)), os.pardir) 114 | 115 | LOGGING = { 116 | 'version': 1, 117 | 'disable_existing_loggers': True, 118 | 'formatters': { 119 | 'standard': { 120 | 'format': '%(asctime)s[%(name)s][%(levelname)s] %(message)s [%(filename)s,%(lineno)d]' 121 | }, 122 | }, 123 | 'filters': { 124 | }, 125 | 'handlers': { 126 | 'mail_admins': { 127 | 'level': 'ERROR', 128 | 'class': 'django.utils.log.AdminEmailHandler', 129 | 'formatter':'standard', 130 | }, 131 | 'house_handler': { 132 | 'level':'DEBUG', 133 | 'class':'logging.handlers.TimedRotatingFileHandler', 134 | 'filename': os.path.join(PROJECT_ROOT+'/log/', 'Django_LemonHouse.log'), 135 | 'when':'MIDNIGHT', # S - Seconds 136 | # M - Minutes 137 | # H - Hours 138 | # D - Days 注意配置为D可能会产生隔天服务重启未生成新log的问题,应该使用MIDNIGTH 139 | # MIDNIGHT - roll over at midnight 需注意与D的区别 140 | # W{0-6} - roll over on a certain day; 0 - Monday 141 | 'backupCount': 7, 142 | 'encoding': 'utf8', 143 | 'interval' : 1, 144 | 'formatter':'standard', 145 | }, 146 | }, 147 | 'loggers': { 148 | 'django.request': { 149 | 'handlers': ['mail_admins'], 150 | 'level': 'ERROR', 151 | 'propagate': True, 152 | }, 153 | 'house':{ 154 | 'handlers': ['house_handler'], 155 | 'level': 'DEBUG', 156 | 'propagate': False 157 | }, 158 | } 159 | } 160 | -------------------------------------------------------------------------------- /DjangoHome/django_house/urls.py: -------------------------------------------------------------------------------- 1 | from django.conf.urls import patterns, include, url 2 | 3 | from django.contrib import admin 4 | admin.autodiscover() 5 | 6 | urlpatterns = patterns('', 7 | # Examples: 8 | # url(r'^$', 'django_house.views.home', name='home'), 9 | # url(r'^blog/', include('blog.urls')), 10 | 11 | url(r'^admin/', include(admin.site.urls)), 12 | url(r'^$', 'house.views.project_index', name='site_index'), 13 | #url(r'^.+', include('house.urls')), 14 | url(r'^house/$', 'house.views.project_index', name='project_index'), 15 | url(r'^house/search/$', 'house.views.project_search', name='project_search'), 16 | url(r'^house/(\d+)/$', 'house.views.project_detail', name='project_detail'), 17 | url(r'^house/(\d+)/(.+)/$', 'house.views.building_detail', name='building_detail'), 18 | url(r'^branch/(\d+)/$', 'house.views.branch_detail', name='branch_detail'), 19 | url(r'^company/$', 'house.views.company_index', name='company_index'), 20 | url(r'^company/search/$', 'house.views.company_search', name='company_search'), 21 | url(r'^company/(.+)/$', 'house.views.company_detail', name='company_detail'), 22 | url(r'^datastat/trend/$', 'house.views.datastat_trend_live', name='datastat_trend'), 23 | url(r'^datastat/trend/live/$', 'house.views.datastat_trend_live', name='datastat_trend_live'), 24 | url(r'^datastat/trend/all/$', 'house.views.datastat_trend_all', name='datastat_trend_all'), 25 | url(r'^datastat/trend/xml/live_count.xml$', 'house.views.trend_xml_live_count', name='trend_xml_live_count'), 26 | url(r'^datastat/trend/xml/live_size.xml$', 'house.views.trend_xml_live_size', name='trend_xml_live_size'), 27 | url(r'^datastat/trend/xml/all_count.xml$', 'house.views.trend_xml_all_count', name='trend_xml_all_count'), 28 | url(r'^datastat/trend/xml/all_size.xml$', 'house.views.trend_xml_all_size', name='trend_xml_all_size'), 29 | url(r'^datastat/companystat$', 'house.views.datastat_companystat', name='datastat_companystat'), 30 | ) 31 | 32 | 33 | -------------------------------------------------------------------------------- /DjangoHome/django_house/wsgi.py: -------------------------------------------------------------------------------- 1 | """ 2 | WSGI config for django_house 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.6/howto/deployment/wsgi/ 8 | """ 9 | 10 | import os 11 | os.environ.setdefault("DJANGO_SETTINGS_MODULE", "django_house.settings") 12 | 13 | from django.core.wsgi import get_wsgi_application 14 | application = get_wsgi_application() 15 | -------------------------------------------------------------------------------- /DjangoHome/house/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cheyo/LemonHouse/b06dbe11ef632fbfdc23464e67b7eb5b67dd257d/DjangoHome/house/__init__.py -------------------------------------------------------------------------------- /DjangoHome/house/admin.py: -------------------------------------------------------------------------------- 1 | from django.contrib import admin 2 | 3 | # Register your models here. 4 | -------------------------------------------------------------------------------- /DjangoHome/house/forms.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | 4 | from django import forms 5 | 6 | class ProjectSearchForm(forms.Form): 7 | keyword = forms.CharField(max_length=100, required=True, 8 | widget=forms.TextInput(attrs={'class': 'span4 search-query', 'placeholder': '项目关键字'})) 9 | 10 | class CompanySearchForm(forms.Form): 11 | keyword = forms.CharField(max_length=100, required=True, 12 | widget=forms.TextInput(attrs={'class': 'span4 search-query', 'placeholder': '开发商关键字'})) -------------------------------------------------------------------------------- /DjangoHome/house/models.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | 4 | from django.db import models 5 | 6 | # Create your models here. 7 | class Project(models.Model): 8 | id = models.IntegerField(primary_key=True) 9 | name = models.CharField(max_length=100) 10 | company = models.CharField(max_length=100,db_index=True) 11 | region = models.CharField(max_length=10) 12 | approved_date = models.DateField() 13 | 14 | class Meta: 15 | ordering = ["-approved_date"] 16 | 17 | class ProjectSummary(models.Model): 18 | type = models.CharField(max_length=50) 19 | min_size = models.DecimalField(max_digits = 10, decimal_places = 2) 20 | max_size = models.DecimalField(max_digits = 10, decimal_places = 2) 21 | min_price = models.DecimalField(max_digits = 10, decimal_places = 2, null=True) 22 | max_price = models.DecimalField(max_digits = 10, decimal_places = 2, null=True) 23 | avg_price = models.DecimalField(max_digits = 10, decimal_places = 2, null=True) 24 | sample_count = models.IntegerField() 25 | total_count = models.IntegerField() 26 | project = models.ForeignKey(Project,db_index=True) 27 | 28 | class Branch(models.Model): 29 | name = models.CharField(max_length=100) 30 | url = models.CharField(max_length=100) 31 | md5 = models.CharField(max_length=32) 32 | building_name = models.CharField(max_length=100) 33 | project = models.ForeignKey(Project,db_index=True) 34 | 35 | class BranchSummary(models.Model): 36 | type = models.CharField(max_length=50) 37 | min_size = models.DecimalField(max_digits = 10, decimal_places = 2) 38 | max_size = models.DecimalField(max_digits = 10, decimal_places = 2) 39 | min_price = models.DecimalField(max_digits = 10, decimal_places = 2, null=True) 40 | max_price = models.DecimalField(max_digits = 10, decimal_places = 2, null=True) 41 | avg_price = models.DecimalField(max_digits = 10, decimal_places = 2, null=True) 42 | sample_count = models.IntegerField() 43 | total_count = models.IntegerField() 44 | branch = models.ForeignKey(Branch,db_index=True) 45 | 46 | class House(models.Model): 47 | sn = models.AutoField(primary_key=True) 48 | id = models.IntegerField(null=False,unique=True) 49 | name = models.CharField(max_length=50) 50 | floor = models.CharField(max_length=50) 51 | size1 = models.DecimalField(max_digits = 10, decimal_places = 2) 52 | size2 = models.DecimalField(max_digits = 10, decimal_places = 2) 53 | size3 = models.DecimalField(max_digits = 10, decimal_places = 2) 54 | price = models.DecimalField(max_digits = 12, decimal_places = 2, null=True) 55 | type = models.CharField(max_length=50) 56 | STATUS = ( 57 | (1, '期房待售'), 58 | (2, '已签预售合同'), 59 | (3, '已签认购书'), 60 | (4, '已备案'), 61 | (5, '初始登记'), 62 | (6, '管理局锁定'), 63 | (7, '自动锁定'), 64 | (8, '安居房'), 65 | (999, '未知'), 66 | ) 67 | status = models.IntegerField(choices=STATUS) 68 | branch = models.ForeignKey(Branch,db_index=True) 69 | 70 | class Meta: 71 | ordering = ["sn"] 72 | 73 | class DataStat(models.Model): 74 | month = models.CharField(max_length=20) 75 | type = models.CharField(max_length=50) 76 | house_count = models.IntegerField() 77 | size_count = models.DecimalField(max_digits = 10, decimal_places = 2, null=True) 78 | 79 | class CompanyStat(models.Model): 80 | company = models.CharField(max_length=100,db_index=True) 81 | project_count = models.IntegerField() 82 | house_count = models.IntegerField(null=True) 83 | size_count = models.DecimalField(max_digits = 10, decimal_places = 2, null=True) 84 | 85 | class SystemStatus(models.Model): 86 | id = models.IntegerField(primary_key=True) 87 | last_update = models.DateField() 88 | -------------------------------------------------------------------------------- /DjangoHome/house/site.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | 4 | import logging 5 | from house.models import SystemStatus 6 | 7 | logger = logging.getLogger(__name__) 8 | 9 | from django.conf import settings as _settings 10 | def settings(request): 11 | """ 12 | TEMPLATE_CONTEXT_PROCESSORS 13 | """ 14 | context = { 'settings': _settings } 15 | user = request.user 16 | try: 17 | #..... 这里设置全局变量 18 | system_status = SystemStatus.objects.all()[0] 19 | context['system_status'] = system_status 20 | context['site_name'] = '柠檬House' 21 | logger.info("set system status variable") 22 | except Exception,e: 23 | logger.error("settings:%s" % e) 24 | return context 25 | -------------------------------------------------------------------------------- /DjangoHome/house/templates/branch_detail.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | {{ site_name }} 6 | 7 | {% include 'inc_html/header_inc.html' %} 8 | 9 | 10 | 11 | 12 | {% include 'inc_html/navbar_inc.html' %} 13 | 14 |
15 |

{{ dict_project_info.project_name }}

16 | 17 | {% for summary in branch_summary_list %} 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 40 | 41 | 42 |
类型:{{ summary.type }}
类型: {{ summary.type }}
面积: {{ summary.min_size }} ~ {{ summary.max_size }}平方米
单价: {{ summary.min_price }} ~ {{ summary.max_price }}元/平方米

37 | 均价: {{ summary.avg_price }}元/平方米 38 | 基于: [{{ summary.sample_count }}/{{ summary.total_count }}] 评估 39 |

43 |

44 | {% endfor %} 45 |

46 | 47 |
48 |

{{ dict_project_info.project_name }}

49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | {% if house_list %} 66 | {% for house in house_list %} 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 92 | 93 | 94 | {% endfor %} 95 | {% else %} 96 | 97 | 98 | 99 | {% endif %} 100 | 101 |
楼层房号类型面积1面积2面积3单价状态操作
{{ house.floor }}{{ house.name }}{{ house.type }}{{ house.size1|floatformat }}{{ house.size2|floatformat }}{{ house.size3|floatformat }}{{ house.price|floatformat|default:"未知" }} 76 | {% if 1 == house.status %} 77 | 78 | {% elif 2 == house.status %} 79 | 80 | {% elif 3 == house.status %} 81 | 82 | {% elif 4 == house.status %} 83 | 84 | {% elif 5 == house.status %} 85 | 86 | {% elif 6 == house.status %} 87 | 88 | {% else %} 89 | 90 | {% endif %} 91 | {{ house.get_status_display }}官网
no data
102 |
103 | 104 | {% include 'inc_html/footer_inc.html' %} 105 | 106 | 107 | -------------------------------------------------------------------------------- /DjangoHome/house/templates/building_detail.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | {{ site_name }} 6 | 7 | {% include 'inc_html/header_inc.html' %} 8 | 9 | 10 | 11 | 12 | 13 | {% include 'inc_html/navbar_inc.html' %} 14 | 15 |
16 | 22 |
23 | 24 | 25 |
26 | 37 |
38 | {% for branch_name, house_list in dict_house_list.iteritems %} 39 | 40 | {% if forloop.first %} 41 |
42 | {% else %} 43 |
44 | {% endif %} 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | {% if house_list %} 62 | {% for house in house_list %} 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 88 | 89 | 90 | {% endfor %} 91 | {% else %} 92 | 93 | 94 | 95 | {% endif %} 96 | 97 |
楼层房号类型建筑面积户内面积分摊面积单价状态操作
{{ house.floor }}{{ house.name }}{{ house.type }}{{ house.size1|floatformat }}{{ house.size2|floatformat }}{{ house.size3|floatformat }}{{ house.price|floatformat|default:"未知" }} 72 | {% if 1 == house.status %} 73 | 74 | {% elif 2 == house.status %} 75 | 76 | {% elif 3 == house.status %} 77 | 78 | {% elif 4 == house.status %} 79 | 80 | {% elif 5 == house.status %} 81 | 82 | {% elif 6 == house.status %} 83 | 84 | {% else %} 85 | 86 | {% endif %} 87 | {{ house.get_status_display }}官网
no data
98 |
99 | {% endfor %} 100 |
101 |
102 | 103 | {% include 'inc_html/footer_inc.html' %} 104 | 105 | 106 | -------------------------------------------------------------------------------- /DjangoHome/house/templates/company_detail.html: -------------------------------------------------------------------------------- 1 | {% load pagination_tags %} 2 | 3 | 4 | 5 | 6 | {{ site_name }} - {{ company_name }} 7 | 8 | {% include 'inc_html/header_inc.html' %} 9 | 10 | 11 | 12 | 13 | {% include 'inc_html/navbar_inc.html' %} 14 | 15 |
16 | 21 |
22 | 23 |
24 | 25 | 26 |

{{ company_name }}

27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | {% autopaginate project_list 30 %} 41 | {% if project_list %} 42 | {% for project in project_list %} 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | {% endfor %} 51 | {% else %} 52 | 53 | 54 | 55 | {% endif %} 56 | 57 |
序号项目名称开发企业开发企业上网时期
{{ forloop.counter }}{{ project.name }}{{ project.company }}{{ project.region }}{{ project.approved_date.isoformat }}
no data
58 |
59 | {% paginate %} 60 | 61 | {% include 'inc_html/footer_inc.html' %} 62 | 63 | 64 | -------------------------------------------------------------------------------- /DjangoHome/house/templates/company_index.html: -------------------------------------------------------------------------------- 1 | {% load pagination_tags %} 2 | 3 | 4 | 5 | 6 | {{ site_name }} 7 | 8 | {% include 'inc_html/header_inc.html' %} 9 | 10 | 11 | 12 | 13 | 14 | {% include 'inc_html/navbar_inc.html' %} 15 | 16 |
17 | 22 |
23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | {% autopaginate company_list 30 %} 34 | {% if company_list %} 35 | {% for company in company_list %} 36 | 37 | 38 | 39 | 40 | {% endfor %} 41 | {% else %} 42 | 43 | 45 | {% endif %} 46 | 47 |
序号开发企业
{{ page_obj.start_index | add:forloop.counter | add:"-1" }}{{ company }}
没有满足条件的数据. 44 |
48 |
49 | {% paginate %} 50 | 51 | {% include 'inc_html/footer_inc.html' %} 52 | 53 | 54 | 55 | -------------------------------------------------------------------------------- /DjangoHome/house/templates/company_index.html.bak: -------------------------------------------------------------------------------- 1 | {% load pagination_tags %} 2 | 3 | 4 | 5 | 6 | 柠檬House 7 | 8 | {% include 'header_inc.html' %} 9 | 10 | 11 | 12 | 13 | 14 | {% include 'navbar_inc.html' %} 15 | 16 |
17 | 21 |
22 | 23 |
24 | 25 |
26 | 33 | {% for error in form.keyword.errors %} 34 |
  • {{ error|escape }}
  • 35 | {% endfor %} 36 |
    37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | {% autopaginate company_list 30 %} 47 | {% if company_list %} 48 | {% for company in company_list %} 49 | 50 | 51 | 52 | 53 | {% endfor %} 54 | {% else %} 55 | 56 | 57 | 58 | {% endif %} 59 | 60 |
    序号开发企业
    {{ page_obj.start_index | add:forloop.counter | add:"-1" }}{{ company }}
    no data
    61 |
    62 | {% paginate %} 63 | 64 | 65 | -------------------------------------------------------------------------------- /DjangoHome/house/templates/company_search.html: -------------------------------------------------------------------------------- 1 | {% load pagination_tags %} 2 | 3 | 4 | 5 | 6 | {{ site_name }} 7 | 8 | {% include 'inc_html/header_inc.html' %} 9 | 10 | 11 | 12 | 13 | 14 | {% include 'inc_html/navbar_inc.html' %} 15 | 16 |
    17 | 22 |
    23 | 24 |
    25 |
    26 | 搜索结果: 27 |
    28 |
    29 | 36 | {% if is_show_result %} 37 | {% for error in form.keyword.errors %} 38 |
  • {{ error|escape }}
  • 39 | {% endfor %} 40 | {% endif %} 41 |
    42 | 45 |
    46 | 47 | {% if is_show_result %} 48 |
    49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | {% autopaginate company_list 30 %} 58 | {% if company_list %} 59 | {% for company in company_list %} 60 | 61 | 62 | 63 | 64 | {% endfor %} 65 | {% else %} 66 | 67 | 69 | {% endif %} 70 | 71 |
    序号开发企业
    {{ page_obj.start_index | add:forloop.counter | add:"-1" }}{{ company }}
    没有满足条件的数据. 68 |
    72 |
    73 | 74 | {% paginate %} 75 | 76 | {% endif %} 77 | 78 | {% include 'inc_html/footer_inc.html' %} 79 | 80 | 81 | 82 | -------------------------------------------------------------------------------- /DjangoHome/house/templates/data/all_count.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | {% if trend_data %} 4 | {% for trend_stat in trend_data %} 5 | 6 | {% endfor %} 7 | {% endif %} 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /DjangoHome/house/templates/data/all_size.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | {% if trend_data %} 4 | {% for trend_stat in trend_data %} 5 | 6 | {% endfor %} 7 | {% endif %} 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /DjangoHome/house/templates/data/live_count.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | {% if trend_data %} 4 | {% for trend_stat in trend_data %} 5 | 6 | {% endfor %} 7 | {% endif %} 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /DjangoHome/house/templates/data/live_size.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | {% if trend_data %} 4 | {% for trend_stat in trend_data %} 5 | 6 | {% endfor %} 7 | {% endif %} 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /DjangoHome/house/templates/datastat_companystat.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | {{ site_name }} 6 | 7 | {% include 'inc_html/header_inc.html' %} 8 | 9 | 10 | 11 | 12 | 13 | {% include 'inc_html/navbar_inc.html' %} 14 | 15 |
    16 | 21 |
    22 | 23 |
    24 | 29 |
    30 |
    31 | 32 | {% if company_stat_project %} 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | {% for company_stat in company_stat_project %} 45 | 46 | 47 | 48 | 54 | 55 | 56 | {% endfor %} 57 | {% else %} 58 | 59 | 60 | 61 | {% endif %} 62 | 63 |
    序号开发企业图形化展示数量
    {{ forloop.counter }}{{ company_stat.company }} 49 |
    50 |
    52 |
    53 |
    {{ company_stat.project_count }}
    no data
    64 |
    65 | 66 |
    67 | {% if company_stat_house %} 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | {% for company_stat in company_stat_house %} 80 | 81 | 82 | 83 | 89 | 90 | 91 | {% endfor %} 92 | {% else %} 93 | 94 | 95 | 96 | {% endif %} 97 | 98 |
    序号开发企业图形化展示数量
    {{ forloop.counter }}{{ company_stat.company }} 84 |
    85 |
    87 |
    88 |
    {{ company_stat.house_count }}
    no data
    99 |
    100 | 101 |
    102 | {% if company_stat_size %} 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | {% for company_stat in company_stat_size %} 115 | 116 | 117 | 118 | 124 | 125 | 126 | {% endfor %} 127 | {% else %} 128 | 129 | 130 | 131 | {% endif %} 132 | 133 |
    序号开发企业图形化展示数量
    {{ forloop.counter }}{{ company_stat.company }} 119 |
    120 |
    122 |
    123 |
    {{ company_stat.size_count }}
    no data
    134 |
    135 |
    136 |
    137 | 138 | {% include 'inc_html/footer_inc.html' %} 139 | 140 | 141 | 142 | -------------------------------------------------------------------------------- /DjangoHome/house/templates/datastat_trend.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | {{ site_name }} 6 | 7 | {% include 'inc_html/header_inc.html' %} 8 | 9 | 10 | 11 | 12 | 13 | 14 | {% include 'inc_html/navbar_inc.html' %} 15 | 16 |
    17 | 22 |
    23 | 24 |
    25 | 29 |
    30 |
    31 |
    图形加载中...
    32 |
    图形加载中...
    33 |
    34 |
    35 |
    图形加载中...
    36 |
    图形加载中...
    37 |
    38 |
    39 |
    40 | 41 | 110 | 111 | {% include 'inc_html/footer_inc.html' %} 112 | 113 | 114 | 115 | -------------------------------------------------------------------------------- /DjangoHome/house/templates/datastat_trend.html.2: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | {{ site_name }} 6 | 7 | {% include 'inc_html/header_inc.html' %} 8 | 9 | 10 | 11 | 12 | 13 | 14 | {% include 'inc_html/navbar_inc.html' %} 15 | 16 |
    17 | 22 |
    23 | 24 |
    25 | 29 |
    30 |
    31 |
    图形加载中...
    32 |
    图形加载中...
    33 |
    34 |
    35 |
    图形加载中...
    36 |
    图形加载中...
    37 |
    38 |
    39 |
    40 | 41 | 110 | 111 | {% include 'inc_html/footer_inc.html' %} 112 | 113 | 114 | 115 | -------------------------------------------------------------------------------- /DjangoHome/house/templates/datastat_trend.html.bak.1: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 柠檬House - {{ dict_project_info.project_name }} 6 | 7 | {% include 'inc_html/header_inc.html' %} 8 | 9 | 10 | 11 | 12 | 13 | 14 | {% include 'inc_html/navbar_inc.html' %} 15 | 16 |
    17 | 22 |
    23 | 24 |
    25 | 29 |
    30 |
    31 |
    在这加载图形
    32 |
    在这加载图形
    33 |
    34 |
    35 |
    在这加载图形
    36 |
    在这加载图形
    37 |
    38 |
    39 |
    40 | 41 | 65 | 66 | {% include 'inc_html/footer_inc.html' %} 67 | 68 | 69 | 70 | -------------------------------------------------------------------------------- /DjangoHome/house/templates/datastat_trend_all.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | {{ site_name }} 6 | 7 | {% include 'inc_html/header_inc.html' %} 8 | 9 | 10 | 11 | 12 | 13 | 14 | {% include 'inc_html/navbar_inc.html' %} 15 | 16 |
    17 | 22 |
    23 | 24 |
    25 | 29 |
    30 |
    31 |
    图形加载中...
    32 |
    图形加载中...
    33 |
    34 |
    35 |
    图形加载中...
    36 |
    图形加载中...
    37 |
    38 |
    39 |
    40 | 41 | 52 | 53 | {% include 'inc_html/footer_inc.html' %} 54 | 55 | 56 | 57 | -------------------------------------------------------------------------------- /DjangoHome/house/templates/datastat_trend_live.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | {{ site_name }} 6 | 7 | {% include 'inc_html/header_inc.html' %} 8 | 9 | 10 | 11 | 12 | 13 | 14 | {% include 'inc_html/navbar_inc.html' %} 15 | 16 |
    17 | 22 |
    23 | 24 |
    25 | 29 |
    30 |
    31 |
    图形加载中...
    32 |
    图形加载中...
    33 |
    34 |
    35 |
    图形加载中...
    36 |
    图形加载中...
    37 |
    38 |
    39 |
    40 | 41 | 52 | 53 | {% include 'inc_html/footer_inc.html' %} 54 | 55 | 56 | 57 | -------------------------------------------------------------------------------- /DjangoHome/house/templates/inc_html/footer_inc.html: -------------------------------------------------------------------------------- 1 |
    2 |
    3 | © 2014-2015   |    4 | {{ site_name }} - 深圳市新房数据分析工具 by cheyo    |    5 | 6 | 联系作者   7 |
    8 |
    9 | 10 | 11 | 18 | -------------------------------------------------------------------------------- /DjangoHome/house/templates/inc_html/header_inc.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 10 | 11 | 40 | 41 | 42 | -------------------------------------------------------------------------------- /DjangoHome/house/templates/inc_html/navbar_inc.html: -------------------------------------------------------------------------------- 1 | 58 | -------------------------------------------------------------------------------- /DjangoHome/house/templates/pagination/pagination.html: -------------------------------------------------------------------------------- 1 | {% if is_paginated %} 2 | {% load i18n %} 3 | 26 | {% endif %} 27 | -------------------------------------------------------------------------------- /DjangoHome/house/templates/project_detail.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | {{ site_name }} 6 | 7 | {% include 'inc_html/header_inc.html' %} 8 | 9 | 10 | 11 | 12 | {% include 'inc_html/navbar_inc.html' %} 13 | 14 |
    15 | 20 |
    21 | 22 |
    23 |

    {{ project.name }}

    24 | {% for summary in project_summary_list %} 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 47 | 48 | 49 |
    类型:{{ summary.type }}
    类型: {{ summary.type }}
    面积: {{ summary.min_size }} ~ {{ summary.max_size }}平方米
    单价: {{ summary.min_price }} ~ {{ summary.max_price }}元/平方米

    44 | 均价: {{ summary.avg_price }}元/平方米 45 | 基于: [{{ summary.sample_count }}/{{ summary.total_count }}] 评估 46 |

    50 |

    51 | {% endfor %} 52 |

    53 | 54 |
    55 | {% for building_name in building_list %} 56 | 59 | {% endfor %} 60 |
    61 | 62 | {% include 'inc_html/footer_inc.html' %} 63 | 64 | 65 | -------------------------------------------------------------------------------- /DjangoHome/house/templates/project_index.html: -------------------------------------------------------------------------------- 1 | {% load pagination_tags %} 2 | 3 | 4 | 5 | 6 | {{ site_name }} 7 | 8 | {% include 'inc_html/header_inc.html' %} 9 | 10 | 11 | 12 | 13 | 14 | {% include 'inc_html/navbar_inc.html' %} 15 | 16 |
    17 | 22 |
    23 | 24 |
    25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | {% autopaginate project_list 30 %} 37 | {% if project_list %} 38 | {% for project in project_list %} 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | {% endfor %} 48 | {% else %} 49 | 50 | 52 | {% endif %} 53 | 54 |
    序号项目名称开发企业区域上网时期
    {{ page_obj.start_index | add:forloop.counter | add:"-1" }}{{ project.name }}{{ project.company }}{{ project.region }}{{ project.approved_date.isoformat }}
    没有满足条件的数据. 51 |
    55 |
    56 | 57 | {% paginate %} 58 | 59 | {% include 'inc_html/footer_inc.html' %} 60 | 61 | 62 | 63 | -------------------------------------------------------------------------------- /DjangoHome/house/templates/project_search.html: -------------------------------------------------------------------------------- 1 | {% load pagination_tags %} 2 | 3 | 4 | 5 | 6 | {{ site_name }} 7 | 8 | {% include 'inc_html/header_inc.html' %} 9 | 10 | 11 | 12 | 13 | 14 | {% include 'inc_html/navbar_inc.html' %} 15 | 16 |
    17 | 22 |
    23 | 24 |
    25 |
    26 | 搜索结果: 27 |
    28 |
    29 | 36 | {% if is_show_result %} 37 | {% for error in form.keyword.errors %} 38 |
  • {{ error|escape }}
  • 39 | {% endfor %} 40 | {% endif %} 41 |
    42 | 45 |
    46 | 47 | {% if is_show_result %} 48 |
    49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | {% autopaginate project_list 30 %} 61 | {% if project_list %} 62 | {% for project in project_list %} 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | {% endfor %} 72 | {% else %} 73 | 74 | 76 | {% endif %} 77 | 78 |
    序号项目名称开发企业区域上网时期
    {{ page_obj.start_index | add:forloop.counter | add:"-1" }}{{ project.name }}{{ project.company }}{{ project.region }}{{ project.approved_date.isoformat }}
    没有满足条件的数据. 75 |
    79 |
    80 | 81 | {% paginate %} 82 | 83 | {% endif %} 84 | 85 | {% include 'inc_html/footer_inc.html' %} 86 | 87 | 88 | 89 | -------------------------------------------------------------------------------- /DjangoHome/house/templates/tmp.bak.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 柠檬House - {{ dict_project_info.project_name }} 6 | 7 | 8 | 9 | 14 | 15 | 16 | 17 | 18 | 45 | 46 |
    47 |
    48 | 49 |
    50 | 51 |

    {{ dict_project_info.project_name }}

    52 | 53 |
    54 |
    楼盘名称:
    55 |
    {{ dict_project_info.project_name }}
    56 |
    57 |
    58 |
    总套数:
    59 |
    {{ dict_project_info.house_count }}套
    60 |
    61 |
    62 |
    单套面积:
    63 |
    {{ dict_project_info.min_size|floatformat }} ~ {{ dict_project_info.max_size|floatformat }} 平方米
    64 |
    65 |
    66 |
    单价范围:
    67 |
    {{ dict_project_info.min_price|floatformat }} ~ {{ dict_project_info.max_price|floatformat }} 元/平方米
    68 |
    69 |
    70 |
    均价:
    71 |
    {{ dict_project_info.average_price|floatformat:0|default:"未知" }} 元/平方米
    72 |
    73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | {% if house_list %} 91 | {% for house in house_list %} 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 118 | 119 | 120 | {% endfor %} 121 | {% else %} 122 | 123 | 124 | 125 | {% endif %} 126 | 127 |
    楼名座号楼层房号面积1面积2面积3单价状态操作
    {{ house.branch.building.name }}{{ house.branch.name }}{{ house.floor }}{{ house.name }}{{ house.size1|floatformat }}{{ house.size2|floatformat }}{{ house.size3|floatformat }}{{ house.price|floatformat|default:"未知" }} 102 | {% if 1 == house.status %} 103 | 104 | {% elif 2 == house.status %} 105 | 106 | {% elif 3 == house.status %} 107 | 108 | {% elif 4 == house.status %} 109 | 110 | {% elif 5 == house.status %} 111 | 112 | {% elif 6 == house.status %} 113 | 114 | {% else %} 115 | 116 | {% endif %} 117 | {{ house.get_status_display }}官网
    no data
    128 |
    129 | 130 |
    131 | 132 |
    133 | 134 |
    135 |
    136 | 137 | 138 | -------------------------------------------------------------------------------- /DjangoHome/house/tests.py: -------------------------------------------------------------------------------- 1 | from django.test import TestCase 2 | 3 | # Create your tests here. 4 | -------------------------------------------------------------------------------- /DjangoHome/house/urls.py: -------------------------------------------------------------------------------- 1 | from django.conf.urls import patterns, url 2 | 3 | from house import views 4 | 5 | urlpatterns = patterns('', 6 | url(r'^$', views.project_index, name='project_index'), 7 | url(r'^project/$', views.project_index, name='project_index'), 8 | url(r'^house/(\d+)/$', views.project_detail, name='project_detail'), 9 | url(r'^branch/(\d+)/$', views.branch_detail, name='branch_detail'), 10 | url(r'^company/(.+)/$', views.company_detail, name='company_detail'), 11 | ) 12 | -------------------------------------------------------------------------------- /DjangoHome/house/views.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | 4 | import logging 5 | from django.shortcuts import render 6 | from decimal import Decimal 7 | from house.models import * 8 | from house.forms import * 9 | from django.db.models import Sum 10 | 11 | logger = logging.getLogger(__name__) 12 | 13 | def project_index(request): 14 | logger.info("request index") 15 | form = ProjectSearchForm() 16 | project_list = Project.objects.all() 17 | context = {'form': form, 'project_list': project_list} 18 | return render(request, 'project_index.html', context) 19 | 20 | def project_search(request): 21 | project_list = Project.objects.none() 22 | is_show_result = False 23 | 24 | if not request.method == 'POST': 25 | if 'search-project-post' in request.session: 26 | request.POST = request.session['search-project-post'] 27 | request.method = 'POST' # 继续下面 if request.method == 'POST':方法的处理 28 | is_show_result = True 29 | else: 30 | form = ProjectSearchForm(request.POST) # A form bound to the POST data 31 | 32 | if request.method == 'POST': 33 | form = ProjectSearchForm(request.POST) # A form bound to the POST data 34 | request.session['search-project-post'] = request.POST 35 | is_show_result = True 36 | if form.is_valid(): # All validation rules pass 37 | keyword = form.cleaned_data['keyword'] 38 | project_list = Project.objects.filter(name__contains=keyword) 39 | project_list = list(set(project_list)) # set用于取唯一,解决上行代码distinct()无法生效问题 40 | logger.info("search project") 41 | 42 | logger.info("search project 1") 43 | 44 | return render(request, 'project_search.html', { 45 | 'form': form, 46 | 'project_list': project_list, 47 | 'is_show_result': is_show_result 48 | }) 49 | 50 | def project_detail(request, project_id): 51 | project = Project.objects.get(id=project_id) 52 | 53 | project_summary_list = ProjectSummary.objects.all().filter(project_id=project_id) 54 | 55 | dict_building_branch = {} 56 | building_list = Branch.objects.all().filter(project_id=project_id).values_list('building_name', flat=True).distinct() 57 | 58 | context = {'building_list': building_list, 59 | 'project_summary_list': project_summary_list, 60 | 'project': project} 61 | return render(request, 'project_detail.html', context) 62 | 63 | def building_detail(request, project_id, building_name): 64 | project = Project.objects.get(id=project_id) 65 | 66 | # project_summary_list = ProjectSummary.objects.all().filter(project_id=project_id) 67 | 68 | dict_house_list = {} 69 | for branch in Branch.objects.all().filter(project_id=project_id, building_name=building_name): 70 | house_list = House.objects.all().filter(branch_id=branch.id) 71 | dict_house_list[branch.name] = house_list 72 | 73 | context = {'dict_house_list': dict_house_list, 74 | 'building_name': building_name, 75 | 'project': project} 76 | logger.error(dict_house_list) 77 | return render(request, 'building_detail.html', context) 78 | 79 | def branch_detail(request, branch_id): 80 | house_list = House.objects.all().filter(branch_id=branch_id) 81 | branch_summary_list = BranchSummary.objects.all().filter(branch_id=branch_id) 82 | context = {'house_list': house_list, 'branch_summary_list': branch_summary_list} 83 | return render(request, 'branch_detail.html', context) 84 | 85 | def company_index(request): 86 | form = CompanySearchForm() 87 | company_list = Project.objects.filter().values_list('company', flat=True).distinct() 88 | #company_list = set(company_list) 89 | 90 | return render(request, 'company_index.html', { 91 | 'form': form, 92 | 'company_list': company_list 93 | }) 94 | 95 | def company_detail(request,company_name): 96 | project_list = Project.objects.filter(company=company_name) 97 | context = {'project_list': project_list, 'company_name':company_name} 98 | return render(request, 'company_detail.html', context) 99 | 100 | 101 | def company_search(request): 102 | company_list = Project.objects.none() 103 | is_show_result = False 104 | 105 | if not request.method == 'POST': 106 | if 'search-company-post' in request.session: 107 | request.POST = request.session['search-company-post'] 108 | request.method = 'POST' # 继续下面 if request.method == 'POST':方法的处理 109 | is_show_result = True 110 | else: 111 | form = CompanySearchForm(request.POST) # A form bound to the POST data 112 | 113 | if request.method == 'POST': 114 | is_show_result = True 115 | form = CompanySearchForm(request.POST) # A form bound to the POST data 116 | request.session['search-company-post'] = request.POST 117 | if form.is_valid(): # All validation rules pass 118 | keyword = form.cleaned_data['keyword'] 119 | company_list = Project.objects.filter(company__contains=keyword)\ 120 | .values_list('company', flat=True).distinct() 121 | company_list = list(set(company_list)) # set用于取唯一,解决上行代码distinct()无法生效问题 122 | logger.info("search company") 123 | logger.info("search company 1") 124 | 125 | return render(request, 'company_search.html', { 126 | 'form': form, 127 | 'company_list': company_list, 128 | 'is_show_result': is_show_result 129 | }) 130 | 131 | def datastat_trend(request): 132 | return render(request, 'datastat_trend.html') 133 | 134 | def datastat_trend_live(request): 135 | return render(request, 'datastat_trend_live.html') 136 | 137 | def datastat_trend_all(request): 138 | return render(request, 'datastat_trend_all.html') 139 | 140 | def datastat_companystat(request): 141 | company_stat_project = CompanyStat.objects.order_by('-project_count')[:50] 142 | company_stat_house = CompanyStat.objects.order_by('-house_count')[:50] 143 | company_stat_size = CompanyStat.objects.order_by('-size_count')[:50] 144 | 145 | return render(request, 'datastat_companystat.html', { 146 | 'company_stat_project': company_stat_project, 147 | 'company_stat_house': company_stat_house, 148 | 'company_stat_size': company_stat_size 149 | }) 150 | 151 | def trend_xml_live_count(request): 152 | trend_data = DataStat.objects.filter(type='住宅').order_by('month') 153 | 154 | return render(request, 'data/live_count.xml', { 155 | 'trend_data': trend_data 156 | }, content_type="application/xml") 157 | 158 | def trend_xml_live_size(request): 159 | trend_data = DataStat.objects.filter(type='住宅').order_by('month') 160 | 161 | return render(request, 'data/live_size.xml', { 162 | 'trend_data': trend_data 163 | }, content_type="application/xml") 164 | 165 | def trend_xml_all_count(request): 166 | trend_data = DataStat.objects.values("month").annotate(TotalHouse=Sum("house_count")).order_by('month') 167 | 168 | return render(request, 'data/all_count.xml', { 169 | 'trend_data': trend_data 170 | }, content_type="application/xml") 171 | 172 | def trend_xml_all_size(request): 173 | trend_data = DataStat.objects.values("month").annotate(TotalSize=Sum("size_count")).order_by('month') 174 | 175 | return render(request, 'data/all_size.xml', { 176 | 'trend_data': trend_data 177 | }, content_type="application/xml") 178 | 179 | -------------------------------------------------------------------------------- /DjangoHome/log/Django_LemonHouse.log.2015-03-08: -------------------------------------------------------------------------------- 1 | 2015-03-08 18:17:55,566[house.views][INFO] request index [views.py,14] 2 | 2015-03-08 18:17:55,575[house.site][INFO] set system status variable [site.py,21] 3 | 2015-03-08 18:17:59,128[house.site][INFO] set system status variable [site.py,21] 4 | 2015-03-08 18:18:03,054[house.site][INFO] set system status variable [site.py,21] 5 | 2015-03-08 18:18:03,974[house.site][INFO] set system status variable [site.py,21] 6 | 2015-03-08 18:18:04,100[house.site][INFO] set system status variable [site.py,21] 7 | 2015-03-08 18:18:11,321[house.site][INFO] set system status variable [site.py,21] 8 | 2015-03-08 18:18:12,296[house.site][INFO] set system status variable [site.py,21] 9 | 2015-03-08 18:18:12,386[house.site][INFO] set system status variable [site.py,21] 10 | 2015-03-08 18:21:20,723[house.views][INFO] request index [views.py,14] 11 | 2015-03-08 18:21:20,725[house.site][INFO] set system status variable [site.py,21] 12 | 2015-03-08 18:21:23,053[house.site][INFO] set system status variable [site.py,21] 13 | 2015-03-08 18:21:23,624[house.site][INFO] set system status variable [site.py,21] 14 | 2015-03-08 18:21:23,834[house.site][INFO] set system status variable [site.py,21] 15 | 2015-03-08 18:21:29,585[house.site][INFO] set system status variable [site.py,21] 16 | 2015-03-08 18:21:30,289[house.site][INFO] set system status variable [site.py,21] 17 | 2015-03-08 18:21:30,349[house.site][INFO] set system status variable [site.py,21] 18 | 2015-03-08 19:14:16,300[house.views][INFO] request index [views.py,14] 19 | 2015-03-08 19:14:16,302[house.site][INFO] set system status variable [site.py,21] 20 | 2015-03-08 19:14:16,544[house.views][INFO] request index [views.py,14] 21 | 2015-03-08 19:14:16,547[house.site][INFO] set system status variable [site.py,21] 22 | 2015-03-08 19:24:05,194[house.views][INFO] request index [views.py,14] 23 | 2015-03-08 19:24:05,197[house.site][INFO] set system status variable [site.py,21] 24 | 2015-03-08 19:24:11,809[house.site][INFO] set system status variable [site.py,21] 25 | 2015-03-08 19:24:16,691[house.site][INFO] set system status variable [site.py,21] 26 | 2015-03-08 19:24:20,355[house.site][INFO] set system status variable [site.py,21] 27 | 2015-03-08 19:24:28,980[house.views][INFO] request index [views.py,14] 28 | 2015-03-08 19:24:28,983[house.site][INFO] set system status variable [site.py,21] 29 | 2015-03-08 19:24:33,326[house.views][INFO] request index [views.py,14] 30 | 2015-03-08 19:24:33,328[house.site][INFO] set system status variable [site.py,21] 31 | 2015-03-08 19:24:39,117[house.site][INFO] set system status variable [site.py,21] 32 | 2015-03-08 19:24:46,141[house.site][INFO] set system status variable [site.py,21] 33 | 2015-03-08 19:24:47,262[house.site][INFO] set system status variable [site.py,21] 34 | 2015-03-08 19:24:47,418[house.site][INFO] set system status variable [site.py,21] 35 | 2015-03-08 19:24:56,827[house.site][INFO] set system status variable [site.py,21] 36 | 2015-03-08 19:24:57,844[house.site][INFO] set system status variable [site.py,21] 37 | 2015-03-08 19:24:57,945[house.site][INFO] set system status variable [site.py,21] 38 | 2015-03-08 19:25:06,211[house.site][INFO] set system status variable [site.py,21] 39 | 2015-03-08 19:25:07,260[house.site][INFO] set system status variable [site.py,21] 40 | 2015-03-08 19:25:07,385[house.site][INFO] set system status variable [site.py,21] 41 | 2015-03-08 19:26:13,101[house.views][INFO] request index [views.py,14] 42 | 2015-03-08 19:26:13,103[house.site][INFO] set system status variable [site.py,21] 43 | 2015-03-08 19:26:37,869[house.views][INFO] search project [views.py,40] 44 | 2015-03-08 19:26:37,869[house.views][INFO] search project 1 [views.py,42] 45 | 2015-03-08 19:26:37,870[house.site][INFO] set system status variable [site.py,21] 46 | 2015-03-08 19:26:41,330[house.views][INFO] search project [views.py,40] 47 | 2015-03-08 19:26:41,330[house.views][INFO] search project 1 [views.py,42] 48 | 2015-03-08 19:26:41,332[house.site][INFO] set system status variable [site.py,21] 49 | 2015-03-08 19:26:45,973[house.views][INFO] search project [views.py,40] 50 | 2015-03-08 19:26:45,973[house.views][INFO] search project 1 [views.py,42] 51 | 2015-03-08 19:26:45,974[house.site][INFO] set system status variable [site.py,21] 52 | 2015-03-08 19:27:05,485[house.views][INFO] request index [views.py,14] 53 | 2015-03-08 19:27:05,488[house.site][INFO] set system status variable [site.py,21] 54 | 2015-03-08 20:55:05,384[house.views][INFO] request index [views.py,14] 55 | 2015-03-08 20:55:05,386[house.site][INFO] set system status variable [site.py,21] 56 | 2015-03-08 20:59:47,576[house.views][INFO] request index [views.py,14] 57 | 2015-03-08 20:59:47,612[house.site][INFO] set system status variable [site.py,21] 58 | 2015-03-08 20:59:49,615[house.site][INFO] set system status variable [site.py,21] 59 | 2015-03-08 20:59:50,021[house.site][INFO] set system status variable [site.py,21] 60 | 2015-03-08 20:59:50,078[house.site][INFO] set system status variable [site.py,21] 61 | 2015-03-08 20:59:53,077[house.site][INFO] set system status variable [site.py,21] 62 | 2015-03-08 20:59:53,375[house.site][INFO] set system status variable [site.py,21] 63 | 2015-03-08 20:59:53,426[house.site][INFO] set system status variable [site.py,21] 64 | 2015-03-08 21:01:10,143[house.site][INFO] set system status variable [site.py,21] 65 | 2015-03-08 21:01:10,362[house.site][INFO] set system status variable [site.py,21] 66 | 2015-03-08 21:01:10,401[house.site][INFO] set system status variable [site.py,21] 67 | 2015-03-08 21:01:12,888[house.site][INFO] set system status variable [site.py,21] 68 | 2015-03-08 21:01:13,084[house.site][INFO] set system status variable [site.py,21] 69 | 2015-03-08 21:01:13,118[house.site][INFO] set system status variable [site.py,21] 70 | 2015-03-08 21:01:15,953[house.site][INFO] set system status variable [site.py,21] 71 | 2015-03-08 21:01:16,180[house.site][INFO] set system status variable [site.py,21] 72 | 2015-03-08 21:01:16,206[house.site][INFO] set system status variable [site.py,21] 73 | 2015-03-08 21:01:18,935[house.site][INFO] set system status variable [site.py,21] 74 | 2015-03-08 21:01:19,154[house.site][INFO] set system status variable [site.py,21] 75 | 2015-03-08 21:01:19,186[house.site][INFO] set system status variable [site.py,21] 76 | 2015-03-08 21:01:21,519[house.site][INFO] set system status variable [site.py,21] 77 | 2015-03-08 21:01:21,772[house.site][INFO] set system status variable [site.py,21] 78 | 2015-03-08 21:01:21,808[house.site][INFO] set system status variable [site.py,21] 79 | 2015-03-08 21:01:43,291[house.views][INFO] request index [views.py,14] 80 | 2015-03-08 21:01:43,294[house.site][INFO] set system status variable [site.py,21] 81 | 2015-03-08 21:01:46,990[house.site][INFO] set system status variable [site.py,21] 82 | 2015-03-08 21:01:48,305[house.site][INFO] set system status variable [site.py,21] 83 | 2015-03-08 21:01:48,664[house.site][INFO] set system status variable [site.py,21] 84 | 2015-03-08 21:01:48,717[house.site][INFO] set system status variable [site.py,21] 85 | 2015-03-08 21:01:50,260[house.site][INFO] set system status variable [site.py,21] 86 | 2015-03-08 21:01:50,577[house.site][INFO] set system status variable [site.py,21] 87 | 2015-03-08 21:01:50,631[house.site][INFO] set system status variable [site.py,21] 88 | 2015-03-08 21:02:05,766[house.views][INFO] request index [views.py,14] 89 | 2015-03-08 21:02:05,768[house.site][INFO] set system status variable [site.py,21] 90 | 2015-03-08 21:03:28,341[house.views][INFO] request index [views.py,14] 91 | 2015-03-08 21:03:28,350[house.site][INFO] set system status variable [site.py,21] 92 | 2015-03-08 21:41:20,423[house.views][INFO] request index [views.py,14] 93 | 2015-03-08 21:41:20,442[house.site][INFO] set system status variable [site.py,21] 94 | 2015-03-08 21:43:41,325[house.views][INFO] request index [views.py,14] 95 | 2015-03-08 21:43:41,328[house.site][INFO] set system status variable [site.py,21] 96 | 2015-03-08 21:43:44,840[house.views][INFO] request index [views.py,14] 97 | 2015-03-08 21:43:44,842[house.site][INFO] set system status variable [site.py,21] 98 | 2015-03-08 21:43:46,997[house.views][INFO] request index [views.py,14] 99 | 2015-03-08 21:43:47,000[house.site][INFO] set system status variable [site.py,21] 100 | 2015-03-08 21:43:48,353[house.site][INFO] set system status variable [site.py,21] 101 | 2015-03-08 21:43:50,035[house.site][INFO] set system status variable [site.py,21] 102 | 2015-03-08 21:43:50,974[house.views][ERROR] {u'[\u672a\u547d\u540d]': [, , , , , , , , , , , , , , , , , , , , '...(remaining elements truncated)...']} [views.py,76] 103 | 2015-03-08 21:43:50,979[house.site][INFO] set system status variable [site.py,21] 104 | 2015-03-08 21:43:52,069[house.views][INFO] request index [views.py,14] 105 | 2015-03-08 21:43:52,107[house.site][INFO] set system status variable [site.py,21] 106 | 2015-03-08 21:43:53,600[house.views][INFO] search project 1 [views.py,42] 107 | 2015-03-08 21:43:53,602[house.site][INFO] set system status variable [site.py,21] 108 | 2015-03-08 21:43:54,753[house.views][INFO] request index [views.py,14] 109 | 2015-03-08 21:43:54,756[house.site][INFO] set system status variable [site.py,21] 110 | 2015-03-08 21:43:55,933[house.views][INFO] search company 1 [views.py,123] 111 | 2015-03-08 21:43:55,936[house.site][INFO] set system status variable [site.py,21] 112 | 2015-03-08 21:43:56,902[house.site][INFO] set system status variable [site.py,21] 113 | 2015-03-08 21:43:58,879[house.site][INFO] set system status variable [site.py,21] 114 | 2015-03-08 21:43:59,213[house.site][INFO] set system status variable [site.py,21] 115 | 2015-03-08 21:43:59,262[house.site][INFO] set system status variable [site.py,21] 116 | 2015-03-08 21:44:01,029[house.site][INFO] set system status variable [site.py,21] 117 | 2015-03-08 21:44:12,048[house.site][INFO] set system status variable [site.py,21] 118 | 2015-03-08 21:44:15,768[house.site][INFO] set system status variable [site.py,21] 119 | 2015-03-08 21:44:18,790[house.site][INFO] set system status variable [site.py,21] 120 | 2015-03-08 21:44:20,856[house.site][INFO] set system status variable [site.py,21] 121 | 2015-03-08 21:44:25,254[house.views][ERROR] {u'[\u672a\u547d\u540d]': [, , , , , , , , , , , , , , , , , , , , '...(remaining elements truncated)...']} [views.py,76] 122 | 2015-03-08 21:44:25,283[house.site][INFO] set system status variable [site.py,21] 123 | 2015-03-08 21:44:27,924[house.site][INFO] set system status variable [site.py,21] 124 | 2015-03-08 21:49:19,726[house.views][INFO] request index [views.py,14] 125 | 2015-03-08 21:49:19,728[house.site][INFO] set system status variable [site.py,21] 126 | 2015-03-08 21:49:23,026[house.views][INFO] request index [views.py,14] 127 | 2015-03-08 21:49:23,028[house.site][INFO] set system status variable [site.py,21] 128 | 2015-03-08 21:49:24,816[house.site][INFO] set system status variable [site.py,21] 129 | 2015-03-08 21:49:26,355[house.site][INFO] set system status variable [site.py,21] 130 | 2015-03-08 21:49:26,702[house.site][INFO] set system status variable [site.py,21] 131 | 2015-03-08 21:49:26,750[house.site][INFO] set system status variable [site.py,21] 132 | 2015-03-08 21:49:28,775[house.views][INFO] request index [views.py,14] 133 | 2015-03-08 21:49:28,778[house.site][INFO] set system status variable [site.py,21] 134 | 2015-03-08 21:49:35,125[house.site][INFO] set system status variable [site.py,21] 135 | 2015-03-08 21:49:36,795[house.views][INFO] request index [views.py,14] 136 | 2015-03-08 21:49:36,797[house.site][INFO] set system status variable [site.py,21] 137 | 2015-03-08 21:49:38,115[house.views][INFO] search project 1 [views.py,42] 138 | 2015-03-08 21:49:38,117[house.site][INFO] set system status variable [site.py,21] 139 | 2015-03-08 21:49:39,176[house.views][INFO] request index [views.py,14] 140 | 2015-03-08 21:49:39,178[house.site][INFO] set system status variable [site.py,21] 141 | 2015-03-08 21:49:40,482[house.site][INFO] set system status variable [site.py,21] 142 | 2015-03-08 21:49:42,123[house.views][INFO] search company 1 [views.py,123] 143 | 2015-03-08 21:49:42,125[house.site][INFO] set system status variable [site.py,21] 144 | 2015-03-08 21:49:42,811[house.views][INFO] request index [views.py,14] 145 | 2015-03-08 21:49:42,813[house.site][INFO] set system status variable [site.py,21] 146 | 2015-03-08 21:52:47,659[house.views][INFO] request index [views.py,14] 147 | 2015-03-08 21:52:47,661[house.site][INFO] set system status variable [site.py,21] 148 | 2015-03-08 22:15:54,199[house.views][INFO] request index [views.py,14] 149 | 2015-03-08 22:15:54,207[house.site][INFO] set system status variable [site.py,21] 150 | 2015-03-08 22:16:06,857[house.views][INFO] request index [views.py,14] 151 | 2015-03-08 22:16:06,897[house.site][INFO] set system status variable [site.py,21] 152 | 2015-03-08 22:16:15,586[house.views][INFO] request index [views.py,14] 153 | 2015-03-08 22:16:15,588[house.site][INFO] set system status variable [site.py,21] 154 | 2015-03-08 22:16:19,355[house.views][INFO] request index [views.py,14] 155 | 2015-03-08 22:16:19,360[house.site][INFO] set system status variable [site.py,21] 156 | 2015-03-08 22:16:21,436[house.views][INFO] search project 1 [views.py,42] 157 | 2015-03-08 22:16:21,438[house.site][INFO] set system status variable [site.py,21] 158 | 2015-03-08 22:16:23,705[house.site][INFO] set system status variable [site.py,21] 159 | 2015-03-08 22:16:28,252[house.site][INFO] set system status variable [site.py,21] 160 | 2015-03-08 22:16:28,362[house.site][INFO] set system status variable [site.py,21] 161 | 2015-03-08 22:16:33,832[house.site][INFO] set system status variable [site.py,21] 162 | 2015-03-08 22:16:37,432[house.views][INFO] request index [views.py,14] 163 | 2015-03-08 22:16:37,435[house.site][INFO] set system status variable [site.py,21] 164 | 2015-03-08 22:16:40,622[house.views][INFO] request index [views.py,14] 165 | 2015-03-08 22:16:40,625[house.site][INFO] set system status variable [site.py,21] 166 | 2015-03-08 22:25:09,197[house.views][INFO] request index [views.py,14] 167 | 2015-03-08 22:25:09,267[house.site][INFO] set system status variable [site.py,21] 168 | -------------------------------------------------------------------------------- /DjangoHome/log/Django_LemonHouse.log.2015-03-09: -------------------------------------------------------------------------------- 1 | 2015-03-09 07:55:53,709[house.site][INFO] set system status variable [site.py,21] 2 | 2015-03-09 07:55:53,714[house.site][INFO] set system status variable [site.py,21] 3 | 2015-03-09 07:55:58,036[house.views][INFO] request index [views.py,14] 4 | 2015-03-09 07:55:58,039[house.site][INFO] set system status variable [site.py,21] 5 | 2015-03-09 08:52:13,144[house.views][INFO] request index [views.py,14] 6 | 2015-03-09 08:52:13,200[house.site][INFO] set system status variable [site.py,21] 7 | 2015-03-09 08:52:32,206[house.views][INFO] request index [views.py,14] 8 | 2015-03-09 08:52:32,209[house.site][INFO] set system status variable [site.py,21] 9 | 2015-03-09 08:52:35,177[house.site][INFO] set system status variable [site.py,21] 10 | 2015-03-09 08:52:40,584[house.views][INFO] request index [views.py,14] 11 | 2015-03-09 08:52:40,587[house.site][INFO] set system status variable [site.py,21] 12 | 2015-03-09 08:52:45,001[house.site][INFO] set system status variable [site.py,21] 13 | 2015-03-09 08:52:46,652[house.views][ERROR] {u'[A\u5ea72\u5355\u5143]': [, , , , , , , , , , , , , , , , , , , , '...(remaining elements truncated)...'], u'[D\u5ea72\u5355\u5143]': [, , , , , , , , , , , , , , , , , , , , '...(remaining elements truncated)...'], u'[D\u5ea71\u5355\u5143]': [, , , , , , , , , , , , , , , , , , , , '...(remaining elements truncated)...'], u'[A\u5ea71\u5355\u5143]': [, , , , , , , , , , , , , , , , , , , , '...(remaining elements truncated)...'], u'[B\u5ea7]': [, , , , , , , , , , , , , , , , , , , , '...(remaining elements truncated)...'], u'[C\u5ea71\u5355\u5143]': [, , , , , , , , , , , , , , , , , , , , '...(remaining elements truncated)...'], u'[C\u5ea72\u5355\u5143]': [, , , , , , , , , , , , , , , , , , , , '...(remaining elements truncated)...']} [views.py,76] 14 | 2015-03-09 08:52:46,675[house.site][INFO] set system status variable [site.py,21] 15 | 2015-03-09 08:52:49,575[house.views][ERROR] {u'[A\u5ea72\u5355\u5143]': [, , , , , , , , , , , , , , , , , , , , '...(remaining elements truncated)...'], u'[D\u5ea72\u5355\u5143]': [, , , , , , , , , , , , , , , , , , , , '...(remaining elements truncated)...'], u'[D\u5ea71\u5355\u5143]': [, , , , , , , , , , , , , , , , , , , , '...(remaining elements truncated)...'], u'[A\u5ea71\u5355\u5143]': [, , , , , , , , , , , , , , , , , , , , '...(remaining elements truncated)...'], u'[B\u5ea7]': [, , , , , , , , , , , , , , , , , , , , '...(remaining elements truncated)...'], u'[C\u5ea71\u5355\u5143]': [, , , , , , , , , , , , , , , , , , , , '...(remaining elements truncated)...'], u'[C\u5ea72\u5355\u5143]': [, , , , , , , , , , , , , , , , , , , , '...(remaining elements truncated)...']} [views.py,76] 16 | 2015-03-09 08:52:49,598[house.site][INFO] set system status variable [site.py,21] 17 | 2015-03-09 08:53:21,241[house.views][INFO] request index [views.py,14] 18 | 2015-03-09 08:53:21,244[house.site][INFO] set system status variable [site.py,21] 19 | 2015-03-09 08:53:30,619[house.views][INFO] request index [views.py,14] 20 | 2015-03-09 08:53:30,622[house.site][INFO] set system status variable [site.py,21] 21 | 2015-03-09 08:53:32,050[house.site][INFO] set system status variable [site.py,21] 22 | 2015-03-09 23:21:47,424[house.views][INFO] request index [views.py,14] 23 | 2015-03-09 23:21:47,658[house.site][INFO] set system status variable [site.py,21] 24 | 2015-03-09 23:22:09,609[house.views][INFO] request index [views.py,14] 25 | 2015-03-09 23:22:09,612[house.site][INFO] set system status variable [site.py,21] 26 | 2015-03-09 23:22:32,442[house.views][INFO] request index [views.py,14] 27 | 2015-03-09 23:22:32,445[house.site][INFO] set system status variable [site.py,21] 28 | 2015-03-09 23:23:16,549[house.views][INFO] request index [views.py,14] 29 | 2015-03-09 23:23:16,552[house.site][INFO] set system status variable [site.py,21] 30 | 2015-03-09 23:40:58,458[house.views][INFO] request index [views.py,14] 31 | 2015-03-09 23:40:58,464[house.site][INFO] set system status variable [site.py,21] 32 | 2015-03-09 23:43:07,387[house.views][INFO] request index [views.py,14] 33 | 2015-03-09 23:43:07,390[house.site][INFO] set system status variable [site.py,21] 34 | 2015-03-09 23:46:14,628[house.views][INFO] request index [views.py,14] 35 | 2015-03-09 23:46:14,631[house.site][INFO] set system status variable [site.py,21] 36 | 2015-03-09 23:51:17,651[house.views][INFO] request index [views.py,14] 37 | 2015-03-09 23:51:17,653[house.site][INFO] set system status variable [site.py,21] 38 | 2015-03-09 23:58:02,557[house.views][INFO] request index [views.py,14] 39 | 2015-03-09 23:58:02,560[house.site][INFO] set system status variable [site.py,21] 40 | -------------------------------------------------------------------------------- /DjangoHome/log/Django_LemonHouse.log.2015-03-10: -------------------------------------------------------------------------------- 1 | 2015-03-10 00:13:31,125[house.views][INFO] request index [views.py,14] 2 | 2015-03-10 00:13:31,167[house.site][INFO] set system status variable [site.py,21] 3 | 2015-03-10 02:12:04,858[house.views][INFO] request index [views.py,14] 4 | 2015-03-10 02:12:04,862[house.site][INFO] set system status variable [site.py,21] 5 | 2015-03-10 02:12:05,117[house.views][INFO] request index [views.py,14] 6 | 2015-03-10 02:12:05,120[house.site][INFO] set system status variable [site.py,21] 7 | 2015-03-10 03:53:18,288[house.views][INFO] request index [views.py,14] 8 | 2015-03-10 03:53:18,291[house.site][INFO] set system status variable [site.py,21] 9 | 2015-03-10 08:45:21,503[house.views][INFO] request index [views.py,14] 10 | 2015-03-10 08:45:21,505[house.site][INFO] set system status variable [site.py,21] 11 | 2015-03-10 08:45:47,612[house.site][INFO] set system status variable [site.py,21] 12 | 2015-03-10 16:56:28,447[house.views][INFO] request index [views.py,14] 13 | 2015-03-10 16:56:28,449[house.site][INFO] set system status variable [site.py,21] 14 | -------------------------------------------------------------------------------- /DjangoHome/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", "django_house.settings") 7 | 8 | from django.core.management import execute_from_command_line 9 | 10 | execute_from_command_line(sys.argv) 11 | -------------------------------------------------------------------------------- /DjangoHome/static/css/bootstrap-responsive.min.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap Responsive v2.3.2 3 | * 4 | * Copyright 2012 Twitter, Inc 5 | * Licensed under the Apache License v2.0 6 | * http://www.apache.org/licenses/LICENSE-2.0 7 | * 8 | * Designed and built with all the love in the world @twitter by @mdo and @fat. 9 | */.clearfix{*zoom:1}.clearfix:before,.clearfix:after{display:table;line-height:0;content:""}.clearfix:after{clear:both}.hide-text{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.input-block-level{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}@-ms-viewport{width:device-width}.hidden{display:none;visibility:hidden}.visible-phone{display:none!important}.visible-tablet{display:none!important}.hidden-desktop{display:none!important}.visible-desktop{display:inherit!important}@media(min-width:768px) and (max-width:979px){.hidden-desktop{display:inherit!important}.visible-desktop{display:none!important}.visible-tablet{display:inherit!important}.hidden-tablet{display:none!important}}@media(max-width:767px){.hidden-desktop{display:inherit!important}.visible-desktop{display:none!important}.visible-phone{display:inherit!important}.hidden-phone{display:none!important}}.visible-print{display:none!important}@media print{.visible-print{display:inherit!important}.hidden-print{display:none!important}}@media(min-width:1200px){.row{margin-left:-30px;*zoom:1}.row:before,.row:after{display:table;line-height:0;content:""}.row:after{clear:both}[class*="span"]{float:left;min-height:1px;margin-left:30px}.container,.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:1170px}.span12{width:1170px}.span11{width:1070px}.span10{width:970px}.span9{width:870px}.span8{width:770px}.span7{width:670px}.span6{width:570px}.span5{width:470px}.span4{width:370px}.span3{width:270px}.span2{width:170px}.span1{width:70px}.offset12{margin-left:1230px}.offset11{margin-left:1130px}.offset10{margin-left:1030px}.offset9{margin-left:930px}.offset8{margin-left:830px}.offset7{margin-left:730px}.offset6{margin-left:630px}.offset5{margin-left:530px}.offset4{margin-left:430px}.offset3{margin-left:330px}.offset2{margin-left:230px}.offset1{margin-left:130px}.row-fluid{width:100%;*zoom:1}.row-fluid:before,.row-fluid:after{display:table;line-height:0;content:""}.row-fluid:after{clear:both}.row-fluid [class*="span"]{display:block;float:left;width:100%;min-height:30px;margin-left:2.564102564102564%;*margin-left:2.5109110747408616%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.row-fluid [class*="span"]:first-child{margin-left:0}.row-fluid .controls-row [class*="span"]+[class*="span"]{margin-left:2.564102564102564%}.row-fluid .span12{width:100%;*width:99.94680851063829%}.row-fluid .span11{width:91.45299145299145%;*width:91.39979996362975%}.row-fluid .span10{width:82.90598290598291%;*width:82.8527914166212%}.row-fluid .span9{width:74.35897435897436%;*width:74.30578286961266%}.row-fluid .span8{width:65.81196581196582%;*width:65.75877432260411%}.row-fluid .span7{width:57.26495726495726%;*width:57.21176577559556%}.row-fluid .span6{width:48.717948717948715%;*width:48.664757228587014%}.row-fluid .span5{width:40.17094017094017%;*width:40.11774868157847%}.row-fluid .span4{width:31.623931623931625%;*width:31.570740134569924%}.row-fluid .span3{width:23.076923076923077%;*width:23.023731587561375%}.row-fluid .span2{width:14.52991452991453%;*width:14.476723040552828%}.row-fluid .span1{width:5.982905982905983%;*width:5.929714493544281%}.row-fluid .offset12{margin-left:105.12820512820512%;*margin-left:105.02182214948171%}.row-fluid .offset12:first-child{margin-left:102.56410256410257%;*margin-left:102.45771958537915%}.row-fluid .offset11{margin-left:96.58119658119658%;*margin-left:96.47481360247316%}.row-fluid .offset11:first-child{margin-left:94.01709401709402%;*margin-left:93.91071103837061%}.row-fluid .offset10{margin-left:88.03418803418803%;*margin-left:87.92780505546462%}.row-fluid .offset10:first-child{margin-left:85.47008547008548%;*margin-left:85.36370249136206%}.row-fluid .offset9{margin-left:79.48717948717949%;*margin-left:79.38079650845607%}.row-fluid .offset9:first-child{margin-left:76.92307692307693%;*margin-left:76.81669394435352%}.row-fluid .offset8{margin-left:70.94017094017094%;*margin-left:70.83378796144753%}.row-fluid .offset8:first-child{margin-left:68.37606837606839%;*margin-left:68.26968539734497%}.row-fluid .offset7{margin-left:62.393162393162385%;*margin-left:62.28677941443899%}.row-fluid .offset7:first-child{margin-left:59.82905982905982%;*margin-left:59.72267685033642%}.row-fluid .offset6{margin-left:53.84615384615384%;*margin-left:53.739770867430444%}.row-fluid .offset6:first-child{margin-left:51.28205128205128%;*margin-left:51.175668303327875%}.row-fluid .offset5{margin-left:45.299145299145295%;*margin-left:45.1927623204219%}.row-fluid .offset5:first-child{margin-left:42.73504273504273%;*margin-left:42.62865975631933%}.row-fluid .offset4{margin-left:36.75213675213675%;*margin-left:36.645753773413354%}.row-fluid .offset4:first-child{margin-left:34.18803418803419%;*margin-left:34.081651209310785%}.row-fluid .offset3{margin-left:28.205128205128204%;*margin-left:28.0987452264048%}.row-fluid .offset3:first-child{margin-left:25.641025641025642%;*margin-left:25.53464266230224%}.row-fluid .offset2{margin-left:19.65811965811966%;*margin-left:19.551736679396257%}.row-fluid .offset2:first-child{margin-left:17.094017094017094%;*margin-left:16.98763411529369%}.row-fluid .offset1{margin-left:11.11111111111111%;*margin-left:11.004728132387708%}.row-fluid .offset1:first-child{margin-left:8.547008547008547%;*margin-left:8.440625568285142%}input,textarea,.uneditable-input{margin-left:0}.controls-row [class*="span"]+[class*="span"]{margin-left:30px}input.span12,textarea.span12,.uneditable-input.span12{width:1156px}input.span11,textarea.span11,.uneditable-input.span11{width:1056px}input.span10,textarea.span10,.uneditable-input.span10{width:956px}input.span9,textarea.span9,.uneditable-input.span9{width:856px}input.span8,textarea.span8,.uneditable-input.span8{width:756px}input.span7,textarea.span7,.uneditable-input.span7{width:656px}input.span6,textarea.span6,.uneditable-input.span6{width:556px}input.span5,textarea.span5,.uneditable-input.span5{width:456px}input.span4,textarea.span4,.uneditable-input.span4{width:356px}input.span3,textarea.span3,.uneditable-input.span3{width:256px}input.span2,textarea.span2,.uneditable-input.span2{width:156px}input.span1,textarea.span1,.uneditable-input.span1{width:56px}.thumbnails{margin-left:-30px}.thumbnails>li{margin-left:30px}.row-fluid .thumbnails{margin-left:0}}@media(min-width:768px) and (max-width:979px){.row{margin-left:-20px;*zoom:1}.row:before,.row:after{display:table;line-height:0;content:""}.row:after{clear:both}[class*="span"]{float:left;min-height:1px;margin-left:20px}.container,.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:724px}.span12{width:724px}.span11{width:662px}.span10{width:600px}.span9{width:538px}.span8{width:476px}.span7{width:414px}.span6{width:352px}.span5{width:290px}.span4{width:228px}.span3{width:166px}.span2{width:104px}.span1{width:42px}.offset12{margin-left:764px}.offset11{margin-left:702px}.offset10{margin-left:640px}.offset9{margin-left:578px}.offset8{margin-left:516px}.offset7{margin-left:454px}.offset6{margin-left:392px}.offset5{margin-left:330px}.offset4{margin-left:268px}.offset3{margin-left:206px}.offset2{margin-left:144px}.offset1{margin-left:82px}.row-fluid{width:100%;*zoom:1}.row-fluid:before,.row-fluid:after{display:table;line-height:0;content:""}.row-fluid:after{clear:both}.row-fluid [class*="span"]{display:block;float:left;width:100%;min-height:30px;margin-left:2.7624309392265194%;*margin-left:2.709239449864817%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.row-fluid [class*="span"]:first-child{margin-left:0}.row-fluid .controls-row [class*="span"]+[class*="span"]{margin-left:2.7624309392265194%}.row-fluid .span12{width:100%;*width:99.94680851063829%}.row-fluid .span11{width:91.43646408839778%;*width:91.38327259903608%}.row-fluid .span10{width:82.87292817679558%;*width:82.81973668743387%}.row-fluid .span9{width:74.30939226519337%;*width:74.25620077583166%}.row-fluid .span8{width:65.74585635359117%;*width:65.69266486422946%}.row-fluid .span7{width:57.18232044198895%;*width:57.12912895262725%}.row-fluid .span6{width:48.61878453038674%;*width:48.56559304102504%}.row-fluid .span5{width:40.05524861878453%;*width:40.00205712942283%}.row-fluid .span4{width:31.491712707182323%;*width:31.43852121782062%}.row-fluid .span3{width:22.92817679558011%;*width:22.87498530621841%}.row-fluid .span2{width:14.3646408839779%;*width:14.311449394616199%}.row-fluid .span1{width:5.801104972375691%;*width:5.747913483013988%}.row-fluid .offset12{margin-left:105.52486187845304%;*margin-left:105.41847889972962%}.row-fluid .offset12:first-child{margin-left:102.76243093922652%;*margin-left:102.6560479605031%}.row-fluid .offset11{margin-left:96.96132596685082%;*margin-left:96.8549429881274%}.row-fluid .offset11:first-child{margin-left:94.1988950276243%;*margin-left:94.09251204890089%}.row-fluid .offset10{margin-left:88.39779005524862%;*margin-left:88.2914070765252%}.row-fluid .offset10:first-child{margin-left:85.6353591160221%;*margin-left:85.52897613729868%}.row-fluid .offset9{margin-left:79.8342541436464%;*margin-left:79.72787116492299%}.row-fluid .offset9:first-child{margin-left:77.07182320441989%;*margin-left:76.96544022569647%}.row-fluid .offset8{margin-left:71.2707182320442%;*margin-left:71.16433525332079%}.row-fluid .offset8:first-child{margin-left:68.50828729281768%;*margin-left:68.40190431409427%}.row-fluid .offset7{margin-left:62.70718232044199%;*margin-left:62.600799341718584%}.row-fluid .offset7:first-child{margin-left:59.94475138121547%;*margin-left:59.838368402492065%}.row-fluid .offset6{margin-left:54.14364640883978%;*margin-left:54.037263430116376%}.row-fluid .offset6:first-child{margin-left:51.38121546961326%;*margin-left:51.27483249088986%}.row-fluid .offset5{margin-left:45.58011049723757%;*margin-left:45.47372751851417%}.row-fluid .offset5:first-child{margin-left:42.81767955801105%;*margin-left:42.71129657928765%}.row-fluid .offset4{margin-left:37.01657458563536%;*margin-left:36.91019160691196%}.row-fluid .offset4:first-child{margin-left:34.25414364640884%;*margin-left:34.14776066768544%}.row-fluid .offset3{margin-left:28.45303867403315%;*margin-left:28.346655695309746%}.row-fluid .offset3:first-child{margin-left:25.69060773480663%;*margin-left:25.584224756083227%}.row-fluid .offset2{margin-left:19.88950276243094%;*margin-left:19.783119783707537%}.row-fluid .offset2:first-child{margin-left:17.12707182320442%;*margin-left:17.02068884448102%}.row-fluid .offset1{margin-left:11.32596685082873%;*margin-left:11.219583872105325%}.row-fluid .offset1:first-child{margin-left:8.56353591160221%;*margin-left:8.457152932878806%}input,textarea,.uneditable-input{margin-left:0}.controls-row [class*="span"]+[class*="span"]{margin-left:20px}input.span12,textarea.span12,.uneditable-input.span12{width:710px}input.span11,textarea.span11,.uneditable-input.span11{width:648px}input.span10,textarea.span10,.uneditable-input.span10{width:586px}input.span9,textarea.span9,.uneditable-input.span9{width:524px}input.span8,textarea.span8,.uneditable-input.span8{width:462px}input.span7,textarea.span7,.uneditable-input.span7{width:400px}input.span6,textarea.span6,.uneditable-input.span6{width:338px}input.span5,textarea.span5,.uneditable-input.span5{width:276px}input.span4,textarea.span4,.uneditable-input.span4{width:214px}input.span3,textarea.span3,.uneditable-input.span3{width:152px}input.span2,textarea.span2,.uneditable-input.span2{width:90px}input.span1,textarea.span1,.uneditable-input.span1{width:28px}}@media(max-width:767px){body{padding-right:20px;padding-left:20px}.navbar-fixed-top,.navbar-fixed-bottom,.navbar-static-top{margin-right:-20px;margin-left:-20px}.container-fluid{padding:0}.dl-horizontal dt{float:none;width:auto;clear:none;text-align:left}.dl-horizontal dd{margin-left:0}.container{width:auto}.row-fluid{width:100%}.row,.thumbnails{margin-left:0}.thumbnails>li{float:none;margin-left:0}[class*="span"],.uneditable-input[class*="span"],.row-fluid [class*="span"]{display:block;float:none;width:100%;margin-left:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.span12,.row-fluid .span12{width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.row-fluid [class*="offset"]:first-child{margin-left:0}.input-large,.input-xlarge,.input-xxlarge,input[class*="span"],select[class*="span"],textarea[class*="span"],.uneditable-input{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.input-prepend input,.input-append input,.input-prepend input[class*="span"],.input-append input[class*="span"]{display:inline-block;width:auto}.controls-row [class*="span"]+[class*="span"]{margin-left:0}.modal{position:fixed;top:20px;right:20px;left:20px;width:auto;margin:0}.modal.fade{top:-100px}.modal.fade.in{top:20px}}@media(max-width:480px){.nav-collapse{-webkit-transform:translate3d(0,0,0)}.page-header h1 small{display:block;line-height:20px}input[type="checkbox"],input[type="radio"]{border:1px solid #ccc}.form-horizontal .control-label{float:none;width:auto;padding-top:0;text-align:left}.form-horizontal .controls{margin-left:0}.form-horizontal .control-list{padding-top:0}.form-horizontal .form-actions{padding-right:10px;padding-left:10px}.media .pull-left,.media .pull-right{display:block;float:none;margin-bottom:10px}.media-object{margin-right:0;margin-left:0}.modal{top:10px;right:10px;left:10px}.modal-header .close{padding:10px;margin:-10px}.carousel-caption{position:static}}@media(max-width:979px){body{padding-top:0}.navbar-fixed-top,.navbar-fixed-bottom{position:static}.navbar-fixed-top{margin-bottom:20px}.navbar-fixed-bottom{margin-top:20px}.navbar-fixed-top .navbar-inner,.navbar-fixed-bottom .navbar-inner{padding:5px}.navbar .container{width:auto;padding:0}.navbar .brand{padding-right:10px;padding-left:10px;margin:0 0 0 -5px}.nav-collapse{clear:both}.nav-collapse .nav{float:none;margin:0 0 10px}.nav-collapse .nav>li{float:none}.nav-collapse .nav>li>a{margin-bottom:2px}.nav-collapse .nav>.divider-vertical{display:none}.nav-collapse .nav .nav-header{color:#777;text-shadow:none}.nav-collapse .nav>li>a,.nav-collapse .dropdown-menu a{padding:9px 15px;font-weight:bold;color:#777;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.nav-collapse .btn{padding:4px 10px 4px;font-weight:normal;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.nav-collapse .dropdown-menu li+li a{margin-bottom:2px}.nav-collapse .nav>li>a:hover,.nav-collapse .nav>li>a:focus,.nav-collapse .dropdown-menu a:hover,.nav-collapse .dropdown-menu a:focus{background-color:#f2f2f2}.navbar-inverse .nav-collapse .nav>li>a,.navbar-inverse .nav-collapse .dropdown-menu a{color:#999}.navbar-inverse .nav-collapse .nav>li>a:hover,.navbar-inverse .nav-collapse .nav>li>a:focus,.navbar-inverse .nav-collapse .dropdown-menu a:hover,.navbar-inverse .nav-collapse .dropdown-menu a:focus{background-color:#111}.nav-collapse.in .btn-group{padding:0;margin-top:5px}.nav-collapse .dropdown-menu{position:static;top:auto;left:auto;display:none;float:none;max-width:none;padding:0;margin:0 15px;background-color:transparent;border:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.nav-collapse .open>.dropdown-menu{display:block}.nav-collapse .dropdown-menu:before,.nav-collapse .dropdown-menu:after{display:none}.nav-collapse .dropdown-menu .divider{display:none}.nav-collapse .nav>li>.dropdown-menu:before,.nav-collapse .nav>li>.dropdown-menu:after{display:none}.nav-collapse .navbar-form,.nav-collapse .navbar-search{float:none;padding:10px 15px;margin:10px 0;border-top:1px solid #f2f2f2;border-bottom:1px solid #f2f2f2;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1)}.navbar-inverse .nav-collapse .navbar-form,.navbar-inverse .nav-collapse .navbar-search{border-top-color:#111;border-bottom-color:#111}.navbar .nav-collapse .nav.pull-right{float:none;margin-left:0}.nav-collapse,.nav-collapse.collapse{height:0;overflow:hidden}.navbar .btn-navbar{display:block}.navbar-static .navbar-inner{padding-right:10px;padding-left:10px}}@media(min-width:980px){.nav-collapse.collapse{height:auto!important;overflow:visible!important}} 10 | -------------------------------------------------------------------------------- /DjangoHome/static/fusioncharts/maps/readme.txt: -------------------------------------------------------------------------------- 1 | To download all the map definition files (965+) for other countries/regions, please visit http://www.fusioncharts.com/download/maps/definition -------------------------------------------------------------------------------- /DjangoHome/static/fusioncharts/themes/fusioncharts.theme.carbon.js: -------------------------------------------------------------------------------- 1 | /* 2 | Carbon Theme v0.0.2 3 | FusionCharts JavaScript Library 4 | 5 | Copyright FusionCharts Technologies LLP 6 | License Information at 7 | */ 8 | FusionCharts.register("theme",{name:"carbon",theme:{base:{chart:{paletteColors:"#444444,#666666,#888888,#aaaaaa,#cccccc,#555555,#777777,#999999,#bbbbbb,#dddddd",labelDisplay:"auto",baseFontColor:"#333333",baseFont:"Helvetica Neue,Arial",captionFontSize:"14",subcaptionFontSize:"14",subcaptionFontBold:"0",showBorder:"0",bgColor:"#ffffff",showShadow:"0",canvasBgColor:"#ffffff",showCanvasBorder:"0",useplotgradientcolor:"0",useRoundEdges:"0",showPlotBorder:"0",showAlternateHGridColor:"0",showAlternateVGridColor:"0", 9 | toolTipColor:"#ffffff",toolTipBorderThickness:"0",toolTipBgColor:"#000000",toolTipBgAlpha:"80",toolTipBorderRadius:"2",toolTipPadding:"5",legendBgAlpha:"0",legendBorderAlpha:"0",legendShadow:"0",legendItemFontSize:"10",legendItemFontColor:"#666666",legendCaptionFontSize:"9",divlineAlpha:"100",divlineColor:"#999999",divlineThickness:"1",divLineIsDashed:"1",divLineDashLen:"1",divLineGapLen:"1",scrollheight:"10",flatScrollBars:"1",scrollShowButtons:"0",scrollColor:"#cccccc",showHoverEffect:"1",valueFontSize:"10", 10 | showXAxisLine:"1",xAxisLineThickness:"1",xAxisLineColor:"#999999"},dataset:[{}],trendlines:[{}]},geo:{chart:{showLabels:"0",fillColor:"#444444",showBorder:"1",borderColor:"#eeeeee",borderThickness:"1",borderAlpha:"50",entityFillhoverColor:"#444444",entityFillhoverAlpha:"80"}},pie2d:{chart:{placeValuesInside:"0",use3dlighting:"0",valueFontColor:"#333333",captionPadding:"15"},data:function(c,a,b){a=window.Math;return{alpha:100-(50 7 | */ 8 | FusionCharts.register("theme",{name:"ocean",theme:{base:{chart:{paletteColors:"#04476c,#4d998d,#77be99,#a7dca6,#cef19a,#0e948c,#64ad93,#8fcda0,#bbe7a0,#dcefc1",labelDisplay:"auto",baseFontColor:"#333333",baseFont:"Helvetica Neue,Arial",captionFontSize:"14",subcaptionFontSize:"14",subcaptionFontBold:"0",showBorder:"0",bgColor:"#ffffff",showShadow:"0",canvasBgColor:"#ffffff",showCanvasBorder:"0",useplotgradientcolor:"0",useRoundEdges:"0",showPlotBorder:"0",showAlternateHGridColor:"0",showAlternateVGridColor:"0", 9 | toolTipColor:"#ffffff",toolTipBorderThickness:"0",toolTipBgColor:"#000000",toolTipBgAlpha:"80",toolTipBorderRadius:"2",toolTipPadding:"5",legendBgAlpha:"0",legendBorderAlpha:"0",legendShadow:"0",legendItemFontSize:"10",legendItemFontColor:"#666666",legendCaptionFontSize:"9",divlineAlpha:"100",divlineColor:"#999999",divlineThickness:"1",divLineIsDashed:"1",divLineDashLen:"1",divLineGapLen:"1",scrollheight:"10",flatScrollBars:"1",scrollShowButtons:"0",scrollColor:"#cccccc",showHoverEffect:"1",valueFontSize:"10", 10 | showXAxisLine:"1",xAxisLineThickness:"1",xAxisLineColor:"#999999"},dataset:[{}],trendlines:[{}]},geo:{chart:{showLabels:"0",fillColor:"#04476c",showBorder:"1",borderColor:"#eeeeee",borderThickness:"1",borderAlpha:"50",entityFillhoverColor:"#04476c",entityFillhoverAlpha:"80"}},pie2d:{chart:{placeValuesInside:"0",use3dlighting:"0",valueFontColor:"#333333",captionPadding:"15"},data:function(c,a,b){a=window.Math;return{alpha:100-(50 7 | */ 8 | FusionCharts.register("theme",{name:"zune",theme:{base:{chart:{paletteColors:"#0075c2,#1aaf5d,#f2c500,#f45b00,#8e0000,#0e948c,#8cbb2c,#f3de00,#c02d00,#5b0101",labelDisplay:"auto",baseFontColor:"#333333",baseFont:"Helvetica Neue,Arial",captionFontSize:"14",subcaptionFontSize:"14",subcaptionFontBold:"0",showBorder:"0",bgColor:"#ffffff",showShadow:"0",canvasBgColor:"#ffffff",showCanvasBorder:"0",useplotgradientcolor:"0",useRoundEdges:"0",showPlotBorder:"0",showAlternateHGridColor:"0",showAlternateVGridColor:"0", 9 | toolTipColor:"#ffffff",toolTipBorderThickness:"0",toolTipBgColor:"#000000",toolTipBgAlpha:"80",toolTipBorderRadius:"2",toolTipPadding:"5",legendBgAlpha:"0",legendBorderAlpha:"0",legendShadow:"0",legendItemFontSize:"10",legendItemFontColor:"#666666",legendCaptionFontSize:"9",divlineAlpha:"100",divlineColor:"#999999",divlineThickness:"1",divLineIsDashed:"1",divLineDashLen:"1",divLineGapLen:"1",scrollheight:"10",flatScrollBars:"1",scrollShowButtons:"0",scrollColor:"#cccccc",showHoverEffect:"1",valueFontSize:"10", 10 | showXAxisLine:"1",xAxisLineThickness:"1",xAxisLineColor:"#999999"},dataset:[{}],trendlines:[{}]},geo:{chart:{showLabels:"0",fillColor:"#0075c2",showBorder:"1",borderColor:"#eeeeee",borderThickness:"1",borderAlpha:"50",entityFillhoverColor:"#0075c2",entityFillhoverAlpha:"80"}},pie2d:{chart:{placeValuesInside:"0",use3dlighting:"0",valueFontColor:"#333333",captionPadding:"15"},data:function(c,a,b){a=window.Math;return{alpha:100-(50this.$items.length-1||t<0)return;return this.sliding?this.$element.one("slid",function(){r.to(t)}):n==t?this.pause().cycle():this.slide(t>n?"next":"prev",e(this.$items[t]))},pause:function(t){return t||(this.paused=!0),this.$element.find(".next, .prev").length&&e.support.transition.end&&(this.$element.trigger(e.support.transition.end),this.cycle(!0)),clearInterval(this.interval),this.interval=null,this},next:function(){if(this.sliding)return;return this.slide("next")},prev:function(){if(this.sliding)return;return this.slide("prev")},slide:function(t,n){var r=this.$element.find(".item.active"),i=n||r[t](),s=this.interval,o=t=="next"?"left":"right",u=t=="next"?"first":"last",a=this,f;this.sliding=!0,s&&this.pause(),i=i.length?i:this.$element.find(".item")[u](),f=e.Event("slide",{relatedTarget:i[0],direction:o});if(i.hasClass("active"))return;this.$indicators.length&&(this.$indicators.find(".active").removeClass("active"),this.$element.one("slid",function(){var t=e(a.$indicators.children()[a.getActiveIndex()]);t&&t.addClass("active")}));if(e.support.transition&&this.$element.hasClass("slide")){this.$element.trigger(f);if(f.isDefaultPrevented())return;i.addClass(t),i[0].offsetWidth,r.addClass(o),i.addClass(o),this.$element.one(e.support.transition.end,function(){i.removeClass([t,o].join(" ")).addClass("active"),r.removeClass(["active",o].join(" ")),a.sliding=!1,setTimeout(function(){a.$element.trigger("slid")},0)})}else{this.$element.trigger(f);if(f.isDefaultPrevented())return;r.removeClass("active"),i.addClass("active"),this.sliding=!1,this.$element.trigger("slid")}return s&&this.cycle(),this}};var n=e.fn.carousel;e.fn.carousel=function(n){return this.each(function(){var r=e(this),i=r.data("carousel"),s=e.extend({},e.fn.carousel.defaults,typeof n=="object"&&n),o=typeof n=="string"?n:s.slide;i||r.data("carousel",i=new t(this,s)),typeof n=="number"?i.to(n):o?i[o]():s.interval&&i.pause().cycle()})},e.fn.carousel.defaults={interval:5e3,pause:"hover"},e.fn.carousel.Constructor=t,e.fn.carousel.noConflict=function(){return e.fn.carousel=n,this},e(document).on("click.carousel.data-api","[data-slide], [data-slide-to]",function(t){var n=e(this),r,i=e(n.attr("data-target")||(r=n.attr("href"))&&r.replace(/.*(?=#[^\s]+$)/,"")),s=e.extend({},i.data(),n.data()),o;i.carousel(s),(o=n.attr("data-slide-to"))&&i.data("carousel").pause().to(o).cycle(),t.preventDefault()})}(window.jQuery),!function(e){"use strict";var t=function(t,n){this.$element=e(t),this.options=e.extend({},e.fn.collapse.defaults,n),this.options.parent&&(this.$parent=e(this.options.parent)),this.options.toggle&&this.toggle()};t.prototype={constructor:t,dimension:function(){var e=this.$element.hasClass("width");return e?"width":"height"},show:function(){var t,n,r,i;if(this.transitioning||this.$element.hasClass("in"))return;t=this.dimension(),n=e.camelCase(["scroll",t].join("-")),r=this.$parent&&this.$parent.find("> .accordion-group > .in");if(r&&r.length){i=r.data("collapse");if(i&&i.transitioning)return;r.collapse("hide"),i||r.data("collapse",null)}this.$element[t](0),this.transition("addClass",e.Event("show"),"shown"),e.support.transition&&this.$element[t](this.$element[0][n])},hide:function(){var t;if(this.transitioning||!this.$element.hasClass("in"))return;t=this.dimension(),this.reset(this.$element[t]()),this.transition("removeClass",e.Event("hide"),"hidden"),this.$element[t](0)},reset:function(e){var t=this.dimension();return this.$element.removeClass("collapse")[t](e||"auto")[0].offsetWidth,this.$element[e!==null?"addClass":"removeClass"]("collapse"),this},transition:function(t,n,r){var i=this,s=function(){n.type=="show"&&i.reset(),i.transitioning=0,i.$element.trigger(r)};this.$element.trigger(n);if(n.isDefaultPrevented())return;this.transitioning=1,this.$element[t]("in"),e.support.transition&&this.$element.hasClass("collapse")?this.$element.one(e.support.transition.end,s):s()},toggle:function(){this[this.$element.hasClass("in")?"hide":"show"]()}};var n=e.fn.collapse;e.fn.collapse=function(n){return this.each(function(){var r=e(this),i=r.data("collapse"),s=e.extend({},e.fn.collapse.defaults,r.data(),typeof n=="object"&&n);i||r.data("collapse",i=new t(this,s)),typeof n=="string"&&i[n]()})},e.fn.collapse.defaults={toggle:!0},e.fn.collapse.Constructor=t,e.fn.collapse.noConflict=function(){return e.fn.collapse=n,this},e(document).on("click.collapse.data-api","[data-toggle=collapse]",function(t){var n=e(this),r,i=n.attr("data-target")||t.preventDefault()||(r=n.attr("href"))&&r.replace(/.*(?=#[^\s]+$)/,""),s=e(i).data("collapse")?"toggle":n.data();n[e(i).hasClass("in")?"addClass":"removeClass"]("collapsed"),e(i).collapse(s)})}(window.jQuery),!function(e){"use strict";function r(){e(".dropdown-backdrop").remove(),e(t).each(function(){i(e(this)).removeClass("open")})}function i(t){var n=t.attr("data-target"),r;n||(n=t.attr("href"),n=n&&/#/.test(n)&&n.replace(/.*(?=#[^\s]*$)/,"")),r=n&&e(n);if(!r||!r.length)r=t.parent();return r}var t="[data-toggle=dropdown]",n=function(t){var n=e(t).on("click.dropdown.data-api",this.toggle);e("html").on("click.dropdown.data-api",function(){n.parent().removeClass("open")})};n.prototype={constructor:n,toggle:function(t){var n=e(this),s,o;if(n.is(".disabled, :disabled"))return;return s=i(n),o=s.hasClass("open"),r(),o||("ontouchstart"in document.documentElement&&e('