Intial commit
This commit is contained in:
commit
fc0e0fd9c8
36 files changed
+3507
No files matched your search
@@ -0,0 +1,6 @@
|
|||||||
|
*.swp
|
||||||
|
*.swo
|
||||||
|
*.pyc
|
||||||
|
settings.py
|
||||||
|
dev.db
|
||||||
|
.sass-cache
|
||||||
Whitespace-only changes.
Whitespace-only changes.
@@ -0,0 +1,8 @@
|
|||||||
|
from django.forms import ModelForm
|
||||||
|
|
||||||
|
from main.models import *
|
||||||
|
|
||||||
|
class TempUserForm(ModelForm):
|
||||||
|
# TODO : Move this to radius?
|
||||||
|
class Meta:
|
||||||
|
model = TempUser
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
from django.db import models
|
||||||
|
|
||||||
|
# Create your models here.
|
||||||
+24
@@ -0,0 +1,24 @@
|
|||||||
|
#coding: utf-8
|
||||||
|
|
||||||
|
# Ref:
|
||||||
|
# - http://stackoverflow.com/questions/1377446/html-to-pdf-for-a-django-site
|
||||||
|
# - http://stackoverflow.com/questions/2179958/django-pisa-adding-images-to-pdf-output ?
|
||||||
|
|
||||||
|
import cStringIO as StringIO
|
||||||
|
import ho.pisa as pisa
|
||||||
|
from django.template.loader import get_template
|
||||||
|
from django.template import Context
|
||||||
|
from django.http import HttpResponse
|
||||||
|
from cgi import escape
|
||||||
|
|
||||||
|
def render_to_pdf(template_src, context_dict):
|
||||||
|
template = get_template(template_src)
|
||||||
|
context = Context(context_dict)
|
||||||
|
html = template.render(context)
|
||||||
|
result = StringIO.StringIO()
|
||||||
|
|
||||||
|
pdf = pisa.pisaDocument(StringIO.StringIO(html.encode("ISO-8859-1")), result)
|
||||||
|
if not pdf.err:
|
||||||
|
return HttpResponse(result.getvalue(), mimetype='application/pdf')
|
||||||
|
return HttpResponse('We had some errors<pre>%s</pre>' % escape(html))
|
||||||
|
|
||||||
@@ -0,0 +1,31 @@
|
|||||||
|
def is_radius_model(model):
|
||||||
|
return hasattr(model, 'connection_name')
|
||||||
|
|
||||||
|
class Router(object):
|
||||||
|
"""
|
||||||
|
A router to point database operations on models to the right db.
|
||||||
|
Using the attribute connection_name referring to the
|
||||||
|
DATABASES-label in settings.py.
|
||||||
|
|
||||||
|
Ref: https://docs.djangoproject.com/en/dev/topics/db/multi-db/
|
||||||
|
"""
|
||||||
|
|
||||||
|
def allow_syncdb(self, db, model):
|
||||||
|
"""Do not create tables on the default db for models on $./manage.py sync,
|
||||||
|
but this function maybe used know which db a model is on"""
|
||||||
|
if is_radius_model(model):
|
||||||
|
return db == model.connection_name
|
||||||
|
return db == 'default'
|
||||||
|
|
||||||
|
def db_for_read(self, model, **hints):
|
||||||
|
"Point all operations on models connection_name to db=connection_name"
|
||||||
|
if is_radius_model(model):
|
||||||
|
return model.connection_name
|
||||||
|
return None
|
||||||
|
|
||||||
|
def db_for_write(self, model, **hints):
|
||||||
|
"Point all operations on models connection_name to db=connection_name"
|
||||||
|
if is_radius_model(model):
|
||||||
|
return model.connection_name
|
||||||
|
return None
|
||||||
|
|
||||||
@@ -0,0 +1,37 @@
|
|||||||
|
<!doctype html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>{%block title%}MBFTNS{%endblock%}</title>
|
||||||
|
<meta charset="utf-8" />
|
||||||
|
<link rel="stylesheet" href="{{ STATIC_URL }}standard/stylesheets/screen.css" type="text/css" media="screen, projection" /)>
|
||||||
|
<link rel="stylesheet" href="{{ STATIC_URL }}standard/stylesheets/print.css" type="text/css" media="print" />
|
||||||
|
<!--[if lt IE 8]>
|
||||||
|
<link rel="stylesheet" href="{{ STATIC_URL }}standard/stylesheets/ie.css" type="text/css" media="screen, projection" />
|
||||||
|
<![endif]-->
|
||||||
|
{%block headinc %}
|
||||||
|
{%endblock%}
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div class="container">
|
||||||
|
{% include "nav.html" %}
|
||||||
|
<header class="page-header">
|
||||||
|
<h1>MBFTNS</h1>
|
||||||
|
{%block header%}
|
||||||
|
{%endblock%}
|
||||||
|
</header>
|
||||||
|
<div >
|
||||||
|
{%block content%}
|
||||||
|
{%endblock%}
|
||||||
|
</div>
|
||||||
|
<footer class="footer">
|
||||||
|
{%block footer %}
|
||||||
|
<img src="{{ STATIC_URL }}standard/images/edb_brick.png" title="EDB" /><br />
|
||||||
|
<img src="{{ STATIC_URL }}standard/images/DNSlogo.png" />
|
||||||
|
{%endblock%}
|
||||||
|
</footer>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{%block tailinc %}
|
||||||
|
{%endblock%}
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
<nav>
|
||||||
|
<!--<ul>
|
||||||
|
<li><a href="/" class="non_action">Brukerinfo</a></li>{% if active %}<li class="{% if active = "profile" %}active{% endif %}"><a href="/accounts/profile">Din konto</a></li><li class="{% if active = "password_change" %}active{% endif %}"><a href="{% url django.contrib.auth.views.password_change %}">Endre passord</a></li><li class="{% if active = "logout" %}active{% endif %}"><a href="{% url main.views.logout %}">Logg ut</a></li>{% if request.user.is_superuser %}<li><a href="/admin">Administrasjon</a></li>{% endif %}{% endif %}
|
||||||
|
</ul>-->
|
||||||
|
</nav>
|
||||||
@@ -0,0 +1,31 @@
|
|||||||
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>My Title</title>
|
||||||
|
<style type="text/css">
|
||||||
|
@page {
|
||||||
|
size: {{ pagesize }};
|
||||||
|
margin: 1cm;
|
||||||
|
@frame footer {
|
||||||
|
-pdf-frame-content: footerContent;
|
||||||
|
bottom: 0cm;
|
||||||
|
margin-left: 9cm;
|
||||||
|
margin-right: 9cm;
|
||||||
|
height: 1cm;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div>
|
||||||
|
{% for item in mylist %}
|
||||||
|
{{ item }}
|
||||||
|
{% endfor %}
|
||||||
|
</div>
|
||||||
|
<div id="footerContent">
|
||||||
|
{% block page_foot %}
|
||||||
|
Page <pdf:pagenumber>
|
||||||
|
{% endblock %}
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
{% extends "base.html" %}
|
||||||
|
|
||||||
|
{% block content %}
|
||||||
|
<h2>Lag ny midlertidig bruker</h2>
|
||||||
|
<p>
|
||||||
|
OK, du skal få lage en, men først...
|
||||||
|
</p>
|
||||||
|
{{ form }}
|
||||||
|
<a href="{% url main.views.system %}" class="btn">Avbryt</a>
|
||||||
|
|
||||||
|
{% endblock %}
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
{% extends "base.html" %}
|
||||||
|
|
||||||
|
{% block content %}
|
||||||
|
|
||||||
|
<a href="{% url main.views.new %}" class="btn large primary">Lag ny midlertidig bruker</a>
|
||||||
|
<a href="{% url django.contrib.auth.views.logout %}" class="btn large">Logg ut</a>
|
||||||
|
|
||||||
|
{% endblock %}
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
{% extends "base.html" %}
|
||||||
|
|
||||||
|
{% block content %}
|
||||||
|
<strong>MBFTNS</strong> kan lage Midlertidige Brukere For Trådløst Nettverk på <a href="http://studentersamfundet.no">Chateau Neuf</a>.
|
||||||
|
|
||||||
|
{% include "registration/login_form.html" %}
|
||||||
|
{% endblock %}
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
{% extends "base.html" %}
|
||||||
|
|
||||||
|
{% block title %}Logget ut{% endblock %}
|
||||||
|
|
||||||
|
{% block content %}
|
||||||
|
Du har blitt logget ut, vil du <a href="{% url main.views.index %}">logge inn</a> igjen?
|
||||||
|
{% endblock %}
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
{% extends "base.html" %}
|
||||||
|
|
||||||
|
{% block content %}
|
||||||
|
|
||||||
|
{% include "registration/login_form.html" %}
|
||||||
|
|
||||||
|
{% endblock %}
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
<form method="post" action="{% url django.contrib.auth.views.login %}">
|
||||||
|
{% if form.non_field_errors %}
|
||||||
|
{{ form.non_field_errors }}<br />
|
||||||
|
{% endif %}
|
||||||
|
{% csrf_token %}
|
||||||
|
<input type="hidden" name="next" value="{{ next }}" />
|
||||||
|
<label for="id_username">Brukernavn:</label><br />
|
||||||
|
{{ form.username }} {{ form.username.errors }}<br />
|
||||||
|
<label for="id_password">Passord: </label><br />
|
||||||
|
{{ form.password }} {{ form.password.errors }}<br />
|
||||||
|
<br />
|
||||||
|
<input type="submit" value="Logg inn" />
|
||||||
|
|
||||||
|
</form>
|
||||||
@@ -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)
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
from django.conf.urls.defaults import patterns, include, url
|
||||||
|
|
||||||
|
urlpatterns = patterns('main.views',
|
||||||
|
url(r'^new/', 'new'),
|
||||||
|
url(r'^system/', 'system'),
|
||||||
|
)
|
||||||
@@ -0,0 +1,57 @@
|
|||||||
|
# coding: utf-8
|
||||||
|
import simplejson as json
|
||||||
|
|
||||||
|
from django.http import HttpResponse, HttpResponseRedirect
|
||||||
|
from django.contrib.auth import login
|
||||||
|
from django.contrib.auth.decorators import login_required
|
||||||
|
from django.contrib.auth.forms import AuthenticationForm
|
||||||
|
from django.core.exceptions import ObjectDoesNotExist
|
||||||
|
from django.core.urlresolvers import reverse
|
||||||
|
from django.shortcuts import render_to_response, get_object_or_404
|
||||||
|
from django.template import RequestContext
|
||||||
|
from django.views.decorators.csrf import csrf_protect
|
||||||
|
|
||||||
|
from models import *
|
||||||
|
|
||||||
|
from pdf import render_to_pdf
|
||||||
|
|
||||||
|
def index(request):
|
||||||
|
if request.method == "POST":
|
||||||
|
form = AuthenticationForm(data=request.POST)
|
||||||
|
if form.is_valid():
|
||||||
|
# Log the user in.
|
||||||
|
login(request, form.get_user())
|
||||||
|
else:
|
||||||
|
if request.user.is_authenticated():
|
||||||
|
return HttpResponseRedirect( reverse('main.views.system') )
|
||||||
|
else:
|
||||||
|
form = AuthenticationForm(request)
|
||||||
|
|
||||||
|
return render_to_response('public/index.html', locals(), context_instance=RequestContext(request))
|
||||||
|
|
||||||
|
@login_required
|
||||||
|
def new(request):
|
||||||
|
return render_to_response('private/new.html', locals(), context_instance=RequestContext(request))
|
||||||
|
|
||||||
|
@login_required
|
||||||
|
def system(request):
|
||||||
|
return render_to_response('private/system.html', locals(), context_instance=RequestContext(request))
|
||||||
|
|
||||||
|
|
||||||
|
@login_required
|
||||||
|
def download_pdf(request):
|
||||||
|
# TODO Retrieve data
|
||||||
|
results = [1,2,3,4,5,'lol']
|
||||||
|
return render_to_pdf(
|
||||||
|
'pdf/new_temp_user.html',
|
||||||
|
{
|
||||||
|
'pagesize':'A4',
|
||||||
|
'mylist': results,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
def client_status(request):
|
||||||
|
# example json view
|
||||||
|
data = { 'example' : 'json_view' }
|
||||||
|
return HttpResponse(json.dumps(data), content_type='application/javascript; charset=utf8')
|
||||||
|
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
from django.core.management import execute_manager
|
||||||
|
import imp
|
||||||
|
try:
|
||||||
|
imp.find_module('settings') # Assumed to be in the same directory.
|
||||||
|
except ImportError:
|
||||||
|
import sys
|
||||||
|
sys.stderr.write("Error: Can't find the file 'settings.py' in the directory containing %r. It appears you've customized things.\nYou'll have to run django-admin.py, passing it your settings module.\n" % __file__)
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
import settings
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
execute_manager(settings)
|
||||||
Whitespace-only changes.
@@ -0,0 +1,117 @@
|
|||||||
|
from django.db import models
|
||||||
|
# This is an auto-generated Django model module.
|
||||||
|
# You'll have to do the following manually to clean this up:
|
||||||
|
# * Rearrange models' order
|
||||||
|
# * Make sure each model has one field with primary_key=True
|
||||||
|
# Feel free to rename the models, but don't rename db_table values or field names.
|
||||||
|
#
|
||||||
|
# Also note: You'll have to insert the output of 'django-admin.py sqlcustom [appname]'
|
||||||
|
# into your database.
|
||||||
|
|
||||||
|
class Radacct(models.Model):
|
||||||
|
connection_name = 'radius'
|
||||||
|
|
||||||
|
radacctid = models.BigIntegerField(primary_key=True)
|
||||||
|
acctsessionid = models.CharField(max_length=192)
|
||||||
|
acctuniqueid = models.CharField(max_length=96)
|
||||||
|
username = models.CharField(max_length=192)
|
||||||
|
groupname = models.CharField(max_length=192)
|
||||||
|
realm = models.CharField(max_length=192, blank=True)
|
||||||
|
nasipaddress = models.CharField(max_length=45)
|
||||||
|
nasportid = models.CharField(max_length=45, blank=True)
|
||||||
|
nasporttype = models.CharField(max_length=96, blank=True)
|
||||||
|
acctstarttime = models.DateTimeField(null=True, blank=True)
|
||||||
|
acctstoptime = models.DateTimeField(null=True, blank=True)
|
||||||
|
acctsessiontime = models.IntegerField(null=True, blank=True)
|
||||||
|
acctauthentic = models.CharField(max_length=96, blank=True)
|
||||||
|
connectinfo_start = models.CharField(max_length=150, blank=True)
|
||||||
|
connectinfo_stop = models.CharField(max_length=150, blank=True)
|
||||||
|
acctinputoctets = models.BigIntegerField(null=True, blank=True)
|
||||||
|
acctoutputoctets = models.BigIntegerField(null=True, blank=True)
|
||||||
|
calledstationid = models.CharField(max_length=150)
|
||||||
|
callingstationid = models.CharField(max_length=150)
|
||||||
|
acctterminatecause = models.CharField(max_length=96)
|
||||||
|
servicetype = models.CharField(max_length=96, blank=True)
|
||||||
|
framedprotocol = models.CharField(max_length=96, blank=True)
|
||||||
|
framedipaddress = models.CharField(max_length=45)
|
||||||
|
acctstartdelay = models.IntegerField(null=True, blank=True)
|
||||||
|
acctstopdelay = models.IntegerField(null=True, blank=True)
|
||||||
|
xascendsessionsvrkey = models.CharField(max_length=30, blank=True)
|
||||||
|
class Meta:
|
||||||
|
db_table = u'radacct'
|
||||||
|
|
||||||
|
class Radcheck(models.Model):
|
||||||
|
connection_name = 'radius'
|
||||||
|
|
||||||
|
username = models.CharField(max_length=192)
|
||||||
|
attribute = models.CharField(max_length=192)
|
||||||
|
op = models.CharField(max_length=6)
|
||||||
|
value = models.CharField(max_length=759)
|
||||||
|
class Meta:
|
||||||
|
db_table = u'radcheck'
|
||||||
|
|
||||||
|
class Radgroupcheck(models.Model):
|
||||||
|
connection_name = 'radius'
|
||||||
|
|
||||||
|
groupname = models.CharField(max_length=192)
|
||||||
|
attribute = models.CharField(max_length=192)
|
||||||
|
op = models.CharField(max_length=6)
|
||||||
|
value = models.CharField(max_length=759)
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
db_table = u'radgroupcheck'
|
||||||
|
|
||||||
|
class Radgroupreply(models.Model):
|
||||||
|
connection_name = 'radius'
|
||||||
|
|
||||||
|
groupname = models.CharField(max_length=192)
|
||||||
|
attribute = models.CharField(max_length=192)
|
||||||
|
op = models.CharField(max_length=6)
|
||||||
|
value = models.CharField(max_length=759)
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
db_table = u'radgroupreply'
|
||||||
|
|
||||||
|
class Radpostauth(models.Model):
|
||||||
|
connection_name = 'radius'
|
||||||
|
|
||||||
|
username = models.CharField(max_length=192)
|
||||||
|
pass_field = models.CharField(max_length=192, db_column='pass')
|
||||||
|
reply = models.CharField(max_length=96)
|
||||||
|
authdate = models.DateTimeField()
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
db_table = u'radpostauth'
|
||||||
|
|
||||||
|
class Radreply(models.Model):
|
||||||
|
connection_name = 'radius'
|
||||||
|
|
||||||
|
username = models.CharField(max_length=192)
|
||||||
|
attribute = models.CharField(max_length=192)
|
||||||
|
op = models.CharField(max_length=6)
|
||||||
|
value = models.CharField(max_length=759)
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
db_table = u'radreply'
|
||||||
|
|
||||||
|
class Radusergroup(models.Model):
|
||||||
|
connection_name = 'radius'
|
||||||
|
|
||||||
|
username = models.CharField(max_length=192)
|
||||||
|
groupname = models.CharField(max_length=192)
|
||||||
|
priority = models.IntegerField()
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
db_table = u'radusergroup'
|
||||||
|
|
||||||
|
class TempUser(models.Model):
|
||||||
|
connection_name = 'radius'
|
||||||
|
|
||||||
|
# TODO : date? who? why?
|
||||||
|
radcheckId = models.ForeignKey(Radcheck)
|
||||||
|
created = models.DateTimeField(auto_now_add=True, null=True)
|
||||||
|
deleteOn = models.DateTimeField( null=True)
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
db_table = u'radusergroup'
|
||||||
|
|
||||||
@@ -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)
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
# Create your views here.
|
||||||
Executable
+163
@@ -0,0 +1,163 @@
|
|||||||
|
# Django settings for mbftn project.
|
||||||
|
from os.path import dirname, join
|
||||||
|
|
||||||
|
def map_path(target_name):
|
||||||
|
'''Enables path names to be decided at runtime.'''
|
||||||
|
return join(dirname(__file__), target_name).replace('\\', '/')
|
||||||
|
|
||||||
|
DEBUG = True
|
||||||
|
TEMPLATE_DEBUG = DEBUG
|
||||||
|
|
||||||
|
ADMINS = (
|
||||||
|
# ('Your Name', 'your_email@example.com'),
|
||||||
|
)
|
||||||
|
|
||||||
|
MANAGERS = ADMINS
|
||||||
|
|
||||||
|
DATABASES = {
|
||||||
|
'default': {
|
||||||
|
'ENGINE': 'django.db.backends.sqlite3', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
|
||||||
|
'NAME': 'dev.db', # Or path to database file if using sqlite3.
|
||||||
|
'USER': '', # 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.
|
||||||
|
},
|
||||||
|
'radius': {
|
||||||
|
'ENGINE': 'django.db.backends.mysql', # Add 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'.
|
||||||
|
'NAME': 'radius', # Or path to database file if using sqlite3.
|
||||||
|
'USER': 'radius', # Not used with sqlite3.
|
||||||
|
'PASSWORD': 'lol', # Not used with sqlite3.
|
||||||
|
'HOST': 'localhost', # Set to empty string for localhost. Not used with sqlite3.
|
||||||
|
'PORT': '', # Set to empty string for default. Not used with sqlite3.
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
DATABASE_ROUTERS = ['main.router.Router']
|
||||||
|
|
||||||
|
# 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.
|
||||||
|
# On Unix systems, a value of None will cause Django to use the same
|
||||||
|
# timezone as the operating system.
|
||||||
|
# If running in a Windows environment this must be set to the same as your
|
||||||
|
# system time zone.
|
||||||
|
TIME_ZONE = 'Europe/Oslo'
|
||||||
|
|
||||||
|
# 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
|
||||||
|
|
||||||
|
# Absolute filesystem path to the directory that will hold user-uploaded files.
|
||||||
|
# Example: "/home/media/media.lawrence.com/media/"
|
||||||
|
MEDIA_ROOT = ''
|
||||||
|
|
||||||
|
# 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 = ''
|
||||||
|
|
||||||
|
# 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 = ''
|
||||||
|
|
||||||
|
# URL prefix for static files.
|
||||||
|
# Example: "http://media.lawrence.com/static/"
|
||||||
|
STATIC_URL = '/static/'
|
||||||
|
|
||||||
|
# URL prefix for admin static files -- CSS, JavaScript and images.
|
||||||
|
# Make sure to use a trailing slash.
|
||||||
|
# Examples: "http://foo.com/static/admin/", "/static/admin/".
|
||||||
|
ADMIN_MEDIA_PREFIX = '/static/admin/'
|
||||||
|
|
||||||
|
# Additional locations of static files
|
||||||
|
STATICFILES_DIRS = (
|
||||||
|
# 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.
|
||||||
|
map_path('static'),
|
||||||
|
)
|
||||||
|
|
||||||
|
# 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 = 'osv$uy-ea$*%lc)+xiwt5@2b7au%u*c!pa6hmh#vl)*+tp%fss'
|
||||||
|
|
||||||
|
# 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',
|
||||||
|
)
|
||||||
|
|
||||||
|
ROOT_URLCONF = 'urls'
|
||||||
|
|
||||||
|
TEMPLATE_DIRS = (
|
||||||
|
# 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.
|
||||||
|
map_path('main/templates'),
|
||||||
|
)
|
||||||
|
|
||||||
|
INSTALLED_APPS = (
|
||||||
|
'django.contrib.auth',
|
||||||
|
'django.contrib.contenttypes',
|
||||||
|
'django.contrib.sessions',
|
||||||
|
'django.contrib.sites',
|
||||||
|
'django.contrib.messages',
|
||||||
|
'django.contrib.staticfiles',
|
||||||
|
'django.contrib.admin',
|
||||||
|
'main',
|
||||||
|
'radius',
|
||||||
|
)
|
||||||
|
|
||||||
|
# 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.
|
||||||
|
# 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,
|
||||||
|
'handlers': {
|
||||||
|
'mail_admins': {
|
||||||
|
'level': 'ERROR',
|
||||||
|
'class': 'django.utils.log.AdminEmailHandler'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
'loggers': {
|
||||||
|
'django.request': {
|
||||||
|
'handlers': ['mail_admins'],
|
||||||
|
'level': 'ERROR',
|
||||||
|
'propagate': True,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
LOGIN_REDIRECT_URL = '/system/'
|
||||||
Vendored
+18
@@ -0,0 +1,18 @@
|
|||||||
|
/*!
|
||||||
|
* jQuery JavaScript Library v1.6.1
|
||||||
|
* http://jquery.com/
|
||||||
|
*
|
||||||
|
* Copyright 2011, John Resig
|
||||||
|
* Dual licensed under the MIT or GPL Version 2 licenses.
|
||||||
|
* http://jquery.org/license
|
||||||
|
*
|
||||||
|
* Includes Sizzle.js
|
||||||
|
* http://sizzlejs.com/
|
||||||
|
* Copyright 2011, The Dojo Foundation
|
||||||
|
* Released under the MIT, BSD, and GPL Licenses.
|
||||||
|
*
|
||||||
|
* Date: Thu May 12 15:04:36 2011 -0400
|
||||||
|
*/
|
||||||
|
(function(a,b){function cy(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cv(a){if(!cj[a]){var b=f("<"+a+">").appendTo("body"),d=b.css("display");b.remove();if(d==="none"||d===""){ck||(ck=c.createElement("iframe"),ck.frameBorder=ck.width=ck.height=0),c.body.appendChild(ck);if(!cl||!ck.createElement)cl=(ck.contentWindow||ck.contentDocument).document,cl.write("<!doctype><html><body></body></html>");b=cl.createElement(a),cl.body.appendChild(b),d=f.css(b,"display"),c.body.removeChild(ck)}cj[a]=d}return cj[a]}function cu(a,b){var c={};f.each(cp.concat.apply([],cp.slice(0,b)),function(){c[this]=a});return c}function ct(){cq=b}function cs(){setTimeout(ct,0);return cq=f.now()}function ci(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ch(){try{return new a.XMLHttpRequest}catch(b){}}function cb(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g<i;g++){if(g===1)for(h in a.converters)typeof h=="string"&&(e[h.toLowerCase()]=a.converters[h]);l=k,k=d[g];if(k==="*")k=l;else if(l!=="*"&&l!==k){m=l+" "+k,n=e[m]||e["* "+k];if(!n){p=b;for(o in e){j=o.split(" ");if(j[0]===l||j[0]==="*"){p=e[j[1]+" "+k];if(p){o=e[o],o===!0?n=p:p===!0&&(n=o);break}}}}!n&&!p&&f.error("No conversion from "+m.replace(" "," to ")),n!==!0&&(c=n?n(c):p(o(c)))}}return c}function ca(a,c,d){var e=a.contents,f=a.dataTypes,g=a.responseFields,h,i,j,k;for(i in g)i in d&&(c[g[i]]=d[i]);while(f[0]==="*")f.shift(),h===b&&(h=a.mimeType||c.getResponseHeader("content-type"));if(h)for(i in e)if(e[i]&&e[i].test(h)){f.unshift(i);break}if(f[0]in d)j=f[0];else{for(i in d){if(!f[0]||a.converters[i+" "+f[0]]){j=i;break}k||(k=i)}j=j||k}if(j){j!==f[0]&&f.unshift(j);return d[j]}}function b_(a,b,c,d){if(f.isArray(b))f.each(b,function(b,e){c||bF.test(a)?d(a,e):b_(a+"["+(typeof e=="object"||f.isArray(e)?b:"")+"]",e,c,d)});else if(!c&&b!=null&&typeof b=="object")for(var e in b)b_(a+"["+e+"]",b[e],c,d);else d(a,b)}function b$(a,c,d,e,f,g){f=f||c.dataTypes[0],g=g||{},g[f]=!0;var h=a[f],i=0,j=h?h.length:0,k=a===bU,l;for(;i<j&&(k||!l);i++)l=h[i](c,d,e),typeof l=="string"&&(!k||g[l]?l=b:(c.dataTypes.unshift(l),l=b$(a,c,d,e,l,g)));(k||!l)&&!g["*"]&&(l=b$(a,c,d,e,"*",g));return l}function bZ(a){return function(b,c){typeof b!="string"&&(c=b,b="*");if(f.isFunction(c)){var d=b.toLowerCase().split(bQ),e=0,g=d.length,h,i,j;for(;e<g;e++)h=d[e],j=/^\+/.test(h),j&&(h=h.substr(1)||"*"),i=a[h]=a[h]||[],i[j?"unshift":"push"](c)}}}function bD(a,b,c){var d=b==="width"?bx:by,e=b==="width"?a.offsetWidth:a.offsetHeight;if(c==="border")return e;f.each(d,function(){c||(e-=parseFloat(f.css(a,"padding"+this))||0),c==="margin"?e+=parseFloat(f.css(a,"margin"+this))||0:e-=parseFloat(f.css(a,"border"+this+"Width"))||0});return e}function bn(a,b){b.src?f.ajax({url:b.src,async:!1,dataType:"script"}):f.globalEval((b.text||b.textContent||b.innerHTML||"").replace(bf,"/*$0*/")),b.parentNode&&b.parentNode.removeChild(b)}function bm(a){f.nodeName(a,"input")?bl(a):a.getElementsByTagName&&f.grep(a.getElementsByTagName("input"),bl)}function bl(a){if(a.type==="checkbox"||a.type==="radio")a.defaultChecked=a.checked}function bk(a){return"getElementsByTagName"in a?a.getElementsByTagName("*"):"querySelectorAll"in a?a.querySelectorAll("*"):[]}function bj(a,b){var c;if(b.nodeType===1){b.clearAttributes&&b.clearAttributes(),b.mergeAttributes&&b.mergeAttributes(a),c=b.nodeName.toLowerCase();if(c==="object")b.outerHTML=a.outerHTML;else if(c!=="input"||a.type!=="checkbox"&&a.type!=="radio"){if(c==="option")b.selected=a.defaultSelected;else if(c==="input"||c==="textarea")b.defaultValue=a.defaultValue}else a.checked&&(b.defaultChecked=b.checked=a.checked),b.value!==a.value&&(b.value=a.value);b.removeAttribute(f.expando)}}function bi(a,b){if(b.nodeType===1&&!!f.hasData(a)){var c=f.expando,d=f.data(a),e=f.data(b,d);if(d=d[c]){var g=d.events;e=e[c]=f.extend({},d);if(g){delete e.handle,e.events={};for(var h in g)for(var i=0,j=g[h].length;i<j;i++)f.event.add(b,h+(g[h][i].namespace?".":"")+g[h][i].namespace,g[h][i],g[h][i].data)}}}}function bh(a,b){return f.nodeName(a,"table")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function X(a,b,c){b=b||0;if(f.isFunction(b))return f.grep(a,function(a,d){var e=!!b.call(a,d,a);return e===c});if(b.nodeType)return f.grep(a,function(a,d){return a===b===c});if(typeof b=="string"){var d=f.grep(a,function(a){return a.nodeType===1});if(S.test(b))return f.filter(b,d,!c);b=f.filter(b,d)}return f.grep(a,function(a,d){return f.inArray(a,b)>=0===c})}function W(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function O(a,b){return(a&&a!=="*"?a+".":"")+b.replace(A,"`").replace(B,"&")}function N(a){var b,c,d,e,g,h,i,j,k,l,m,n,o,p=[],q=[],r=f._data(this,"events");if(!(a.liveFired===this||!r||!r.live||a.target.disabled||a.button&&a.type==="click")){a.namespace&&(n=new RegExp("(^|\\.)"+a.namespace.split(".").join("\\.(?:.*\\.)?")+"(\\.|$Line truncated
|
||||||
|
)});return}if(e.nodeType===3||e.nodeType===8)return;c.result=b,c.target=e,d=d?f.makeArray(d):[],d.unshift(c);var k=e,l=h.indexOf(":")<0?"on"+h:"";do{var m=f._data(k,"handle");c.currentTarget=k,m&&m.apply(k,d),l&&f.acceptData(k)&&k[l]&&k[l].apply(k,d)===!1&&(c.result=!1,c.preventDefault()),k=k.parentNode||k.ownerDocument||k===c.target.ownerDocument&&a}while(k&&!c.isPropagationStopped());if(!c.isDefaultPrevented()){var n,o=f.event.special[h]||{};if((!o._default||o._default.call(e.ownerDocument,c)===!1)&&(h!=="click"||!f.nodeName(e,"a"))&&f.acceptData(e)){try{l&&e[h]&&(n=e[l],n&&(e[l]=null),f.event.triggered=h,e[h]())}catch(p){}n&&(e[l]=n),f.event.triggered=b}}return c.result}},handle:function(c){c=f.event.fix(c||a.event);var d=((f._data(this,"events")||{})[c.type]||[]).slice(0),e=!c.exclusive&&!c.namespace,g=Array.prototype.slice.call(arguments,0);g[0]=c,c.currentTarget=this;for(var h=0,i=d.length;h<i;h++){var j=d[h];if(e||c.namespace_re.test(j.namespace)){c.handler=j.handler,c.data=j.data,c.handleObj=j;var k=j.handler.apply(this,g);k!==b&&(c.result=k,k===!1&&(c.preventDefault(),c.stopPropagation()));if(c.isImmediatePropagationStopped())break}}return c.result},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),fix:function(a){if(a[f.expando])return a;var d=a;a=f.Event(d);for(var e=this.props.length,g;e;)g=this.props[--e],a[g]=d[g];a.target||(a.target=a.srcElement||c),a.target.nodeType===3&&(a.target=a.target.parentNode),!a.relatedTarget&&a.fromElement&&(a.relatedTarget=a.fromElement===a.target?a.toElement:a.fromElement);if(a.pageX==null&&a.clientX!=null){var h=a.target.ownerDocument||c,i=h.documentElement,j=h.body;a.pageX=a.clientX+(i&&i.scrollLeft||j&&j.scrollLeft||0)-(i&&i.clientLeft||j&&j.clientLeft||0),a.pageY=a.clientY+(i&&i.scrollTop||j&&j.scrollTop||0)-(i&&i.clientTop||j&&j.clientTop||0)}a.which==null&&(a.charCode!=null||a.keyCode!=null)&&(a.which=a.charCode!=null?a.charCode:a.keyCode),!a.metaKey&&a.ctrlKey&&(a.metaKey=a.ctrlKey),!a.which&&a.button!==b&&(a.which=a.button&1?1:a.button&2?3:a.button&4?2:0);return a},guid:1e8,proxy:f.proxy,special:{ready:{setup:f.bindReady,teardown:f.noop},live:{add:function(a){f.event.add(this,O(a.origType,a.selector),f.extend({},a,{handler:N,guid:a.handler.guid}))},remove:function(a){f.event.remove(this,O(a.origType,a.selector),a)}},beforeunload:{setup:function(a,b,c){f.isWindow(this)&&(this.onbeforeunload=c)},teardown:function(a,b){this.onbeforeunload===b&&(this.onbeforeunload=null)}}}},f.removeEvent=c.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){a.detachEvent&&a.detachEvent("on"+b,c)},f.Event=function(a,b){if(!this.preventDefault)return new f.Event(a,b);a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||a.returnValue===!1||a.getPreventDefault&&a.getPreventDefault()?F:E):this.type=a,b&&f.extend(this,b),this.timeStamp=f.now(),this[f.expando]=!0},f.Event.prototype={preventDefault:function(){this.isDefaultPrevented=F;var a=this.originalEvent;!a||(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){this.isPropagationStopped=F;var a=this.originalEvent;!a||(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=F,this.stopPropagation()},isDefaultPrevented:E,isPropagationStopped:E,isImmediatePropagationStopped:E};var G=function(a){var b=a.relatedTarget;a.type=a.data;try{if(b&&b!==c&&!b.parentNode)return;while(b&&b!==this)b=b.parentNode;b!==this&&f.event.handle.apply(this,arguments)}catch(d){}},H=function(a){a.type=a.data,f.event.handle.apply(this,arguments)};f.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){f.event.special[a]={setup:function(c){f.event.add(this,b,c&&c.selector?H:G,a)},teardown:function(a){f.event.remove(this,b,a&&a.selector?H:G)}}}),f.support.submitBubbles||(f.event.special.submit={setup:function(a,b){if(!f.nodeName(this,"form"))f.event.add(this,"click.specialSubmit",function(a){var b=a.target,c=b.type;(c==="submit"||c==="image")&&f(b).closest("form").length&&L("submit",this,arguments)}),f.event.add(this,"keypress.specialSubmit",function(a){var b=a.target,c=b.type;(c==="text"||c==="password")&&f(b).closest("form").length&&a.keyCode===13&&L("submit",this,arguments)});else return!1},teardown:function(a){f.event.remove(this,".specialSubmit")}});if(!f.support.changeBubbles){var I,J=function(a){var b=a.type,c=a.value;b==="radio"||b==="checkbox"?c=a.checked:b==="select-multiple"?c=a.selectedIndex>-1?f.map(a.options,function(a){return a.selected}).join("-"):"":f.nodeName(a,"select")&&(c=a.selectedIndex);return c},K=function(c){var d=c.target,e,g;if(!!z.test(d.nLine truncated
|
||||||
|
b[0]&&b[0].ownerDocument||c);var h=[],i;for(var j=0,k;(k=a[j])!=null;j++){typeof k=="number"&&(k+="");if(!k)continue;if(typeof k=="string")if(!bb.test(k))k=b.createTextNode(k);else{k=k.replace($,"<$1></$2>");var l=(_.exec(k)||["",""])[1].toLowerCase(),m=bg[l]||bg._default,n=m[0],o=b.createElement("div");o.innerHTML=m[1]+k+m[2];while(n--)o=o.lastChild;if(!f.support.tbody){var p=ba.test(k),q=l==="table"&&!p?o.firstChild&&o.firstChild.childNodes:m[1]==="<table>"&&!p?o.childNodes:[];for(i=q.length-1;i>=0;--i)f.nodeName(q[i],"tbody")&&!q[i].childNodes.length&&q[i].parentNode.removeChild(q[i])}!f.support.leadingWhitespace&&Z.test(k)&&o.insertBefore(b.createTextNode(Z.exec(k)[0]),o.firstChild),k=o.childNodes}var r;if(!f.support.appendChecked)if(k[0]&&typeof (r=k.length)=="number")for(i=0;i<r;i++)bm(k[i]);else bm(k);k.nodeType?h.push(k):h=f.merge(h,k)}if(d){g=function(a){return!a.type||be.test(a.type)};for(j=0;h[j];j++)if(e&&f.nodeName(h[j],"script")&&(!h[j].type||h[j].type.toLowerCase()==="text/javascript"))e.push(h[j].parentNode?h[j].parentNode.removeChild(h[j]):h[j]);else{if(h[j].nodeType===1){var s=f.grep(h[j].getElementsByTagName("script"),g);h.splice.apply(h,[j+1,0].concat(s))}d.appendChild(h[j])}}return h},cleanData:function(a){var b,c,d=f.cache,e=f.expando,g=f.event.special,h=f.support.deleteExpando;for(var i=0,j;(j=a[i])!=null;i++){if(j.nodeName&&f.noData[j.nodeName.toLowerCase()])continue;c=j[f.expando];if(c){b=d[c]&&d[c][e];if(b&&b.events){for(var k in b.events)g[k]?f.event.remove(j,k):f.removeEvent(j,k,b.handle);b.handle&&(b.handle.elem=null)}h?delete j[f.expando]:j.removeAttribute&&j.removeAttribute(f.expando),delete d[c]}}}});var bo=/alpha\([^)]*\)/i,bp=/opacity=([^)]*)/,bq=/-([a-z])/ig,br=/([A-Z]|^ms)/g,bs=/^-?\d+(?:px)?$/i,bt=/^-?\d/,bu=/^[+\-]=/,bv=/[^+\-\.\de]+/g,bw={position:"absolute",visibility:"hidden",display:"block"},bx=["Left","Right"],by=["Top","Bottom"],bz,bA,bB,bC=function(a,b){return b.toUpperCase()};f.fn.css=function(a,c){if(arguments.length===2&&c===b)return this;return f.access(this,a,c,!0,function(a,c,d){return d!==b?f.style(a,c,d):f.css(a,c)})},f.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=bz(a,"opacity","opacity");return c===""?"1":c}return a.style.opacity}}},cssNumber:{zIndex:!0,fontWeight:!0,opacity:!0,zoom:!0,lineHeight:!0,widows:!0,orphans:!0},cssProps:{"float":f.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,d,e){if(!!a&&a.nodeType!==3&&a.nodeType!==8&&!!a.style){var g,h,i=f.camelCase(c),j=a.style,k=f.cssHooks[i];c=f.cssProps[i]||i;if(d===b){if(k&&"get"in k&&(g=k.get(a,!1,e))!==b)return g;return j[c]}h=typeof d;if(h==="number"&&isNaN(d)||d==null)return;h==="string"&&bu.test(d)&&(d=+d.replace(bv,"")+parseFloat(f.css(a,c))),h==="number"&&!f.cssNumber[i]&&(d+="px");if(!k||!("set"in k)||(d=k.set(a,d))!==b)try{j[c]=d}catch(l){}}},css:function(a,c,d){var e,g;c=f.camelCase(c),g=f.cssHooks[c],c=f.cssProps[c]||c,c==="cssFloat"&&(c="float");if(g&&"get"in g&&(e=g.get(a,!0,d))!==b)return e;if(bz)return bz(a,c)},swap:function(a,b,c){var d={};for(var e in b)d[e]=a.style[e],a.style[e]=b[e];c.call(a);for(e in b)a.style[e]=d[e]},camelCase:function(a){return a.replace(bq,bC)}}),f.curCSS=f.css,f.each(["height","width"],function(a,b){f.cssHooks[b]={get:function(a,c,d){var e;if(c){a.offsetWidth!==0?e=bD(a,b,d):f.swap(a,bw,function(){e=bD(a,b,d)});if(e<=0){e=bz(a,b,b),e==="0px"&&bB&&(e=bB(a,b,b));if(e!=null)return e===""||e==="auto"?"0px":e}if(e<0||e==null){e=a.style[b];return e===""||e==="auto"?"0px":e}return typeof e=="string"?e:e+"px"}},set:function(a,b){if(!bs.test(b))return b;b=parseFloat(b);if(b>=0)return b+"px"}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return bp.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle;c.zoom=1;var e=f.isNaN(b)?"":"alpha(opacity="+b*100+")",g=d&&d.filter||c.filter||"";c.filter=bo.test(g)?g.replace(bo,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){var c;f.swap(a,{display:"inline-block"},function(){b?c=bz(a,"margin-right","marginRight"):c=a.style.marginRight});return c}})}),c.defaultView&&c.defaultView.getComputedStyle&&(bA=function(a,c){var d,e,g;c=c.replace(br,"-$1").toLowerCase();if(!(e=a.ownerDocument.defaultView))return b;if(g=e.getComputedStyle(a,null))d=g.getPropertyValue(c),d===""&&!f.contains(a.ownerDocument.documentElement,a)&&(d=f.style(a,c));return d}),c.documentElement.currentStyle&&(bB=function(a,b){var c,d=a.currentStyle&&a.currentStyle[b],e=a.runtimeStyle&&a.runtimeStyle[b],f=a.style;!bs.test(d)&&bt.test(d)&&(c=f.left,e&&(a.runtimeStyle.left=a.currentStyle.left),f.left=b==="fontSize"?"1em":d||0,d=f.pixelLeft+"px",f.left=c,e&&(a.runtimeStyle.left=e));return d===""?"auto":d}),bz=bA||bB,f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style.displayLine truncated
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
# Require any additional compass plugins here.
|
||||||
|
require 'rails'
|
||||||
|
require 'compass_twitter_bootstrap'
|
||||||
|
|
||||||
|
# Set this to the root of your project when deployed:
|
||||||
|
http_path = "/"
|
||||||
|
css_dir = "stylesheets"
|
||||||
|
sass_dir = "sass"
|
||||||
|
images_dir = "images"
|
||||||
|
javascripts_dir = "javascripts"
|
||||||
|
|
||||||
|
# You can select your preferred output style here (can be overridden via the command line):
|
||||||
|
# output_style = :expanded or :nested or :compact or :compressed
|
||||||
|
|
||||||
|
# To enable relative paths to assets via compass helper functions. Uncomment:
|
||||||
|
# relative_assets = true
|
||||||
|
|
||||||
|
line_comments = false
|
||||||
|
|
||||||
|
|
||||||
|
# If you prefer the indented syntax, you might want to regenerate this
|
||||||
|
# project again passing --syntax sass, or you can uncomment this:
|
||||||
|
# preferred_syntax = :sass
|
||||||
|
# and then run:
|
||||||
|
# sass-convert -R --from scss --to sass sass scss && rm -rf sass && mv scss sass
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 5.1 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 923 B |
@@ -0,0 +1,5 @@
|
|||||||
|
/* Welcome to Compass. Use this file to write IE specific override styles.
|
||||||
|
* Import this file using the following HTML or equivalent:
|
||||||
|
* <!--[if IE]>
|
||||||
|
* <link href="/stylesheets/ie.css" media="screen, projection" rel="stylesheet" type="text/css" />
|
||||||
|
* <![endif]--> */
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
/* Welcome to Compass. Use this file to define print styles.
|
||||||
|
* Import this file using the following HTML or equivalent:
|
||||||
|
* <link href="/stylesheets/print.css" media="print" rel="stylesheet" type="text/css" /> */
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
/* Welcome to Compass.
|
||||||
|
* In this file you should write your main styles. (or centralize your imports)
|
||||||
|
* Import this file using the following HTML or equivalent:
|
||||||
|
* <link href="/stylesheets/screen.css" media="screen, projection" rel="stylesheet" type="text/css" /> */
|
||||||
|
|
||||||
|
@import "compass/reset";
|
||||||
|
@import "compass/css3";
|
||||||
|
@import "compass_twitter_bootstrap";
|
||||||
|
@import "compass/typography/lists/bullets";
|
||||||
|
|
||||||
|
html {
|
||||||
|
body {
|
||||||
|
header {
|
||||||
|
}
|
||||||
|
|
||||||
|
article {
|
||||||
|
}
|
||||||
|
footer {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
/* Welcome to Compass. Use this file to write IE specific override styles.
|
||||||
|
* Import this file using the following HTML or equivalent:
|
||||||
|
* <!--[if IE]>
|
||||||
|
* <link href="/stylesheets/ie.css" media="screen, projection" rel="stylesheet" type="text/css" />
|
||||||
|
* <![endif]--> */
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
/* Welcome to Compass. Use this file to define print styles.
|
||||||
|
* Import this file using the following HTML or equivalent:
|
||||||
|
* <link href="/stylesheets/print.css" media="print" rel="stylesheet" type="text/css" /> */
|
||||||
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1,14 @@
|
|||||||
|
from django.conf.urls.defaults import patterns, include, url
|
||||||
|
from django.contrib import admin
|
||||||
|
admin.autodiscover()
|
||||||
|
|
||||||
|
urlpatterns = patterns('',
|
||||||
|
url(r'^$', 'main.views.index', name='index'),
|
||||||
|
url(r'^admin/', include(admin.site.urls)),
|
||||||
|
url(r'^', include('main.urls')),
|
||||||
|
url(r'^accounts/login', 'django.contrib.auth.views.login'),
|
||||||
|
url(r'^accounts/logout', 'django.contrib.auth.views.logout'),
|
||||||
|
)
|
||||||
|
# for dev
|
||||||
|
from django.contrib.staticfiles.urls import staticfiles_urlpatterns
|
||||||
|
urlpatterns += staticfiles_urlpatterns()
|
||||||
Reference in new issue
Block a user