2
2
from django.http import HttpResponse, HttpResponseRedirect
3
3
from django.core.urlresolvers import reverse
4
4
from django.template import loader, RequestContext
5
from django.forms import ModelForm
6
7
from common.models import Topic, Version, Section
7
8
from apidocs.models import Namespace, Element, Page
25
26
return render_to_response('web/distro.html', context, RequestContext(request))
28
class TopicForm(ModelForm):
32
def topic_edit(request, topic_id=0):
34
topic = get_object_or_404(Topic, id=topic_id)
38
if not request.user.has_perm('common.change_topic'):
39
return HttpResponseRedirect(reverse(topic_view, args=[topic.slug]))
41
if request.method == 'POST':
42
form = TopicForm(request.POST, instance=topic)
45
return HttpResponseRedirect(reverse(topic_view, args=[topic.slug]))
47
form = TopicForm(instance=topic)
52
return render_to_response('web/topic_edit.html', context, RequestContext(request))
27
54
def version_view(request, topic_name, release_version):
28
55
version = get_object_or_404(Version, topic__slug=topic_name, slug=release_version)
64
91
return render_to_response('web/release.html', context, RequestContext(request))
93
class VersionForm(ModelForm):
97
def version_edit(request, topic_name, version_id=0):
99
version = get_object_or_404(Version, topic__slug=topic_name, id=version_id)
100
topic = version.topic
102
topic = get_object_or_404(Topic, slug=topic_name)
103
version = Version(topic=topic)
105
if not request.user.has_perm('common.change_version'):
106
return HttpResponseRedirect(reverse(version_view, args=[topic.slug, version.slug]))
108
if request.method == 'POST':
109
form = VersionForm(request.POST, instance=version)
112
return HttpResponseRedirect(reverse(version_view, args=[topic.slug, version.slug]))
114
form = VersionForm(instance=version)
120
return render_to_response('web/version_edit.html', context, RequestContext(request))
122
class SectionForm(ModelForm):
126
def section_edit(request, topic_name, version_name, section_id=0):
128
section = get_object_or_404(Section, topic_version__topic__slug=topic_name, topic_version__slug=version_name, id=section_id)
129
version = section.topic_version
130
topic = version.topic
132
topic = get_object_or_404(Topic, slug=topic_name)
133
version = get_object_or_404(Version, topic=topic, slug=version_name)
134
section = Section(topic_version=version)
136
if not request.user.has_perm('common.change_section'):
137
return HttpResponseRedirect(reverse(version_view, args=[topic.slug, version.slug]))
139
if request.method == 'POST':
140
form = SectionForm(request.POST, instance=section)
143
return HttpResponseRedirect(reverse(version_view, args=[topic.slug, version.slug]))
145
form = SectionForm(instance=section)
147
'sidenav': topic_name,
153
return render_to_response('web/section_edit.html', context, RequestContext(request))
66
155
def namespace_view(request, topic_name, release_version, namespace_name):
68
157
namespace = Namespace.objects.get(platform_section__topic_version__slug=release_version, platform_section__topic_version__topic__slug=topic_name, name=namespace_name)
83
172
return render_to_response('web/namespace.html', context, RequestContext(request))
174
class NamespaceForm(ModelForm):
178
def __init__(self, *args, **kargs):
179
if 'version' in kargs:
180
version = kargs['version']
182
elif hasattr(self, 'instance') and self.instance.section:
183
version = self.instance.section.topic_version
186
super(NamespaceForm, self).__init__(*args, **kargs)
187
self.fields['platform_section'].queryset = Section.objects.filter(topic_version=version)
189
def namespace_edit(request, topic_name, version_name, namespace_id=0):
191
namespace = get_object_or_404(Namespace, platform_section__topic_version__slug=version_name, platform_section__topic_version__topic__slug=topic_name, id=namespace_id)
192
version = namespace.platform_section.topic_version
193
topic = version.topic
195
topic = get_object_or_404(Topic, slug=topic_name)
196
version = get_object_or_404(Version, slug=version_name, topic=topic)
197
namespace = Namespace()
199
if not request.user.has_perm('apidocs.change_namespace'):
200
return HttpResponseRedirect(reverse(element_view, args=[topic_name, version_name, namespace.name]))
202
if request.method == 'POST':
203
form = NamespaceForm(request.POST, instance=namespace, version=version)
206
return HttpResponseRedirect(reverse(element_view, args=[topic_name, version_name, namespace.name]))
208
form = NamespaceForm(instance=namespace, version=version)
211
'sidenav': topic_name,
214
'namespace': namespace,
216
return render_to_response('web/namespace_edit.html', context, RequestContext(request))
85
218
def page_view(request, topic_name, release_version, page_fullname):
86
219
page = get_object_or_404(Page, section__topic_version__slug=release_version, section__topic_version__topic__slug=topic_name, fullname=page_fullname)
100
233
return render_to_response('web/page.html', context, RequestContext(request))
235
class PageForm(ModelForm):
239
def __init__(self, *args, **kargs):
240
if 'version' in kargs:
241
version = kargs['version']
243
elif hasattr(self, 'instance') and self.instance.section:
244
version = self.instance.section.topic_version
247
super(PageForm, self).__init__(*args, **kargs)
248
self.fields['section'].queryset = Section.objects.filter(topic_version=version)
249
self.fields['namespace'].queryset = Namespace.objects.filter(platform_section__topic_version=version)
251
def page_edit(request, topic_name, release_version, page_id=0):
253
page = get_object_or_404(Page, section__topic_version__slug=release_version, section__topic_version__topic__slug=topic_name, id=page_id)
254
version = page.section.topic_version
255
topic = version.topic
257
topic = get_object_or_404(Topic, slug=topic_name)
258
version = get_object_or_404(Version, slug=release_version, topic=topic)
261
if not request.user.has_perm('apidocs.change_page'):
262
return HttpResponseRedirect(reverse(version_view, args=[topic_name, release_version]))
264
if request.method == 'POST':
265
form = PageForm(request.POST, instance=page, version=version)
268
return HttpResponseRedirect(reverse(version_view, args=[topic_name, release_version]))
270
form = PageForm(instance=page, version=version)
273
'sidenav': topic_name,
278
return render_to_response('web/page_edit.html', context, RequestContext(request))
102
280
def element_view(request, topic_name, release_version, element_fullname):
104
282
element = Element.objects.get(section__topic_version__slug=release_version, section__topic_version__topic__slug=topic_name, fullname=element_fullname)
120
298
'tutorials': tutorials
122
300
return render_to_response('web/element.html', context, RequestContext(request))
302
class ElementForm(ModelForm):
306
def __init__(self, *args, **kargs):
307
if 'version' in kargs:
308
version = kargs['version']
310
elif hasattr(self, 'instance') and self.instance.section:
311
version = self.instance.section.topic_version
314
super(ElementForm, self).__init__(*args, **kargs)
315
self.fields['section'].queryset = Section.objects.filter(topic_version=version)
316
self.fields['namespace'].queryset = Namespace.objects.filter(platform_section__topic_version=version)
318
def element_edit(request, topic_name, release_version, element_id=0):
320
element = get_object_or_404(Element, section__topic_version__slug=release_version, section__topic_version__topic__slug=topic_name, id=element_id)
321
version = element.section.topic_version
322
topic = version.topic
324
topic = get_object_or_404(Topic, slug=topic_name)
325
version = get_object_or_404(Version, slug=release_version, topic=topic)
328
if not request.user.has_perm('apidocs.change_element'):
329
return HttpResponseRedirect(reverse(element_view, args=[topic_name, release_version, element.fullname]))
331
if request.method == 'POST':
332
form = ElementForm(request.POST, instance=element, version=version)
335
return HttpResponseRedirect(reverse(element_view, args=[topic_name, release_version, element.fullname]))
337
form = ElementForm(instance=element, version=version)
340
'sidenav': topic_name,
345
return render_to_response('web/element_edit.html', context, RequestContext(request))
124
347
def search(request, topic_name, release_version):
125
348
version = get_object_or_404(Version, topic__slug=topic_name, slug=release_version)