Merge lp:~daker/ubuntu-api-website/fix.1275721 into lp:ubuntu-api-website

Proposed by Adnane Belmadiaf
Status: Merged
Merged at revision: 56
Proposed branch: lp:~daker/ubuntu-api-website/fix.1275721
Merge into: lp:ubuntu-api-website
Diff against target: 478 lines (+151/-124)
3 files modified
developer_network/apidocs/models.py (+34/-35)
developer_network/web/forms.py (+85/-0)
developer_network/web/views.py (+32/-89)
To merge this branch: bzr merge lp:~daker/ubuntu-api-website/fix.1275721
Reviewer Review Type Date Requested Status
Ubuntu API Website Developers Pending
Review via email: mp+206594@code.launchpad.net

Commit message

Code adjustments

To post a comment you must log in.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'developer_network/apidocs/models.py'
--- developer_network/apidocs/models.py 2013-12-19 21:14:27 +0000
+++ developer_network/apidocs/models.py 2014-02-15 20:59:13 +0000
@@ -1,64 +1,63 @@
1# -*- coding: utf-8 -*-
2
1from django.db import models3from django.db import models
2from common.models import Topic, Version, Section4from common.models import Section
3# Create your models here.
45
5class Namespace(models.Model):6class Namespace(models.Model):
6 7
7 class Meta:
8 ordering = ('name',)
9
10 platform_section = models.ForeignKey(Section)8 platform_section = models.ForeignKey(Section)
11 name = models.CharField(max_length=64)9 name = models.CharField(max_length=64)
12 display_name = models.CharField(max_length=64, blank=True, default='')10 display_name = models.CharField(max_length=64, blank=True, default='')
13 11
12 class Meta:
13 ordering = ('name',)
14
14 def __unicode__(self):15 def __unicode__(self):
15 return self.name16 return u'%s' % self.name
1617
1718
18class Element(models.Model):19class Element(models.Model):
19 'Displayable API Element'20 'Displayable API Element'
20 21
22 name = models.CharField(max_length=64)
23 description= models.CharField(max_length=256, blank=True, default='')
24 namespace = models.ForeignKey(Namespace, blank=True, null=True)
25
26 section = models.ForeignKey(Section)
27 fullname = models.CharField(max_length=128)
28 keywords = models.CharField(max_length=256, blank=True, default='')
29 data = models.TextField(blank=True, default='')
30
21 class Meta:31 class Meta:
22 verbose_name = "Rendered Element"32 verbose_name = "Rendered Element"
23 verbose_name_plural = "Rendered Elements"33 verbose_name_plural = "Rendered Elements"
24 ordering = ('name',)34 ordering = ('name',)
25 35
26 name = models.CharField(max_length=64)36 def __unicode__(self):
27 description= models.CharField(max_length=256, blank=True, default='')37 return u'%s' % self.fullname
28 namespace = models.ForeignKey(Namespace, blank=True, null=True)
29
30 section = models.ForeignKey(Section)
31 fullname = models.CharField(max_length=128)
32 keywords = models.CharField(max_length=256, blank=True, default='')
33 data = models.TextField(blank=True, default='')
3438
35 @property39 @property
36 def platform_section(self):40 def platform_section(self):
37 return self.section41 return self.section
38
39 def __unicode__(self):
40 return self.fullname
4142
4243
43class Page(models.Model):44class Page(models.Model):
44 'Displayable Page of non-Element content'45 'Displayable Page of non-Element content'
45 46
47 slug = models.CharField(max_length=64)
48 title = models.CharField(max_length=64)
49 description= models.CharField(max_length=256, blank=True, default='')
50 namespace = models.ForeignKey(Namespace, blank=True, null=True)
51
52 section = models.ForeignKey(Section)
53 fullname = models.CharField(max_length=128)
54 keywords = models.CharField(max_length=256, blank=True, default='')
55 data = models.TextField(blank=True, default='')
56
46 class Meta:57 class Meta:
47 verbose_name = "Rendered Page"58 verbose_name = "Rendered Page"
48 verbose_name_plural = "Rendered Pages"59 verbose_name_plural = "Rendered Pages"
49 ordering = ('slug',)60 ordering = ('slug',)
50
51 slug = models.CharField(max_length=64)
52 title = models.CharField(max_length=64)
53 description= models.CharField(max_length=256, blank=True, default='')
54 namespace = models.ForeignKey(Namespace, blank=True, null=True)
55
56 section = models.ForeignKey(Section)
57 fullname = models.CharField(max_length=128)
58 keywords = models.CharField(max_length=256, blank=True, default='')
59 data = models.TextField(blank=True, default='')
6061
61 def __unicode__(self):62 def __unicode__(self):
62 return self.fullname63 return u'%s' % self.fullname
63
64
6564
=== added file 'developer_network/web/forms.py'
--- developer_network/web/forms.py 1970-01-01 00:00:00 +0000
+++ developer_network/web/forms.py 2014-02-15 20:59:13 +0000
@@ -0,0 +1,85 @@
1# -*- coding: utf-8 -*-
2
3from django.forms import ModelForm
4from django.contrib.auth.models import User
5
6from common.models import Topic, Version, Section
7from apidocs.models import Namespace, Element, Page
8from rest_framework.authtoken.models import Token
9
10
11class TopicForm(ModelForm):
12 class Meta:
13 model = Topic
14
15
16class VersionForm(ModelForm):
17 class Meta:
18 model = Version
19
20
21class SectionForm(ModelForm):
22 class Meta:
23 model = Section
24
25
26class NamespaceForm(ModelForm):
27 class Meta:
28 model = Namespace
29
30 def __init__(self, *args, **kargs):
31 if 'version' in kargs:
32 version = kargs['version']
33 del kargs['version']
34 elif hasattr(self, 'instance') and self.instance.section:
35 version = self.instance.section.topic_version
36 else:
37 version=None
38 super(NamespaceForm, self).__init__(*args, **kargs)
39 self.fields['platform_section'].queryset = Section.objects.filter(topic_version=version)
40
41
42class PageForm(ModelForm):
43 class Meta:
44 model = Page
45
46 def __init__(self, *args, **kargs):
47 if 'version' in kargs:
48 version = kargs['version']
49 del kargs['version']
50 elif hasattr(self, 'instance') and self.instance.section:
51 version = self.instance.section.topic_version
52 else:
53 version=None
54 super(PageForm, self).__init__(*args, **kargs)
55 self.fields['section'].queryset = Section.objects.filter(topic_version=version)
56 self.fields['namespace'].queryset = Namespace.objects.filter(platform_section__topic_version=version)
57
58
59class ElementForm(ModelForm):
60 class Meta:
61 model = Element
62
63 def __init__(self, *args, **kargs):
64 if 'version' in kargs:
65 version = kargs['version']
66 del kargs['version']
67 elif hasattr(self, 'instance') and self.instance.section:
68 version = self.instance.section.topic_version
69 else:
70 version=None
71 super(ElementForm, self).__init__(*args, **kargs)
72 self.fields['section'].queryset = Section.objects.filter(topic_version=version)
73 self.fields['namespace'].queryset = Namespace.objects.filter(platform_section__topic_version=version)
74
75
76class TokenForm(ModelForm):
77 class Meta:
78 model = Token
79 fields = ('user',)
80
81
82class UserForm(ModelForm):
83 class Meta:
84 model = User
85 fields = ('username',)
086
=== modified file 'developer_network/web/views.py'
--- developer_network/web/views.py 2014-02-07 18:39:18 +0000
+++ developer_network/web/views.py 2014-02-15 20:59:13 +0000
@@ -1,8 +1,9 @@
1# -*- coding: utf-8 -*-
2
1from django.shortcuts import render_to_response, get_object_or_4043from django.shortcuts import render_to_response, get_object_or_404
2from django.http import HttpResponse, HttpResponseRedirect4from django.http import HttpResponseRedirect
3from django.core.urlresolvers import reverse5from django.core.urlresolvers import reverse
4from django.template import loader, RequestContext6from django.template import RequestContext
5from django.forms import ModelForm
6from django.contrib.auth.models import User, Group7from django.contrib.auth.models import User, Group
78
8from common.models import Topic, Version, Section9from common.models import Topic, Version, Section
@@ -10,26 +11,25 @@
10from related.models import Snippet, Link, LINK_QUESTION, LINK_TUTORIAL11from related.models import Snippet, Link, LINK_QUESTION, LINK_TUTORIAL
11from rest_framework.authtoken.models import Token12from rest_framework.authtoken.models import Token
1213
13# Create your views here.14from forms import *
15
14def overview(request):16def overview(request):
15 topics = Topic.objects.all()17 topics = Topic.objects.all()
16 18
17 context = {19 context = {
18 'topics': topics,20 'topics': topics,
19 }21 }
20 return render_to_response('web/overview.html', context, RequestContext(request))22 return render_to_response('web/overview.html', context, RequestContext(request))
21 23
24
22def topic_view(request, topic_name):25def topic_view(request, topic_name):
23 topic = get_object_or_404(Topic, slug=topic_name)26 topic = get_object_or_404(Topic, slug=topic_name)
24 27
25 context = {28 context = {
26 'topic': topic,29 'topic': topic,
27 }30 }
28 return render_to_response('web/distro.html', context, RequestContext(request))31 return render_to_response('web/distro.html', context, RequestContext(request))
2932
30class TopicForm(ModelForm):
31 class Meta:
32 model = Topic
3333
34def topic_edit(request, topic_id=0):34def topic_edit(request, topic_id=0):
35 if topic_id:35 if topic_id:
@@ -53,6 +53,7 @@
53 }53 }
54 return render_to_response('web/topic_edit.html', context, RequestContext(request))54 return render_to_response('web/topic_edit.html', context, RequestContext(request))
5555
56
56def version_view(request, topic_name, release_version):57def version_view(request, topic_name, release_version):
57 version = get_object_or_404(Version, topic__slug=topic_name, slug=release_version)58 version = get_object_or_404(Version, topic__slug=topic_name, slug=release_version)
5859
@@ -74,7 +75,7 @@
74 else:75 else:
75 break76 break
76 sorted_sections.insert(i, section)77 sorted_sections.insert(i, section)
77 78
78 first_column_size = 079 first_column_size = 0
79 for section in sorted_sections:80 for section in sorted_sections:
80 section_size = section.namespace_set.count() + section.free_element_set().count() + 2 # Extra 2 for the section header81 section_size = section.namespace_set.count() + section.free_element_set().count() + 2 # Extra 2 for the section header
@@ -93,9 +94,6 @@
93 }94 }
94 return render_to_response('web/release.html', context, RequestContext(request))95 return render_to_response('web/release.html', context, RequestContext(request))
9596
96class VersionForm(ModelForm):
97 class Meta:
98 model = Version
9997
100def version_edit(request, topic_name, version_id=0):98def version_edit(request, topic_name, version_id=0):
101 if version_id:99 if version_id:
@@ -122,9 +120,6 @@
122 }120 }
123 return render_to_response('web/version_edit.html', context, RequestContext(request))121 return render_to_response('web/version_edit.html', context, RequestContext(request))
124122
125class SectionForm(ModelForm):
126 class Meta:
127 model = Section
128123
129def section_edit(request, topic_name, version_name, section_id=0):124def section_edit(request, topic_name, version_name, section_id=0):
130 if section_id:125 if section_id:
@@ -153,14 +148,14 @@
153 'name': section.name,148 'name': section.name,
154 }149 }
155 return render_to_response('web/delete_confirm.html', context, RequestContext(request))150 return render_to_response('web/delete_confirm.html', context, RequestContext(request))
156 151
157 elif request.GET.get('action', None) == 'delete_cancel':152 elif request.GET.get('action', None) == 'delete_cancel':
158 return HttpResponseRedirect(reverse(version_view, args=[topic_name, version_name]))153 return HttpResponseRedirect(reverse(version_view, args=[topic_name, version_name]))
159 154
160 elif request.GET.get('action', None) == 'delete_confirm':155 elif request.GET.get('action', None) == 'delete_confirm':
161 section.delete()156 section.delete()
162 return HttpResponseRedirect(reverse(version_view, args=[topic_name, version_name]))157 return HttpResponseRedirect(reverse(version_view, args=[topic_name, version_name]))
163 158
164 else:159 else:
165 form = SectionForm(instance=section)160 form = SectionForm(instance=section)
166 context = {161 context = {
@@ -182,7 +177,7 @@
182 links = Link.objects.filter(rendered_element=namespace)177 links = Link.objects.filter(rendered_element=namespace)
183 questions = [link for link in links if link.link_type is LINK_QUESTION]178 questions = [link for link in links if link.link_type is LINK_QUESTION]
184 tutorials = [link for link in links if link.link_type is LINK_TUTORIAL]179 tutorials = [link for link in links if link.link_type is LINK_TUTORIAL]
185 180
186 context = {181 context = {
187 'sidenav': topic_name,182 'sidenav': topic_name,
188 'topic': namespace.platform_section.topic_version.topic,183 'topic': namespace.platform_section.topic_version.topic,
@@ -193,21 +188,7 @@
193 }188 }
194 return render_to_response('web/namespace.html', context, RequestContext(request))189 return render_to_response('web/namespace.html', context, RequestContext(request))
195190
196class NamespaceForm(ModelForm):191
197 class Meta:
198 model = Namespace
199
200 def __init__(self, *args, **kargs):
201 if 'version' in kargs:
202 version = kargs['version']
203 del kargs['version']
204 elif hasattr(self, 'instance') and self.instance.section:
205 version = self.instance.section.topic_version
206 else:
207 version=None
208 super(NamespaceForm, self).__init__(*args, **kargs)
209 self.fields['platform_section'].queryset = Section.objects.filter(topic_version=version)
210
211def namespace_edit(request, topic_name, version_name, namespace_id=0):192def namespace_edit(request, topic_name, version_name, namespace_id=0):
212 if namespace_id:193 if namespace_id:
213 namespace = get_object_or_404(Namespace, platform_section__topic_version__slug=version_name, platform_section__topic_version__topic__slug=topic_name, id=namespace_id)194 namespace = get_object_or_404(Namespace, platform_section__topic_version__slug=version_name, platform_section__topic_version__topic__slug=topic_name, id=namespace_id)
@@ -235,14 +216,14 @@
235 'type': 'namespace',216 'type': 'namespace',
236 }217 }
237 return render_to_response('web/delete_confirm.html', context, RequestContext(request))218 return render_to_response('web/delete_confirm.html', context, RequestContext(request))
238 219
239 elif request.GET.get('action', None) == 'delete_cancel':220 elif request.GET.get('action', None) == 'delete_cancel':
240 return HttpResponseRedirect(reverse(element_view, args=[topic_name, version_name, namespace.name]))221 return HttpResponseRedirect(reverse(element_view, args=[topic_name, version_name, namespace.name]))
241 222
242 elif request.GET.get('action', None) == 'delete_confirm':223 elif request.GET.get('action', None) == 'delete_confirm':
243 namespace.delete()224 namespace.delete()
244 return HttpResponseRedirect(reverse(version_view, args=[topic_name, version_name]))225 return HttpResponseRedirect(reverse(version_view, args=[topic_name, version_name]))
245 226
246 else:227 else:
247 form = NamespaceForm(instance=namespace, version=version)228 form = NamespaceForm(instance=namespace, version=version)
248 context = {229 context = {
@@ -260,7 +241,7 @@
260 links = Link.objects.filter(rendered_element=page)241 links = Link.objects.filter(rendered_element=page)
261 questions = [link for link in links if link.link_type is LINK_QUESTION]242 questions = [link for link in links if link.link_type is LINK_QUESTION]
262 tutorials = [link for link in links if link.link_type is LINK_TUTORIAL]243 tutorials = [link for link in links if link.link_type is LINK_TUTORIAL]
263 244
264 context = {245 context = {
265 'sidenav': topic_name,246 'sidenav': topic_name,
266 'topic': page.section.topic_version.topic,247 'topic': page.section.topic_version.topic,
@@ -271,22 +252,7 @@
271 }252 }
272 return render_to_response('web/page.html', context, RequestContext(request))253 return render_to_response('web/page.html', context, RequestContext(request))
273254
274class PageForm(ModelForm):255
275 class Meta:
276 model = Page
277
278 def __init__(self, *args, **kargs):
279 if 'version' in kargs:
280 version = kargs['version']
281 del kargs['version']
282 elif hasattr(self, 'instance') and self.instance.section:
283 version = self.instance.section.topic_version
284 else:
285 version=None
286 super(PageForm, self).__init__(*args, **kargs)
287 self.fields['section'].queryset = Section.objects.filter(topic_version=version)
288 self.fields['namespace'].queryset = Namespace.objects.filter(platform_section__topic_version=version)
289
290def page_edit(request, topic_name, release_version, page_id=0):256def page_edit(request, topic_name, release_version, page_id=0):
291 if page_id:257 if page_id:
292 page = get_object_or_404(Page, section__topic_version__slug=release_version, section__topic_version__topic__slug=topic_name, id=page_id)258 page = get_object_or_404(Page, section__topic_version__slug=release_version, section__topic_version__topic__slug=topic_name, id=page_id)
@@ -315,7 +281,8 @@
315 'page': page,281 'page': page,
316 }282 }
317 return render_to_response('web/page_edit.html', context, RequestContext(request))283 return render_to_response('web/page_edit.html', context, RequestContext(request))
318 284
285
319def element_view(request, topic_name, release_version, element_fullname):286def element_view(request, topic_name, release_version, element_fullname):
320 try:287 try:
321 element = Element.objects.get(section__topic_version__slug=release_version, section__topic_version__topic__slug=topic_name, fullname=element_fullname)288 element = Element.objects.get(section__topic_version__slug=release_version, section__topic_version__topic__slug=topic_name, fullname=element_fullname)
@@ -328,7 +295,7 @@
328295
329 questions = [link for link in links if link.link_type is LINK_QUESTION]296 questions = [link for link in links if link.link_type is LINK_QUESTION]
330 tutorials = [link for link in links if link.link_type is LINK_TUTORIAL]297 tutorials = [link for link in links if link.link_type is LINK_TUTORIAL]
331 298
332 context = {299 context = {
333 'sidenav': topic_name,300 'sidenav': topic_name,
334 'topic': element.section.topic_version.topic,301 'topic': element.section.topic_version.topic,
@@ -340,22 +307,7 @@
340 }307 }
341 return render_to_response('web/element.html', context, RequestContext(request))308 return render_to_response('web/element.html', context, RequestContext(request))
342309
343class ElementForm(ModelForm):310
344 class Meta:
345 model = Element
346
347 def __init__(self, *args, **kargs):
348 if 'version' in kargs:
349 version = kargs['version']
350 del kargs['version']
351 elif hasattr(self, 'instance') and self.instance.section:
352 version = self.instance.section.topic_version
353 else:
354 version=None
355 super(ElementForm, self).__init__(*args, **kargs)
356 self.fields['section'].queryset = Section.objects.filter(topic_version=version)
357 self.fields['namespace'].queryset = Namespace.objects.filter(platform_section__topic_version=version)
358
359def element_edit(request, topic_name, release_version, element_id=0):311def element_edit(request, topic_name, release_version, element_id=0):
360 if element_id:312 if element_id:
361 element = get_object_or_404(Element, section__topic_version__slug=release_version, section__topic_version__topic__slug=topic_name, id=element_id)313 element = get_object_or_404(Element, section__topic_version__slug=release_version, section__topic_version__topic__slug=topic_name, id=element_id)
@@ -382,14 +334,14 @@
382 'element': element,334 'element': element,
383 }335 }
384 return render_to_response('web/delete_confirm.html', context, RequestContext(request))336 return render_to_response('web/delete_confirm.html', context, RequestContext(request))
385 337
386 elif request.GET.get('action', None) == 'delete_cancel':338 elif request.GET.get('action', None) == 'delete_cancel':
387 return HttpResponseRedirect(reverse(element_view, args=[topic_name, release_version, element.fullname]))339 return HttpResponseRedirect(reverse(element_view, args=[topic_name, release_version, element.fullname]))
388 340
389 elif request.GET.get('action', None) == 'delete_confirm':341 elif request.GET.get('action', None) == 'delete_confirm':
390 element.delete()342 element.delete()
391 return HttpResponseRedirect(reverse(version_view, args=[topic_name, release_version]))343 return HttpResponseRedirect(reverse(version_view, args=[topic_name, release_version]))
392 344
393 else:345 else:
394 form = ElementForm(instance=element, version=version)346 form = ElementForm(instance=element, version=version)
395 context = {347 context = {
@@ -400,12 +352,13 @@
400 'element': element,352 'element': element,
401 }353 }
402 return render_to_response('web/element_edit.html', context, RequestContext(request))354 return render_to_response('web/element_edit.html', context, RequestContext(request))
403 355
356
404def search(request, topic_name, release_version):357def search(request, topic_name, release_version):
405 version = get_object_or_404(Version, topic__slug=topic_name, slug=release_version)358 version = get_object_or_404(Version, topic__slug=topic_name, slug=release_version)
406 query = request.GET.get('query', '')359 query = request.GET.get('query', '')
407 results = Element.objects.filter(section__topic_version=version, name__icontains=query).order_by('section', 'fullname')360 results = Element.objects.filter(section__topic_version=version, name__icontains=query).order_by('section', 'fullname')
408 361
409 context = {362 context = {
410 'sidenav': topic_name,363 'sidenav': topic_name,
411 'topic': version.topic,364 'topic': version.topic,
@@ -415,15 +368,6 @@
415 }368 }
416 return render_to_response('web/search.html', context, RequestContext(request))369 return render_to_response('web/search.html', context, RequestContext(request))
417370
418class TokenForm(ModelForm):
419 class Meta:
420 model = Token
421 fields = ('user',)
422
423class UserForm(ModelForm):
424 class Meta:
425 model = User
426 fields = ('username',)
427371
428def token_edit(request, token_key=None):372def token_edit(request, token_key=None):
429 if token_key:373 if token_key:
@@ -468,4 +412,3 @@
468 'tokens': tokens,412 'tokens': tokens,
469 }413 }
470 return render_to_response('web/token_edit.html', context, RequestContext(request))414 return render_to_response('web/token_edit.html', context, RequestContext(request))
471

Subscribers

People subscribed via source and target branches