Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 11 additions & 1 deletion djmicro.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import os

_base_module = None
__all__ = ["configure", "route", "run", "render", "redirect"]

def configure(options={}, module=None):
if not module:
Expand Down Expand Up @@ -38,4 +39,13 @@ def add_route(view):

def run():
from django.core.management import execute_from_command_line
execute_from_command_line()
execute_from_command_line()

def render(*args, **kwargs):
from django.shortcuts import render as orig_render
return orig_render(*args, **kwargs)

def redirect(*args, **kwargs):
from django.shortcuts import redirect as orig_redirect
return orig_redirect(*args, **kwargs)

1 change: 0 additions & 1 deletion example/djmicro.py

This file was deleted.

51 changes: 51 additions & 0 deletions example/djmicro.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
import os

_base_module = None
__all__ = ["configure", "route", "run", "render", "redirect"]

def configure(options={}, module=None):
if not module:
# hack to figure out where we were called from
import sys, inspect
module = sys.modules[inspect.stack()[1][0].f_locals['__name__']]

# settings
from django.conf import settings
if not settings.configured:
opts = dict(
DEBUG = True,
ROOT_URLCONF = module.__name__,
TEMPLATE_DIRS = [os.path.dirname(module.__file__)],
INSTALLED_APPS = []
)
opts.update(options)
settings.configure(**opts)

# urls
from django.conf.urls.defaults import patterns
module.urlpatterns = patterns('')

global _base_module
_base_module = module

def route(*args, **kwargs):
def add_route(view):
from django.conf.urls.defaults import patterns, url
_base_module.urlpatterns += patterns('',
url(args[0], view, *args[1:], **kwargs)
)
return view
return add_route

def run():
from django.core.management import execute_from_command_line
execute_from_command_line()

def render(*args, **kwargs):
from django.shortcuts import render as orig_render
return orig_render(*args, **kwargs)

def redirect(*args, **kwargs):
from django.shortcuts import redirect as orig_redirect
return orig_redirect(*args, **kwargs)

6 changes: 2 additions & 4 deletions example/web.py
Original file line number Diff line number Diff line change
@@ -1,15 +1,13 @@
import djmicro
djmicro.configure()

from django.shortcuts import render

@djmicro.route(r'^$')
def hello(request):
return render(request, 'index.html', {})
return djmicro.render(request, 'index.html', {})

@djmicro.route(r'^test/(\d+)/$')
def test(request, id):
return render(request, 'test.html', {'id': id})
return djmicro.render(request, 'test.html', {'id': id})

if __name__ == '__main__':
djmicro.run()
10 changes: 10 additions & 0 deletions example/web_star_import.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
''' demoing star import on djmicro '''
from djmicro import *
configure()

@route(r'^$')
def hello(request):
return render(request, 'index.html', {})

if __name__ == '__main__':
run()
19 changes: 19 additions & 0 deletions example_db/db_index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>djmicro db example</title>
</head>
<body>

<form action="/add/" method="post">{% csrf_token %}
{{ form.as_p }}
<input type="submit" value="Submit" />
<ol>
{% for task in tasks %}
<li><strong>{{ task.title|escape }}</strong></li>
{% endfor %}
</ol>
</form>
</body>
</html>
Empty file added example_db/tasks/__init__.py
Empty file.
9 changes: 9 additions & 0 deletions example_db/tasks/models.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
from django.db import models
from django.forms import ModelForm

class Task(models.Model):
title = models.CharField(max_length=255)

class TaskForm(ModelForm):
class Meta:
model = Task
34 changes: 34 additions & 0 deletions example_db/web_db.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
''' demoing db usage on djmicro '''
from djmicro import *
import os.path
configure(dict(
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join( os.path.dirname(__file__), 'djmicro.db3')
}
},

INSTALLED_APPS= ('tasks',)

))

from tasks.models import Task, TaskForm

@route(r'^$')
def index(request):
context = dict(
form = TaskForm(),
tasks = Task.objects.all()
)
return render(request, 'db_index.html', context)

@route(r'^add/$')
def add(request):
if request.method == 'POST':
f = TaskForm(request.POST)
f.save()
return redirect("/")

if __name__ == '__main__':
run()