from django.core.template import Template
from django.core.extensions import DjangoContext as Context
from django.models.core import sessions
from django.models.roomy import schedules, rooms, talks
from django.core.extensions import render_to_response
from django.utils.httpwrappers import HttpResponseRedirect, HttpResponse
from django.core import template_loader
from django.conf.settings import INSTALLED_APPS
from django.core.exceptions import ImproperlyConfigured

app_list = []
for app in INSTALLED_APPS:
    i = app.rfind('.')
    if i == -1:
        m, a = app, None
    else:
        m, a = app[:i], app[i+1:]
    try:
        if a is None:
            mod = __import__(m, '', '', [])
        else:
            mod = getattr(__import__(m, '', '', [a]), a)
    except ImportError, e:
        raise ImproperlyConfigured, 'ImportError %s: %s' % (app, e.args[0])

    if mod.__doc__:
        name = a or mod.__name__
        title = name
        desc = mod.__doc__
        dd = desc.split('\n')
        if len(dd) > 2 and dd[0].strip() and not dd[1].strip():
            title = dd[0].strip()
            desc = "\n".join(dd[2:])
        app_list.append({'name': name, 'title': title, 'desc': desc})

# It won't change, so convert it to a tuple to save memory.
app_list = tuple(app_list)

def appindex(request):
    return render_to_response("pycon/appindex",
        { 'app_list': app_list },
        context_instance=Context(request) )
