~widelands-dev/widelands-website/trunk

« back to all changes in this revision

Viewing changes to sphinxdoc/views.py

  • Committer: franku
  • Date: 2016-07-02 12:38:06 UTC
  • mfrom: (404.2.56 widelands)
  • Revision ID: somal@arcor.de-20160702123806-q69u3d48s1prrxds
merged the django1_8 branch

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
# encoding: utf-8
 
2
 
 
3
import datetime
 
4
import os.path
 
5
 
 
6
from django.http import Http404
 
7
from django.shortcuts import get_object_or_404, render_to_response
 
8
from django.template import RequestContext
 
9
#from django.utils import simplejson as json
 
10
import json
 
11
from django.views import static
 
12
 
 
13
from sphinxdoc.models import App
 
14
 
 
15
 
 
16
SPECIAL_TITLES = {
 
17
    'genindex': 'General Index',
 
18
    'modindex': 'Module Index',
 
19
    'search': 'Search',
 
20
}
 
21
 
 
22
 
 
23
def documentation(request, slug, url):
 
24
    app = get_object_or_404(App, slug=slug)
 
25
    url = url.strip('/')
 
26
    page_name = os.path.basename(url)
 
27
    
 
28
    path = os.path.join(app.path, url, 'index.fjson')
 
29
    if not os.path.exists(path):
 
30
        path = os.path.dirname(path) + '.fjson'
 
31
        if not os.path.exists(path):
 
32
            raise Http404('"%s" does not exist' % path)
 
33
 
 
34
    templates = (
 
35
        'sphinxdoc/%s.html' % page_name,
 
36
        'sphinxdoc/documentation.html',
 
37
    )
 
38
    
 
39
    data = {
 
40
        'app': app,
 
41
        'doc': json.load(open(path, 'rb')),
 
42
        'env': json.load(open(
 
43
                os.path.join(app.path, 'globalcontext.json'), 'rb')),
 
44
        'version': app.name,
 
45
        'docurl': url,
 
46
        'update_date':  datetime.datetime.fromtimestamp(
 
47
                os.path.getmtime(os.path.join(app.path, 'last_build'))),
 
48
        'home': app.get_absolute_url(),
 
49
        # 'search': urlresolvers.reverse('document-search', kwargs={'lang':lang, 'version':version}),
 
50
        'redirect_from': request.GET.get('from', None),
 
51
    
 
52
    }
 
53
    if 'title' not in data['doc']:
 
54
        data['doc']['title'] = SPECIAL_TITLES[page_name]
 
55
        
 
56
    return render_to_response(templates, data,
 
57
            context_instance=RequestContext(request))
 
58
 
 
59
def search(request, slug):
 
60
    from django.http import HttpResponse
 
61
    return HttpResponse('Not yet implemented.')
 
62
    
 
63
def objects_inventory(request, slug):
 
64
    app = get_object_or_404(App, slug=slug)
 
65
    response = static.serve(
 
66
        request, 
 
67
        document_root = app.path,
 
68
        path = "objects.inv",
 
69
    )
 
70
    response['Content-Type'] = "text/plain"
 
71
    return response
 
72
 
 
73
def images(request, slug, path):
 
74
    app = get_object_or_404(App, slug=slug)
 
75
    return static.serve(
 
76
        request, 
 
77
        document_root = os.path.join(app.path, '_images'),
 
78
        path = path,
 
79
    )
 
80
    
 
81
def source(request, slug, path):
 
82
    app = get_object_or_404(App, slug=slug)
 
83
    return static.serve(
 
84
        request,
 
85
        document_root = os.path.join(app.path, '_sources'),
 
86
        path = path,
 
87
    )