Changeset 6 for bitstructures
- Timestamp:
- 09/17/07 18:48:54 (16 months ago)
- Location:
- bitstructures/trunk
- Files:
-
- 6 modified
-
css/bitstructures.css (modified) (2 diffs)
-
substructure/models.py (modified) (3 diffs)
-
substructure/templates/substructure/base.html (modified) (2 diffs)
-
substructure/templates/substructure/entry.html (modified) (1 diff)
-
substructure/urls.py (modified) (1 diff)
-
substructure/views.py (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
bitstructures/trunk/css/bitstructures.css
r2 r6 31 31 } 32 32 33 #about{33 .info-entry { 34 34 padding: 40px 60px 0 0; 35 35 } … … 77 77 padding: 5px; 78 78 } 79 80 #drafts ul { 81 margin-left: 0; 82 padding-left: 0; 83 list-style-type: none; 84 } 85 86 #drafts li { 87 padding-bottom: 6px; 88 } 89 90 #drafts li a { 91 text-decoration: none; 92 } -
bitstructures/trunk/substructure/models.py
r2 r6 7 7 >>> test1.id = 1 8 8 >>> test1.slug = 'testentry1' 9 >>> bool(test1.date)9 >>> test1.is_published() 10 10 False 11 >>> bool(test1.is_public)12 False11 >>> test1.is_draft() 12 True 13 13 >>> test1.get_absolute_url() 14 '/ testentry1'14 '/drafts/testentry1' 15 15 >>> test2 = Entry() 16 16 >>> test2.id = 2 17 17 >>> test2.slug = 'testentry2' 18 >>> test2.date = datetime(2001, 2, 3)19 >>> bool(test2.date)18 >>> test2.date_published = datetime(2001, 2, 3) 19 >>> test2.is_published() 20 20 True 21 >>> bool(test2.is_public)21 >>> test2.is_draft() 22 22 False 23 23 >>> test2.get_absolute_url() … … 27 27 slug = models.SlugField(unique=True, blank=False) 28 28 title = models.CharField(maxlength=200, blank=False) 29 date = models.DateTimeField(null=True, blank=True) 30 is_public = models.BooleanField() 29 date_published = models.DateTimeField(null=True, blank=True) 31 30 text = models.TextField(blank=False) 32 31 … … 34 33 return self.title 35 34 35 def is_published(self): 36 return bool(self.date_published) 37 38 def is_draft(self): 39 return not self.is_published() 40 36 41 def get_absolute_url(self): 37 if self. date:38 year = self.date .year39 month = self.date .month42 if self.is_published(): 43 year = self.date_published.year 44 month = self.date_published.month 40 45 return '/%04d/%02d/%s' % (year, month, self.slug) 41 46 else: 42 return '/ %s' % (self.slug)47 return '/drafts/%s' % (self.slug) 43 48 44 49 class Admin: 45 50 fields = ( 46 (None, {'fields': ('title', 'slug', 'date ', 'is_public')}),51 (None, {'fields': ('title', 'slug', 'date_published')}), 47 52 (None, {'fields': ('text',), 'classes': 'monospace'}) 48 53 ) 49 list_display = ('title', ' slug', 'date', 'is_public', 'get_absolute_url')50 ordering = ['-date ']54 list_display = ('title', 'get_absolute_url', 'date_published') 55 ordering = ['-date_published'] -
bitstructures/trunk/substructure/templates/substructure/base.html
r5 r6 16 16 17 17 <div id="info-block"> 18 <div id="about"> 18 19 <div class="info-entry"> 19 20 <h2>About me</h2> 20 21 <p>Simon builds and designs web apps and infrastructure. … … 23 24 <p><a href="http://del.icio.us/simonbates">del.icio.us/simonbates</a></p> 24 25 </div> 26 27 {% if drafts %} 28 <div id="drafts" class="info-entry"> 29 <h2>Drafts</h2> 30 <ul> 31 {% for entry in drafts %} 32 <li><a href="{{ entry.get_absolute_url }}">{{ entry.title|escape }}</a></li> 33 {% endfor %} 34 </ul> 35 <p><a href="/admin/substructure/entry/add/">new entry</a></p> 36 </div> 37 {% endif %} 38 25 39 </div> 26 40 -
bitstructures/trunk/substructure/templates/substructure/entry.html
r2 r6 5 5 <h2><a href="{{ entry.get_absolute_url }}">{{ entry.title|escape }}</a></h2> 6 6 7 {% if entry.date %} 8 <p>{{ entry.date|date:"F j, Y" }}</p> 7 {% if entry.date_published %} 8 <p>{{ entry.date_published|date:"F j, Y" }}</p> 9 {% endif %} 10 11 {% if user_can_change_entry %} 12 <p><a href="/admin/substructure/entry/{{ entry.id }}/">edit</a></p> 9 13 {% endif %} 10 14 -
bitstructures/trunk/substructure/urls.py
r2 r6 4 4 (r'^$', 'substructure.views.blog'), 5 5 (r'^(?P<year>\d{4})/(?P<month>\d{2})/(?P<slug>[a-z0-9-]+)$', 6 'substructure.views.dated_entry_page'), 7 (r'^(?P<slug>[a-z0-9-]+)$', 8 'substructure.views.undated_entry_page') 6 'substructure.views.entry_page'), 7 (r'^drafts/(?P<slug>[a-z0-9-]+)$', 'substructure.views.draft_page') 9 8 ) -
bitstructures/trunk/substructure/views.py
r5 r6 5 5 6 6 def blog(request): 7 entry_list = Entry.objects.filter(date__isnull=False, is_public=True).order_by('-date') 8 return render_to_response('substructure/blog.html', 9 { 'MEDIA_URL': settings.MEDIA_URL, 10 'entry_list': entry_list }) 7 data = get_context_data(request) 8 data['entry_list'] = Entry.objects.filter(date_published__isnull=False).order_by('-date_published') 9 return render_to_response('substructure/blog.html', data) 11 10 12 def dated_entry_page(request, year, month, slug):11 def entry_page(request, year, month, slug): 13 12 entry = get_object_or_404(Entry, slug=slug) 14 if not entry.is_publi c:13 if not entry.is_published(): 15 14 raise Http404 16 if not entry.date:15 if int(year) != entry.date_published.year: 17 16 raise Http404 18 if int( year) != entry.date.year:17 if int(month) != entry.date_published.month: 19 18 raise Http404 20 if int(month) != entry.date.month: 19 data = get_context_data(request) 20 data['entry'] = entry 21 return render_to_response('substructure/entry_page.html', data) 22 23 def draft_page(request, slug): 24 if not user_can_change_entry(request): 21 25 raise Http404 22 return render_to_response('substructure/entry_page.html', 23 { 'MEDIA_URL': settings.MEDIA_URL, 24 'entry': entry }) 26 entry = get_object_or_404(Entry, slug=slug) 27 if not entry.is_draft(): 28 raise Http404 29 data = get_context_data(request) 30 data['entry'] = entry 31 return render_to_response('substructure/entry_page.html', data) 25 32 26 def undated_entry_page(request, slug): 27 entry = get_object_or_404(Entry, slug=slug) 28 if not entry.is_public: 29 raise Http404 30 if entry.date: 31 raise Http404 32 return render_to_response('substructure/entry_page.html', 33 { 'MEDIA_URL': settings.MEDIA_URL, 34 'entry': entry }) 33 def get_context_data(request): 34 data = { 'MEDIA_URL': settings.MEDIA_URL } 35 if user_can_change_entry(request): 36 data['user_can_change_entry'] = True 37 data['drafts'] = get_drafts() 38 return data 39 40 def user_can_change_entry(request): 41 return request.user.has_perm('change_entry') 42 43 def get_drafts(): 44 return Entry.objects.filter(date_published__isnull=True).order_by('title')
