diff --git a/djmicro.py b/djmicro.py index 9db7907..d779cea 100644 --- a/djmicro.py +++ b/djmicro.py @@ -1,6 +1,7 @@ import os _base_module = None +__all__ = ["configure", "route", "run", "render", "redirect"] def configure(options={}, module=None): if not module: @@ -38,4 +39,13 @@ def add_route(view): def run(): from django.core.management import execute_from_command_line - execute_from_command_line() \ No newline at end of file + 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) + diff --git a/example/djmicro.py b/example/djmicro.py deleted file mode 120000 index 40084bb..0000000 --- a/example/djmicro.py +++ /dev/null @@ -1 +0,0 @@ -../djmicro.py \ No newline at end of file diff --git a/example/djmicro.py b/example/djmicro.py new file mode 100644 index 0000000..d779cea --- /dev/null +++ b/example/djmicro.py @@ -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) + diff --git a/example/web.py b/example/web.py index 54a43a1..25e351b 100644 --- a/example/web.py +++ b/example/web.py @@ -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() \ No newline at end of file diff --git a/example/web_star_import.py b/example/web_star_import.py new file mode 100644 index 0000000..3ef0307 --- /dev/null +++ b/example/web_star_import.py @@ -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() \ No newline at end of file diff --git a/example_db/db_index.html b/example_db/db_index.html new file mode 100644 index 0000000..1ff844b --- /dev/null +++ b/example_db/db_index.html @@ -0,0 +1,19 @@ + + +
+