first commit
This commit is contained in:
commit
29756f9fbe
48
fabfile.py
vendored
Normal file
48
fabfile.py
vendored
Normal file
|
@ -0,0 +1,48 @@
|
|||
#this is a fabfile, use it with fab from http://fabfile.org/
|
||||
#
|
||||
# initial setup:
|
||||
# fab production setup
|
||||
#
|
||||
# deploy changes:
|
||||
# fab production deploy
|
||||
#
|
||||
|
||||
from os.path import join
|
||||
from fabric.api import run, local, sudo, put, env
|
||||
|
||||
env.project_name = 'ifa'
|
||||
|
||||
|
||||
def production():
|
||||
env.hosts = ['%(project_name)s@marlon.in'%env, ]
|
||||
env.project_root = '/srv/%(project_name)s'%env
|
||||
|
||||
def bzr_push():
|
||||
local('bzr push bzr+ssh://%(project_name)s@%(host)s%(project_root)s'%env)
|
||||
|
||||
def bzr_update():
|
||||
run('cd %(project_root)s;bzr update'%env)
|
||||
|
||||
def virtual_run(cmd, *a, **kw):
|
||||
cmd = 'cd %s; source bin/activate; %s' % (env.project_root, cmd)
|
||||
run(cmd, *a, **kw)
|
||||
|
||||
def update_requirements():
|
||||
run('pip -E %(project_root)s install -r %(project_root)s/requirements.txt'%env)
|
||||
|
||||
def setup():
|
||||
"""
|
||||
Setup a fresh virtualenv
|
||||
"""
|
||||
local('bzr push --use-existing-dir bzr+ssh://%(project_name)s@%(host)s%(project_root)s'%env)
|
||||
run('cd %(project_root)s; test -e .bzr/checkout || bzr checkout'%env)
|
||||
run('virtualenv %(project_root)s'%env)
|
||||
put(join('settings', '%(host)s.py'%env), join(env.project_root, env.project_name, 'local_settings.py'))
|
||||
update_requirements()
|
||||
|
||||
def deploy():
|
||||
bzr_push()
|
||||
bzr_update()
|
||||
virtual_run('python %(project_root)s/manage.py collectstatic --noinput'%env)
|
||||
# virtual_run('python %(project_root)s/%(project_name)s/manage.py syncdb;python %(project_root)s/%(project_name)s/manage.py migrate'%env)
|
||||
run('touch %(project_root)s/wsgi/django.wsgi'%env)
|
0
ifa/__init__.py
Normal file
0
ifa/__init__.py
Normal file
0
ifa/films/__init__.py
Normal file
0
ifa/films/__init__.py
Normal file
15
ifa/films/admin.py
Normal file
15
ifa/films/admin.py
Normal file
|
@ -0,0 +1,15 @@
|
|||
from django.contrib import admin
|
||||
from models import *
|
||||
|
||||
|
||||
#class OldFilmsFilter(admin.filters.ListFilter):
|
||||
# pass
|
||||
|
||||
class FilmAdmin(admin.ModelAdmin):
|
||||
save_on_top = True
|
||||
list_display = ('title', 'director', 'year', 'language', 'available', 'notes',)
|
||||
list_editable = ('available', 'notes',)
|
||||
search_fields = ['title', 'director']
|
||||
list_filter = ['year']
|
||||
|
||||
admin.site.register(Film, FilmAdmin)
|
28
ifa/films/imports.py
Normal file
28
ifa/films/imports.py
Normal file
|
@ -0,0 +1,28 @@
|
|||
path = "/home/sanj/c/ifa/tmp/FILMS.txt"
|
||||
from models import *
|
||||
|
||||
def do():
|
||||
errors = open("errors.txt", "w")
|
||||
for line in open(path):
|
||||
txt = line.strip()
|
||||
if txt.find(" see ") != -1:
|
||||
alias, film_name = txt.split(" see ")
|
||||
fsm = FilmSeeMap(alias=alias, film_name=film_name)
|
||||
fsm.save()
|
||||
else:
|
||||
split = txt.replace("(", ",").replace(")", "").split(",")
|
||||
if len(split) != 4:
|
||||
errors.write(txt)
|
||||
continue
|
||||
else:
|
||||
title = split[0].strip()
|
||||
director = split[1].strip()
|
||||
language = split[2].strip()
|
||||
year = split[3].strip()
|
||||
f = Film(title=title, director=director, language=language, year=year)
|
||||
try:
|
||||
f.save()
|
||||
except:
|
||||
errors.write(txt)
|
||||
print title
|
||||
errors.close()
|
19
ifa/films/models.py
Normal file
19
ifa/films/models.py
Normal file
|
@ -0,0 +1,19 @@
|
|||
from django.db import models
|
||||
|
||||
class Film(models.Model):
|
||||
title = models.CharField(max_length=512)
|
||||
director = models.CharField(max_length=512)
|
||||
language = models.CharField(max_length=64, blank=True)
|
||||
year = models.IntegerField(max_length=4, blank=True, null=True)
|
||||
available = models.BooleanField(default=False)
|
||||
notes = models.TextField(blank=True)
|
||||
|
||||
def __unicode__(self):
|
||||
return "%s (%s, %s, %s)" % (self.title, self.director, self.language, self.year,)
|
||||
|
||||
|
||||
class FilmSeeMap(models.Model):
|
||||
film_name = models.CharField(max_length=512)
|
||||
alias = models.CharField(max_length=512)
|
||||
|
||||
# Create your models here.
|
16
ifa/films/tests.py
Normal file
16
ifa/films/tests.py
Normal file
|
@ -0,0 +1,16 @@
|
|||
"""
|
||||
This file demonstrates writing tests using the unittest module. These will pass
|
||||
when you run "manage.py test".
|
||||
|
||||
Replace this with more appropriate tests for your application.
|
||||
"""
|
||||
|
||||
from django.test import TestCase
|
||||
|
||||
|
||||
class SimpleTest(TestCase):
|
||||
def test_basic_addition(self):
|
||||
"""
|
||||
Tests that 1 + 1 always equals 2.
|
||||
"""
|
||||
self.assertEqual(1 + 1, 2)
|
1
ifa/films/views.py
Normal file
1
ifa/films/views.py
Normal file
|
@ -0,0 +1 @@
|
|||
# Create your views here.
|
10
ifa/local_settings.py.sample
Normal file
10
ifa/local_settings.py.sample
Normal file
|
@ -0,0 +1,10 @@
|
|||
DATABASES = {
|
||||
'default': {
|
||||
'ENGINE': 'django.db.backends.mysql', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
|
||||
'NAME': '{{ project_name }}', # Or path to database file if using sqlite3.
|
||||
'USER': 'root', # Not used with sqlite3.
|
||||
'PASSWORD': '', # Not used with sqlite3.
|
||||
'HOST': '', # Set to empty string for localhost. Not used with sqlite3.
|
||||
'PORT': '', # Set to empty string for default. Not used with sqlite3.
|
||||
}
|
||||
}
|
194
ifa/settings.py
Normal file
194
ifa/settings.py
Normal file
|
@ -0,0 +1,194 @@
|
|||
# Django settings for chhoti project.
|
||||
import os
|
||||
from os.path import join
|
||||
|
||||
DEBUG = True
|
||||
TEMPLATE_DEBUG = DEBUG
|
||||
THUMBNAIL_DEBUG = DEBUG
|
||||
JSON_DEBUG = DEBUG
|
||||
|
||||
|
||||
ADMINS = (
|
||||
('Sanjay B', 'sanjay@therateof.com'),
|
||||
# ('Your Name', 'your_email@example.com'),
|
||||
)
|
||||
|
||||
INTERNAL_IPS = ('127.0.0.1',)
|
||||
|
||||
PROJECT_ROOT = os.path.normpath(os.path.dirname(__file__))
|
||||
|
||||
MANAGERS = ADMINS
|
||||
|
||||
DATABASES = {
|
||||
'default': {
|
||||
'ENGINE': 'django.db.backends.mysql', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
|
||||
'NAME': 'ifa', # Or path to database file if using sqlite3.
|
||||
'USER': 'root', # Not used with sqlite3.
|
||||
'PASSWORD': '', # Not used with sqlite3.
|
||||
'HOST': '', # Set to empty string for localhost. Not used with sqlite3.
|
||||
'PORT': '', # Set to empty string for default. Not used with sqlite3.
|
||||
}
|
||||
}
|
||||
|
||||
# Local time zone for this installation. Choices can be found here:
|
||||
# http://en.wikipedia.org/wiki/List_of_tz_zones_by_name
|
||||
# although not all choices may be available on all operating systems.
|
||||
# In a Windows environment this must be set to your system time zone.
|
||||
TIME_ZONE = 'America/Chicago'
|
||||
|
||||
# Language code for this installation. All choices can be found here:
|
||||
# http://www.i18nguy.com/unicode/language-identifiers.html
|
||||
LANGUAGE_CODE = 'en-us'
|
||||
|
||||
SITE_ID = 1
|
||||
|
||||
# If you set this to False, Django will make some optimizations so as not
|
||||
# to load the internationalization machinery.
|
||||
USE_I18N = True
|
||||
|
||||
# If you set this to False, Django will not format dates, numbers and
|
||||
# calendars according to the current locale.
|
||||
USE_L10N = True
|
||||
|
||||
# If you set this to False, Django will not use timezone-aware datetimes.
|
||||
USE_TZ = True
|
||||
|
||||
MARKITUP_FILTER = ('markdown.markdown', {})
|
||||
|
||||
# Absolute filesystem path to the directory that will hold user-uploaded files.
|
||||
# Example: "/home/media/media.lawrence.com/media/"
|
||||
MEDIA_ROOT = join(PROJECT_ROOT, 'media')
|
||||
|
||||
# URL that handles the media served from MEDIA_ROOT. Make sure to use a
|
||||
# trailing slash.
|
||||
# Examples: "http://media.lawrence.com/media/", "http://example.com/media/"
|
||||
MEDIA_URL = '/media/'
|
||||
|
||||
# Absolute path to the directory static files should be collected to.
|
||||
# Don't put anything in this directory yourself; store your static files
|
||||
# in apps' "static/" subdirectories and in STATICFILES_DIRS.
|
||||
# Example: "/home/media/media.lawrence.com/static/"
|
||||
STATIC_ROOT = join(PROJECT_ROOT, 'static')
|
||||
|
||||
# URL prefix for static files.
|
||||
# Example: "http://media.lawrence.com/static/"
|
||||
STATIC_URL = '/static/'
|
||||
|
||||
# Additional locations of static files
|
||||
STATICFILES_DIRS = (
|
||||
join(PROJECT_ROOT, '../static/'),
|
||||
# Put strings here, like "/home/html/static" or "C:/www/django/static".
|
||||
# Always use forward slashes, even on Windows.
|
||||
# Don't forget to use absolute paths, not relative paths.
|
||||
)
|
||||
|
||||
# List of finder classes that know how to find static files in
|
||||
# various locations.
|
||||
STATICFILES_FINDERS = (
|
||||
'django.contrib.staticfiles.finders.FileSystemFinder',
|
||||
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
|
||||
# 'django.contrib.staticfiles.finders.DefaultStorageFinder',
|
||||
)
|
||||
|
||||
# Make this unique, and don't share it with anybody.
|
||||
# SECRET_KEY = '%@f@1v!$iwwp53d^v6f^&28bf+bh2)o_ldb%k2j%4)pfjc=01x'
|
||||
|
||||
# Make this unique, creates random key first at first time.
|
||||
try:
|
||||
SECRET_KEY
|
||||
except NameError:
|
||||
SECRET_FILE = os.path.join(PROJECT_ROOT, 'secret.txt')
|
||||
try:
|
||||
SECRET_KEY = open(SECRET_FILE).read().strip()
|
||||
except IOError:
|
||||
try:
|
||||
from random import choice
|
||||
SECRET_KEY = ''.join([choice('abcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*(-_=+)') for i in range(50)])
|
||||
secret = file(SECRET_FILE, 'w')
|
||||
secret.write(SECRET_KEY)
|
||||
secret.close()
|
||||
except IOError:
|
||||
Exception('Please create a %s file with random characters to generate your secret key!' % SECRET_FILE)
|
||||
|
||||
# List of callables that know how to import templates from various sources.
|
||||
TEMPLATE_LOADERS = (
|
||||
'django.template.loaders.filesystem.Loader',
|
||||
'django.template.loaders.app_directories.Loader',
|
||||
# 'django.template.loaders.eggs.Loader',
|
||||
)
|
||||
|
||||
MIDDLEWARE_CLASSES = (
|
||||
'django.middleware.common.CommonMiddleware',
|
||||
'django.contrib.sessions.middleware.SessionMiddleware',
|
||||
'django.middleware.csrf.CsrfViewMiddleware',
|
||||
'django.contrib.auth.middleware.AuthenticationMiddleware',
|
||||
'django.contrib.messages.middleware.MessageMiddleware',
|
||||
'debug_toolbar.middleware.DebugToolbarMiddleware',
|
||||
# Uncomment the next line for simple clickjacking protection:
|
||||
# 'django.middleware.clickjacking.XFrameOptionsMiddleware',
|
||||
)
|
||||
|
||||
ROOT_URLCONF = 'ifa.urls'
|
||||
|
||||
# Python dotted path to the WSGI application used by Django's runserver.
|
||||
WSGI_APPLICATION = 'ifa.wsgi.application'
|
||||
|
||||
TEMPLATE_DIRS = (
|
||||
join(PROJECT_ROOT, '../templates')
|
||||
# Put strings here, like "/home/html/django_templates" or "C:/www/django/templates".
|
||||
# Always use forward slashes, even on Windows.
|
||||
# Don't forget to use absolute paths, not relative paths.
|
||||
)
|
||||
|
||||
INSTALLED_APPS = (
|
||||
'django.contrib.auth',
|
||||
'django.contrib.contenttypes',
|
||||
'django.contrib.sessions',
|
||||
'django.contrib.sites',
|
||||
'django.contrib.messages',
|
||||
'django.contrib.staticfiles',
|
||||
# Uncomment the next line to enable the admin:
|
||||
'django.contrib.admin',
|
||||
# Uncomment the next line to enable admin documentation:
|
||||
'django.contrib.admindocs',
|
||||
'ifa.films',
|
||||
'markitup',
|
||||
'sorl.thumbnail',
|
||||
'django_extensions',
|
||||
'adminsortable',
|
||||
'debug_toolbar',
|
||||
)
|
||||
|
||||
# A sample logging configuration. The only tangible logging
|
||||
# performed by this configuration is to send an email to
|
||||
# the site admins on every HTTP 500 error when DEBUG=False.
|
||||
# See http://docs.djangoproject.com/en/dev/topics/logging for
|
||||
# more details on how to customize your logging configuration.
|
||||
LOGGING = {
|
||||
'version': 1,
|
||||
'disable_existing_loggers': False,
|
||||
'filters': {
|
||||
'require_debug_false': {
|
||||
'()': 'django.utils.log.RequireDebugFalse'
|
||||
}
|
||||
},
|
||||
'handlers': {
|
||||
'mail_admins': {
|
||||
'level': 'ERROR',
|
||||
'filters': ['require_debug_false'],
|
||||
'class': 'django.utils.log.AdminEmailHandler'
|
||||
}
|
||||
},
|
||||
'loggers': {
|
||||
'django.request': {
|
||||
'handlers': ['mail_admins'],
|
||||
'level': 'ERROR',
|
||||
'propagate': True,
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
try:
|
||||
from local_settings import *
|
||||
except:
|
||||
pass
|
17
ifa/urls.py
Normal file
17
ifa/urls.py
Normal file
|
@ -0,0 +1,17 @@
|
|||
from django.conf.urls import patterns, include, url
|
||||
|
||||
# Uncomment the next two lines to enable the admin:
|
||||
from django.contrib import admin
|
||||
admin.autodiscover()
|
||||
|
||||
urlpatterns = patterns('',
|
||||
# Examples:
|
||||
# url(r'^$', 'sat.views.home', name='home'),
|
||||
# url(r'^sat/', include('sat.foo.urls')),
|
||||
|
||||
# Uncomment the admin/doc line below to enable admin documentation:
|
||||
url(r'^admin/doc/', include('django.contrib.admindocs.urls')),
|
||||
|
||||
# Uncomment the next line to enable the admin:
|
||||
url(r'^admin/', include(admin.site.urls)),
|
||||
)
|
28
ifa/wsgi.py
Normal file
28
ifa/wsgi.py
Normal file
|
@ -0,0 +1,28 @@
|
|||
"""
|
||||
WSGI config for sat project.
|
||||
|
||||
This module contains the WSGI application used by Django's development server
|
||||
and any production WSGI deployments. It should expose a module-level variable
|
||||
named ``application``. Django's ``runserver`` and ``runfcgi`` commands discover
|
||||
this application via the ``WSGI_APPLICATION`` setting.
|
||||
|
||||
Usually you will have the standard Django WSGI application here, but it also
|
||||
might make sense to replace the whole Django WSGI application with a custom one
|
||||
that later delegates to the Django one. For example, you could introduce WSGI
|
||||
middleware here, or combine a Django application with an application of another
|
||||
framework.
|
||||
|
||||
"""
|
||||
import os
|
||||
|
||||
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "sat.settings")
|
||||
|
||||
# This application object is used by any WSGI server configured to use this
|
||||
# file. This includes Django's development server, if the WSGI_APPLICATION
|
||||
# setting points here.
|
||||
from django.core.wsgi import get_wsgi_application
|
||||
application = get_wsgi_application()
|
||||
|
||||
# Apply WSGI middleware here.
|
||||
# from helloworld.wsgi import HelloWorldApplication
|
||||
# application = HelloWorldApplication(application)
|
10
manage.py
Normal file
10
manage.py
Normal file
|
@ -0,0 +1,10 @@
|
|||
#!/usr/bin/env python
|
||||
import os
|
||||
import sys
|
||||
|
||||
if __name__ == "__main__":
|
||||
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "ifa.settings")
|
||||
|
||||
from django.core.management import execute_from_command_line
|
||||
|
||||
execute_from_command_line(sys.argv)
|
8
requirements.txt
Normal file
8
requirements.txt
Normal file
|
@ -0,0 +1,8 @@
|
|||
Django>1.4
|
||||
ox
|
||||
django-admin-sortable
|
||||
django_extensions
|
||||
django-debug-toolbar
|
||||
sorl-thumbnail
|
||||
Markdown
|
||||
django-markitup
|
0
static/css/home.css
Normal file
0
static/css/home.css
Normal file
115
static/css/main.css
Normal file
115
static/css/main.css
Normal file
|
@ -0,0 +1,115 @@
|
|||
* {
|
||||
-webkit-box-sizing: border-box;
|
||||
-moz-box-sizing: border-box;
|
||||
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
html, body {
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
body {
|
||||
background-color: #fff;
|
||||
font-family:sans-serif;
|
||||
color: #222;
|
||||
font-size: 16px;
|
||||
line-height: 1.4;
|
||||
}
|
||||
|
||||
/* COLUMNS */
|
||||
|
||||
/*.col25 {
|
||||
width: 25%;
|
||||
}
|
||||
|
||||
.col33 {
|
||||
width:33.33%;
|
||||
}
|
||||
|
||||
.col50 {
|
||||
width: 50%;
|
||||
}
|
||||
|
||||
.col75 {
|
||||
width:75%;
|
||||
}
|
||||
*/
|
||||
|
||||
/* COLUMNS */
|
||||
|
||||
/* GLOBAL STYLES */
|
||||
|
||||
|
||||
.clear {
|
||||
clear: both;
|
||||
}
|
||||
|
||||
a {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
a:hover, a:focus {
|
||||
}
|
||||
|
||||
strong {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
em {
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
|
||||
h1, h2, h3, h4, h5, h6 {
|
||||
padding-bottom:10px;
|
||||
}
|
||||
|
||||
h6 {
|
||||
font-size: 110%;
|
||||
}
|
||||
|
||||
h5 {
|
||||
font-size: 120%;
|
||||
}
|
||||
|
||||
h4 {
|
||||
font-size: 130%;
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-size: 140%;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-size: 150%;
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-size: 160%;
|
||||
}
|
||||
|
||||
|
||||
img {
|
||||
max-width: 100%;
|
||||
height: auto;
|
||||
}
|
||||
|
||||
input[type="submit"] {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
textarea {
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
/* END GLOBAL STYLES */
|
||||
|
||||
|
||||
/* MEDIA QUERIES */
|
||||
|
||||
/*@media only screen and (max-width: 980px) {
|
||||
}*/
|
||||
|
||||
/* END MEDIA QUERIES */
|
44
static/css/reset.css
Normal file
44
static/css/reset.css
Normal file
|
@ -0,0 +1,44 @@
|
|||
/* http://meyerweb.com/eric/tools/css/reset/
|
||||
v2.0 | 20110126
|
||||
License: none (public domain)
|
||||
*/
|
||||
|
||||
html, body, div, span, applet, object, iframe,
|
||||
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
|
||||
a, abbr, acronym, address, big, cite, code,
|
||||
del, dfn, em, img, ins, kbd, q, s, samp,
|
||||
small, strike, sub, sup, tt, var,
|
||||
b, u, i, center,
|
||||
dl, dt, dd, ol, ul, li,
|
||||
fieldset, form, label, legend,
|
||||
table, caption, tbody, tfoot, thead, tr, th, td,
|
||||
article, aside, canvas, details, embed,
|
||||
figure, figcaption, footer, header, hgroup,
|
||||
menu, nav, output, ruby, section, summary,
|
||||
time, mark, audio, video {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
border: 0;
|
||||
font-size: 100%;
|
||||
font: inherit;
|
||||
vertical-align: baseline;
|
||||
}
|
||||
/* HTML5 display-role reset for older browsers */
|
||||
article, aside, details, figcaption, figure,
|
||||
footer, header, hgroup, menu, nav, section {
|
||||
display: block;
|
||||
}
|
||||
body {
|
||||
line-height: 1;
|
||||
}
|
||||
ol, ul {
|
||||
list-style: none;
|
||||
}
|
||||
blockquote, q {
|
||||
quotes: none;
|
||||
}
|
||||
blockquote:before, blockquote:after,
|
||||
q:before, q:after {
|
||||
content: '';
|
||||
content: none;
|
||||
}
|
2
static/js/jquery-1.8.2.min.js
vendored
Normal file
2
static/js/jquery-1.8.2.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
9
templates/404.html
Normal file
9
templates/404.html
Normal file
|
@ -0,0 +1,9 @@
|
|||
{% extends 'base.html' %}
|
||||
|
||||
{% block body_content %}
|
||||
<div class="bodyContent">
|
||||
<p class="largeFont">Oops! Page not found.</p>
|
||||
</div>
|
||||
|
||||
{% endblock %}
|
||||
|
8
templates/500.html
Normal file
8
templates/500.html
Normal file
|
@ -0,0 +1,8 @@
|
|||
{% extends 'base.html' %}
|
||||
|
||||
{% block body_content %}
|
||||
<div class="bodyContent">
|
||||
<p class="largeFont">Oops! The server made a boo-boo! We're working on it.</p>
|
||||
</div>
|
||||
|
||||
{% endblock %}
|
53
templates/base.html
Normal file
53
templates/base.html
Normal file
|
@ -0,0 +1,53 @@
|
|||
|
||||
<!DOCTYPE HTML>
|
||||
<html lang="en">
|
||||
<head>
|
||||
|
||||
<meta charset="utf-8">
|
||||
|
||||
<title>ADD HERE: {% block extra_title %}{% endblock %}</title>
|
||||
|
||||
<meta name="keywords" content="PLACE KEYWORDS HERE – they should appear in site content also">
|
||||
<meta name="title" content="CHANGE AS PER TITLE OF PAGE prefixed with company name">
|
||||
<meta name="description" content="ADD DETAILS HERE">
|
||||
|
||||
<meta http-equiv="X-UA-Compatible" content="chrome=1"> <!-- chrome frame -->
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <!-- for multiple viewport sizes -->
|
||||
|
||||
{% block extra_meta %}
|
||||
|
||||
{% endblock %}
|
||||
|
||||
<link rel="shortcut icon" href="/static/img/favicon.ico" /> <!--favicon-->
|
||||
|
||||
<link rel="stylesheet" href="/static/css/reset.css" type="text/css" />
|
||||
<link rel="stylesheet" href="/static/css/main.css" type="text/css" />
|
||||
|
||||
{% block extra_css %}
|
||||
|
||||
{% endblock %}
|
||||
|
||||
|
||||
<!--[if lt IE 9]>
|
||||
<script src="http://ie7-js.googlecode.com/svn/version/2.1(beta4)/IE9.js"></script>
|
||||
<![endif]-->
|
||||
|
||||
|
||||
<script type="text/javascript" src="/static/js/jquery-1.8.2.min.js"></script>
|
||||
|
||||
{% block extra_js %}
|
||||
|
||||
{% endblock %}
|
||||
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<noscript><strong>You need Javascript to run this page</strong></noscript>
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
Loading…
Reference in New Issue
Block a user