Changeset 55
- Timestamp:
- 03/02/08 19:47:45 (9 months ago)
- Files:
-
- trunk/blog/forms.py (modified) (2 diffs)
- trunk/blog/models.py (modified) (12 diffs)
- trunk/blog/receivers.py (modified) (3 diffs)
- trunk/blog/templates/blog/entry_detail.html (modified) (3 diffs)
- trunk/blog/templates/blog/entry_list.html (modified) (1 diff)
- trunk/blog/templatetags/blogutils.py (modified) (3 diffs)
- trunk/blog/tests.py (modified) (13 diffs)
- trunk/common/models.py (modified) (2 diffs)
- trunk/media/themes/default/css/styles.css (modified) (2 diffs)
- trunk/test_data.json (modified) (7 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/blog/forms.py
r33 r55 35 35 class Meta: 36 36 model = Comment 37 exclude = ('entry', 'is_active')37 fields = ('name', 'email', 'url', 'description') 38 38 39 39 … … 45 45 class Meta: 46 46 model = TrackBack 47 exclude = ('is_active',)47 fields = ('entry', 'blog_name', 'title', 'url', 'excerpt') 48 48 49 49 def clean(self): trunk/blog/models.py
r42 r55 7 7 from django.db.models import signals 8 8 from django.utils.translation import ugettext_lazy as _ 9 from blog.receivers import post_save_entry, post_save_comment, post_save_trackback 9 from blog.receivers import post_save_entry, post_save_comment, pre_delete_comment,\ 10 post_save_trackback, pre_delete_trackback 10 11 11 12 … … 40 41 slug = models.SlugField(_(u'slug')) 41 42 description = models.TextField(_(u'description')) 43 comments_count = models.IntegerField(_(u'comments count'), editable=False, default=0) 44 trackbacks_count = models.IntegerField(_(u'trackbacks count'), editable=False, default=0) 42 45 created_at = models.DateTimeField(_(u'created at'), editable=False, default=datetime.now) 43 46 updated_at = models.DateTimeField(_(u'updated at'), editable=False) … … 94 97 self.published_at = now 95 98 self.published_now = True 96 s uper(Entry, self).save(raw=raw)99 self.direct_save(raw=raw) 97 100 98 101 def delete(self): … … 101 104 self.save() 102 105 103 @property 104 def comments(self): 105 return self.comment_set.filter(is_active__exact=True) 106 107 @property 108 def trackbacks(self): 109 return self.trackback_set.filter(is_active__exact=True) 106 def direct_save(self, raw=False): 107 super(Entry, self).save(raw=raw) 110 108 111 109 … … 120 118 description = models.TextField(_(u'description')) 121 119 created_at = models.DateTimeField(_(u'created at'), editable=False, default=datetime.now) 122 updated_at = models.DateTimeField(_(u'updated at'), editable=False)123 is_active = models.BooleanField(_(u'is active'), default=True)124 120 125 121 class Meta: … … 130 126 class Admin: 131 127 ordering = ('-created_at',) 132 list_display = ('name', 'entry', 'email', 'url', 'created_at' , 'updated_at', 'is_active')128 list_display = ('name', 'entry', 'email', 'url', 'created_at') 133 129 fields = ( 134 130 (None, { … … 139 135 'fields': ('email', 'url'), 140 136 }), 141 ('Advanced options', {142 'classes': 'collapse',143 'fields': ('is_active',)144 })145 137 ) 146 list_filter = ('is_active',)147 138 search_fields = ('^name', 'email', 'url') 148 139 … … 152 143 def get_absolute_url(self): 153 144 return self.entry.get_absolute_url() 154 155 def save(self, raw=False):156 self.updated_at = datetime.now()157 super(Comment, self).save(raw=raw)158 159 def delete(self):160 self.is_active = False161 self.save()162 145 163 146 … … 172 155 excerpt = models.TextField(_(u'excerpt'), blank=True) 173 156 created_at = models.DateTimeField(_(u'created at'), editable=False, default=datetime.now) 174 updated_at = models.DateTimeField(_(u'updated at'), editable=False)175 is_active = models.BooleanField(_(u'is active'), default=True)176 157 177 158 class Meta: … … 184 165 class Admin: 185 166 ordering = ('-created_at',) 186 list_display = ('blog_name', 'title', 'url', 'created_at' , 'updated_at', 'is_active')167 list_display = ('blog_name', 'title', 'url', 'created_at') 187 168 list_display_links = ('url',) 188 fields = (189 (None, {190 'fields': ('entry', 'blog_name', 'title', 'url', 'excerpt'),191 }),192 ('Advanced options', {193 'classes': 'collapse',194 'fields': ('is_active',)195 })196 )197 list_filter = ('is_active',)198 169 search_fields = ('^blog_name', '^title', 'url') 199 170 … … 204 175 return self.entry.get_absolute_url() 205 176 206 def save(self, raw=False):207 self.updated_at = datetime.now()208 super(TrackBack, self).save(raw=raw)209 210 def delete(self):211 self.is_active = False212 self.save()213 214 177 215 178 class PingServer(models.Model): … … 254 217 dispatcher.connect(receiver=post_save_entry, signal=signals.post_save, sender=Entry) 255 218 dispatcher.connect(receiver=post_save_comment, signal=signals.post_save, sender=Comment) 219 dispatcher.connect(receiver=pre_delete_comment, signal=signals.pre_delete, sender=Comment) 256 220 dispatcher.connect(receiver=post_save_trackback, signal=signals.post_save, sender=TrackBack) 221 dispatcher.connect(receiver=pre_delete_trackback, signal=signals.pre_delete, sender=TrackBack) trunk/blog/receivers.py
r53 r55 152 152 blog.models.Comment post save hook. 153 153 """ 154 # increment parent comments count if created. 155 if created: 156 instance.entry.comments_count += 1 157 instance.entry.direct_save() 158 159 # nothing to do if raw save or updated. 154 160 if raw or not created: 155 161 return 162 163 # send mail to admins. 156 164 c = Context({ 157 165 'obj': instance, … … 162 170 163 171 172 def pre_delete_comment(instance): 173 """ 174 blog.models.Comment pre delete hook. 175 """ 176 entry = instance.entry 177 if entry.comments_count > 0: 178 entry.comments_count -= 1 179 entry.direct_save() 180 181 164 182 def post_save_trackback(instance, created, raw, **kwargs): 165 183 """ 166 184 blog.models.TrackBack post save hook. 167 185 """ 186 # increment parent comments count if created. 187 if created: 188 instance.entry.trackbacks_count += 1 189 instance.entry.direct_save() 190 191 # nothing to do if raw save or updated. 168 192 if raw or not created: 169 193 return 194 195 # send mail to admins. 170 196 c = Context({ 171 197 'obj': instance, … … 174 200 t = loader.get_template('blog/add_trackback_mail.txt') 175 201 mail_admins(_(u'new track back has been added.'), t.render(c)) 202 203 204 def pre_delete_trackback(instance): 205 """ 206 blog.models.Comment pre delete hook. 207 """ 208 entry = instance.entry 209 if entry.trackbacks_count > 0: 210 entry.trackbacks_count -= 1 211 entry.direct_save() trunk/blog/templates/blog/entry_detail.html
r39 r55 15 15 <dt>{% trans "Posted at" %}: </dt> 16 16 {% if obj.is_published %} 17 {% spaceless %} 17 18 <dd>{{ obj.published_at|date:"Y/m/d H:i:s" }}</dd> 19 <dd> 20 <a href="#comments">{% blocktrans count obj.comments_count as cnt %}{{ cnt }} Comment{% plural %}{{ cnt }} Comments{% endblocktrans %}</a> 21 </dd> 22 <dd> 23 <a href="#trackbacks">{% blocktrans count obj.trackbacks_count as cnt %}{{ cnt }} TrackBack{% plural %}{{ cnt }} TrackBacks{% endblocktrans %}</a> 24 </dd> 25 {% endspaceless %} 18 26 {% else %} 19 27 <dd>{% trans "not published." %}</dd> … … 38 46 39 47 <div id="trackbacks" class="content-box"> 40 <h3>{% trans "TrackBack " %}</h3>41 {% if obj.trackbacks %}42 {% for trackback in obj.trackback s%}48 <h3>{% trans "TrackBacks" %}</h3> 49 {% if obj.trackbacks_count %} 50 {% for trackback in obj.trackback_set.all %} 43 51 <div class="response"> 44 52 <h4> … … 66 74 <div id="comments" class="content-box"> 67 75 <h3>{% trans "Comments" %}</h3> 68 {% if obj.comments %}69 {% for comment in obj.comment s%}76 {% if obj.comments_count %} 77 {% for comment in obj.comment_set.all %} 70 78 <div class="response"> 71 79 {% if comment.url %} trunk/blog/templates/blog/entry_list.html
r37 r55 18 18 <dt>{% trans "Posted at" %}: </dt> 19 19 {% if obj.is_published %} 20 {% spaceless %} 20 21 <dd>{{ obj.published_at|date:"Y/m/d H:i:s" }}</dd> 22 <dd> 23 <a href="{{ obj.get_absolute_url }}#comments">{% blocktrans count obj.comments_count as cnt %}{{ cnt }} Comment{% plural %}{{ cnt }} Comments{% endblocktrans %}</a> 24 </dd> 25 <dd> 26 <a href="{{ obj.get_absolute_url }}#trackbacks">{% blocktrans count obj.trackbacks_count as cnt %}{{ cnt }} TrackBack{% plural %}{{ cnt }} TrackBacks{% endblocktrans %}</a> 27 </dd> 28 {% endspaceless %} 21 29 {% else %} 22 30 <dd>{% trans "not published." %}</dd> trunk/blog/templatetags/blogutils.py
r37 r55 60 60 def get_absolute_url(self): 61 61 kwargs = { 62 'label' : self.label.lower(),62 'label': self.label.lower(), 63 63 } 64 64 return reverse('blog_entry_tag', args=[self.label.lower()]) … … 128 128 count=count)) 129 129 return { 130 ' title' : u'Archives',131 ' id' : u'archive-list',132 ' obj_list' : obj_list,130 'id': u'archive-list', 131 'obj_list': obj_list, 132 'title': u'Archives', 133 133 } 134 134 … … 175 175 obj_list = [] 176 176 return { 177 ' title' : u'Categories',178 ' id' : u'tag-list',179 ' obj_list' : obj_list,177 'id': u'tag-list', 178 'obj_list': obj_list, 179 'title': u'Categories', 180 180 } 181 181 trunk/blog/tests.py
r35 r55 78 78 p = {} 79 79 # send request. 80 response = self.client.get(url % tag, p) 80 target = url % tag 81 response = self.client.get(target, p) 81 82 # check status code. 82 83 self.assertEqual(response.status_code, status_code) … … 164 165 """ 165 166 # target url (not published) 166 url = '/2008/0 2/07/testentry-1/'167 url = '/2008/03/02/testentry-1/' 167 168 # send request. 168 169 response = self.client.get(url) … … 178 179 u'Not found - %s' % SITE_NAME) 179 180 # target url (published) 180 url = '/2008/0 2/07/testentry-5/'181 url = '/2008/03/02/testentry-2/' 181 182 # send request. 182 183 response = self.client.get(url) … … 190 191 # check title. 191 192 self.assertEqual(html.xpath('//head/title/text()')[0], 192 u'\u30c6\u30b9\u30c8\u30a8\u30f3\u30c8\u30ea\u30fc 5- %s' % SITE_NAME)193 u'\u30c6\u30b9\u30c8\u30a8\u30f3\u30c8\u30ea\u30fc2 - %s' % SITE_NAME) 193 194 # check context. 194 195 context = response.context[0] … … 209 210 Test blog.views.entry_detail (comment) 210 211 """ 211 url = '/2008/0 2/07/testentry-5/'212 url = '/2008/03/02/testentry-2/' 212 213 templates = (u'blog/entry_detail.html', u'blog/base.html', u'base.html') 213 214 # send request. … … 220 221 # check context. 221 222 context = response.context[0] 223 # check entry 224 self.assertTrue(context.has_key('obj')) 225 obj = context['obj'] 226 self.assertEqual(obj.comments_count, 12) 222 227 # ckeck form. 223 228 self.assertTrue(context.has_key('form')) … … 292 297 # check status code. 293 298 self.assertEqual(response.status_code, 200) 299 # check context. 300 context = response.context[0] 301 # check entry 302 self.assertTrue(context.has_key('obj')) 303 obj = context['obj'] 304 self.assertEqual(obj.comments_count, 13) 294 305 295 306 … … 338 349 Test blog.views.trackback_create. 339 350 """ 340 url = '/2008/0 2/07/testentry-5/trackback/'341 location = '/2008/0 2/07/testentry-5/'351 url = '/2008/03/02/testentry-2/trackback/' 352 location = '/2008/03/02/testentry-2/' 342 353 # send request. 343 354 response = self.client.get(url) … … 358 369 # check error code. 359 370 self.assertEqual(xml.xpath('/response/error/text()')[0], '1') 371 # FIXME: 360 372 361 373 … … 364 376 Test blog.views.archive_day. 365 377 """ 366 url = '/2008/0 2/07/'378 url = '/2008/03/02/' 367 379 parameters = ( 368 380 (None, 200), … … 386 398 # check title. 387 399 self.assertEqual(html.xpath('//head/title/text()')[0], 388 u'Archive@2008/02/07- %s' % SITE_NAME)400 'Archive@2008/03/02 - %s' % SITE_NAME) 389 401 # check context 390 402 context = response.context[0] … … 409 421 Test blog.views.archive_month. 410 422 """ 411 url = '/2008/0 2/'423 url = '/2008/03/' 412 424 parameters = ( 413 425 (None, 200), … … 431 443 # check title. 432 444 self.assertEqual(html.xpath('//head/title/text()')[0], 433 u'Archive@2008/0 2- %s' % SITE_NAME)445 u'Archive@2008/03 - %s' % SITE_NAME) 434 446 # check context 435 447 context = response.context[0] trunk/common/models.py
r16 r55 30 30 31 31 class Admin: 32 list_display = ('title', 'url', 'created_at', 'updated_at', 'navigation_enabled', 'is_ active')32 list_display = ('title', 'url', 'created_at', 'updated_at', 'navigation_enabled', 'is_published', 'is_active') 33 33 fields = ( 34 34 (None, { … … 40 40 }), 41 41 ) 42 list_filter = ('navigation_enabled', 'is_ active',)42 list_filter = ('navigation_enabled', 'is_published', 'is_active',) 43 43 search_fields = ('url', 'title') 44 44 trunk/media/themes/default/css/styles.css
r41 r55 436 436 div.info 437 437 { 438 padding: . 35em;438 padding: .5em; 439 439 padding-bottom: 0; 440 440 border: 1px solid #e3e3e3; … … 446 446 { 447 447 margin: 0; 448 margin-bottom: . 35em;448 margin-bottom: .5em; 449 449 padding: 0; 450 450 } trunk/test_data.json
r20 r55 10 10 "is_superuser": 1, 11 11 "is_staff": 1, 12 "last_login": "2008-0 2-07 17:50:54",12 "last_login": "2008-03-02 19:30:04", 13 13 "groups": [], 14 14 "user_permissions": [], 15 "password": "sha1$ 3d0c7$64ef0e46406a28ff8af5be684e985a82c634fbdc",15 "password": "sha1$8de57$6e5ff2ec36b141162c67761f4489a907bf4a4139", 16 16 "email": "tester@example.com", 17 "date_joined": "2008-02-07 11:53:55" 17 "date_joined": "2008-03-02 19:08:24" 18 } 19 }, 20 { 21 "pk": 1, 22 "model": "sites.site", 23 "fields": { 24 "domain": "example.com", 25 "name": "example.com" 18 26 } 19 27 }, … … 23 31 "fields": { 24 32 "navigation_enabled": 1, 25 "title": " about",33 "title": "About", 26 34 "url": "\/about\/", 27 35 "template_name": "", 28 "created_at": "2008-0 2-07 17:51:30",29 "is_active": 1, 30 "updated_at": "2008-0 2-07 17:51:30",31 "content": " \u30c6\u30b9\u30c8\u30a2\u30d0\u30a6\u30c8\r\n\u30c6\u30b9\u30c8\u30a2\u30d0\u30a6\u30c8\r\n\u30c6\u30b9\u30c8\u30a2\u30d0\u30a6\u30c8",36 "created_at": "2008-03-02 19:30:33", 37 "is_active": 1, 38 "updated_at": "2008-03-02 19:30:33", 39 "content": "About\r\nAbout\r\nAbout", 32 40 "is_published": 1 33 41 } … … 38 46 "fields": { 39 47 "navigation_enabled": 1, 40 "title": " not published",48 "title": "Not Published", 41 49 "url": "\/notpublished\/", 42 50 "template_name": "", 43 "created_at": "2008-02-07 17:52:40", 44 "is_active": 1, 45 "updated_at": "2008-02-07 17:52:40", 46 "content": "\u898b\u305b\u306a\u3044\u30da\u30fc\u30b8\r\n\u898b\u305b\u306a\u3044\u30da\u30fc\u30b8\r\n\u898b\u305b\u306a\u3044\u30da\u30fc\u30b8\r\n\u898b\u305b\u306a\u3044\u30da\u30fc\u30b8\r\n\u898b\u305b\u306a\u3044\u30da\u30fc\u30b8\r\n", 47 "is_published": 0 51 "created_at": "2008-03-02 19:31:01", 52 "is_active": 1, 53 "updated_at": "2008-03-02 19:31:01", 54 "content": "Not Published\r\nNot Published\r\nNot Published", 55 "is_published": 0 56 } 57 }, 58 { 59 "pk": 150, 60 "model": "blog.entry", 61 "fields": { 62 "description": "\u30c6\u30b9\u30c8\u30a8\u30f3\u30c8\u30ea\u30fc150\n\u30c6\u30b9\u30c8\u30a8\u30f3\u30c8\u30ea\u30fc150\n\u30c6\u30b9\u30c8\u30a8\u30f3\u30c8\u30ea\u30fc150", 63 "title": "\u30c6\u30b9\u30c8\u30a8\u30f3\u30c8\u30ea\u30fc150", 64 "created_at": "2008-03-02 19:11:34", 65 "tags": [ 66 2, 67 4, 68 1, 69 3 70 ], 71 "is_active": 1, 72 "updated_at": "2008-03-02 19:11:34", 73 "published_at": "2008-03-02 19:11:34", 74 "trackbacks_count": 0, 75 "comments_count": 6, 76 "slug": "testentry-150", 77 "is_published": 1 78 } 79 }, 80 { 81 "pk": 146, 82 "model": "blog.entry", 83 "fields": { 84 "description": "\u30c6\u30b9\u30c8\u30a8\u30f3\u30c8\u30ea\u30fc146\n\u30c6\u30b9\u30c8\u30a8\u30f3\u30c8\u30ea\u30fc146\n\u30c6\u30b9\u30c8\u30a8\u30f3\u30c8\u30ea\u30fc146", 85 "title": "\u30c6\u30b9\u30c8\u30a8\u30f3\u30c8\u30ea\u30fc146", 86 "created_at": "2008-03-02 19:11:30", 87 "tags": [ 88 5, 89 6, 90 1 91 ], 92 "is_active": 1, 93 "updated_at": "2008-03-02 19:11:30", 94 "published_at": "2008-03-02 19:11:30", 95 "trackbacks_count": 0, 96 "comments_count": 8, 97 "slug": "testentry-146", 98 "is_published": 1 99 } 100 }, 101 { 102 "pk": 145, 103 "model": "blog.entry", 104 "fields": { 105 "description": "\u30c6\u30b9\u30c8\u30a8\u30f3\u30c8\u30ea\u30fc145\n\u30c6\u30b9\u30c8\u30a8\u30f3\u30c8\u30ea\u30fc145\n\u30c6\u30b9\u30c8\u30a8\u30f3\u30c8\u30ea\u30fc145", 106 "title": "\u30c6\u30b9\u30c8\u30a8\u30f3\u30c8\u30ea\u30fc145", 107 "created_at": "2008-03-02 19:11:29", 108 "tags": [ 109 2, 110 5, 111 4, 112 6 113 ], 114 "is_active": 1, 115 "updated_at": "2008-03-02 19:11:29", 116 "published_at": "2008-03-02 19:11:29", 117 "trackbacks_count": 0, 118 "comments_count": 10, 119 "slug": "testentry-145", 120 "is_published": 1 121 } 122 }, 123 { 124 "pk": 144, 125 "model": "blog.entry", 126 "fields": { 127 "description": "\u30c6\u30b9\u30c8\u30a8\u30f3\u30c8\u30ea\u30fc144\n\u30c6\u30b9\u30c8\u30a8\u30f3\u30c8\u30ea\u30fc144\n\u30c6\u30b9\u30c8\u30a8\u30f3\u30c8\u30ea\u30fc144", 128 "title": "\u30c6\u30b9\u30c8\u30a8\u30f3\u30c8\u30ea\u30fc144", 129 "created_at": "2008-03-02 19:11:28", 130 "tags": [ 131 2, 132 4, 133 6, 134 1 135 ], 136 "is_active": 1, 137 "updated_at": "2008-03-02 19:11:28", 138 "published_at": "2008-03-02 19:11:28", 139 "trackbacks_count": 0, 140 "comments_count": 0, 141 "slug": "testentry-144", 142 "is_published": 1 143 } 144 }, 145 { 146 "pk": 141, 147 "model": "blog.entry", 148 "fields": { 149 "description": "\u30c6\u30b9\u30c8\u30a8\u30f3\u30c8\u30ea\u30fc141\n\u30c6\u30b9\u30c8\u30a8\u30f3\u30c8\u30ea\u30fc141\n\u30c6\u30b9\u30c8\u30a8\u30f3\u30c8\u30ea\u30fc141", 150 "title": "\u30c6\u30b9\u30c8\u30a8\u30f3\u30c8\u30ea\u30fc141", 151 "created_at": "2008-03-02 19:11:25", 152 "tags": [ 153 2, 154 5, 155 4, 156 1 157 ], 158 "is_active": 1, 159 "updated_at": "2008-03-02 19:11:25", 160 "published_at": "2008-03-02 19:11:25", 161 "trackbacks_count": 0, 162 "comments_count": 4, 163 "slug": "testentry-141", 164 "is_published": 1 165 } 166 }, 167 { 168 "pk": 139, 169 "model": "blog.entry", 170 "fields": { 171 "description": "\u30c6\u30b9\u30c8\u30a8\u30f3\u30c8\u30ea\u30fc139\n\u30c6\u30b9\u30c8\u30a8\u30f3\u30c8\u30ea\u30fc139\n\u30c6\u30b9\u30c8\u30a8\u30f3\u30c8\u30ea\u30fc139", 172 "title": "\u30c6\u30b9\u30c8\u30a8\u30f3\u30c8\u30ea\u30fc139", 173 "created_at": "2008-03-02 19:11:23", 174 "tags": [ 175 2, 176 5, 177 6, 178 1, 179 3 180 ], 181 "is_active": 1, 182 "updated_at": "2008-03-02 19:11:23", 183 "published_at": "2008-03-02 19:11:23", 184 "trackbacks_count": 0, 185 "comments_count": 10, 186 "slug": "testentry-139", 187 "is_published": 1 188 } 189 }, 190 { 191 "pk": 138, 192 "model": "blog.entry", 193 "fields": { 194 "description": "\u30c6\u30b9\u30c8\u30a8\u30f3\u30c8\u30ea\u30fc138\n\u30c6\u30b9\u30c8\u30a8\u30f3\u30c8\u30ea\u30fc138\n\u30c6\u30b9\u30c8\u30a8\u30f3\u30c8\u30ea\u30fc138", 195 "title": "\u30c6\u30b9\u30c8\u30a8\u30f3\u30c8\u30ea\u30fc138", 196 "created_at": "2008-03-02 19:11:21", 197 "tags": [ 198 5, 199 4, 200 6, 201 1 202 ], 203 "is_active": 1, 204 "updated_at": "2008-03-02 19:11:22", 205 "published_at": "2008-03-02 19:11:21", 206 "trackbacks_count": 0, 207 "comments_count": 6, 208 "slug": "testentry-138", 209 "is_published": 1 210 } 211 }, 212 { 213 "pk": 137, 214 "model": "blog.entry", 215 "fields": { 216 "description": "\u30c6\u30b9\u30c8\u30a8\u30f3\u30c8\u30ea\u30fc137\n\u30c6\u30b9\u30c8\u30a8\u30f3\u30c8\u30ea\u30fc137\n\u30c6\u30b9\u30c8\u30a8\u30f3\u30c8\u30ea\u30fc137", 217 "title": "\u30c6\u30b9\u30c8\u30a8\u30f3\u30c8\u30ea\u30fc137", 218 "created_at": "2008-03-02 19:11:20", 219 "tags": [ 220 2, 221 5, 222 6, 223 1, 224 3 225 ], 226 "is_active": 1, 227 "updated_at": "2008-03-02 19:11:20", 228 "published_at": "2008-03-02 19:11:20", 229 "trackbacks_count": 0, 230 "comments_count": 2, 231 "slug": "testentry-137", 232 "is_published": 1 233 } 234 }, 235 { 236 "pk": 134, 237 "model": "blog.entry", 238 "fields": { 239 "description": "\u30c6\u30b9\u30c8\u30a8\u30f3\u30c8\u30ea\u30fc134\n\u30c6\u30b9\u30c8\u30a8\u30f3\u30c8\u30ea\u30fc134\n\u30c6\u30b9\u30c8\u30a8\u30f3\u30c8\u30ea\u30fc134", 240 "title": "\u30c6\u30b9\u30c8\u30a8\u30f3\u30c8\u30ea\u30fc134", 241 "created_at": "2008-03-02 19:11:17", 242 "tags": [ 243 2, 244 4, 245 6, 246 1 247 ], 248 "is_active": 1, 249 "updated_at": "2008-03-02 19:11:17", 250 "published_at": "2008-03-02 19:11:17", 251 "trackbacks_count": 0, 252 "comments_count": 10, 253 "slug": "testentry-134", 254 "is_published": 1 255 } 256 }, 257 { 258 "pk": 133, 259 "model": "blog.entry", 260 "fields": { 261 "description": "\u30c6\u30b9\u30c8\u30a8\u30f3\u30c8\u30ea\u30fc133\n\u30c6\u30b9\u30c8\u30a8\u30f3\u30c8\u30ea\u30fc133\n\u30c6\u30b9\u30c8\u30a8\u30f3\u30c8\u30ea\u30fc133", 262 "title": "\u30c6\u30b9\u30c8\u30a8\u30f3\u30c8\u30ea\u30fc133", 263 "created_at": "2008-03-02 19:11:16", 264 "tags": [ 265 2, 266 5, 267 1 268 ], 269 "is_active": 1, 270 "updated_at": "2008-03-02 19:11:16", 271 "published_at": "2008-03-02 19:11:16", 272 "trackbacks_count": 0, 273 "comments_count": 6, 274 "slug": "testentry-133", 275 "is_published": 1 276 } 277 }, 278 { 279 "pk": 130, 280 "model": "blog.entry", 281 "fields": { 282 "description": "\u30c6\u30b9\u30c8\u30a8\u30f3\u30c8\u30ea\u30fc130\n\u30c6\u30b9\u30c8\u30a8\u30f3\u30c8\u30ea\u30fc130\n\u30c6\u30b9\u30c8\u30a8\u30f3\u30c8\u30ea\u30fc130", 283 "title": "\u30c6\u30b9\u30c8\u30a8\u30f3\u30c8\u30ea\u30fc130", 284 "created_at": "2008-03-02 19:11:13", 285 "tags": [ 286 2, 287 5, 288 4, 289 1 290 ], 291 "is_active": 1, 292 "updated_at": "2008-03-02 19:11:13", 293 "published_at": "2008-03-02 19:11:13", 294 "trackbacks_count": 0, 295 "comments_count": 10, 296 "slug": "testentry-130", 297 "is_published": 1 298 } 299 }, 300 { 301 "pk": 125, 302 "model": "blog.entry", 303 "fields": { 304 "description": "\u30c6\u30b9\u30c8\u30a8\u30f3\u30c8\u30ea\u30fc125\n\u30c6\u30b9\u30c8\u30a8\u30f3\u30c8\u30ea\u30fc125\n\u30c6\u30b9\u30c8\u30a8\u30f3\u30c8\u30ea\u30fc125", 305 "title": "\u30c6\u30b9\u30c8\u30a8\u30f3\u30c8\u30ea\u30fc125", 306 "created_at": "2008-03-02 19:11:08", 307 "tags": [ 308 4, 309 6, 310 1, 311 3 312 ], 313 "is_active": 1, 314 "updated_at": "2008-03-02 19:11:08", 315 "published_at": "2008-03-02 19:11:08", 316 "trackbacks_count": 0, 317 "comments_count": 0, 318 "slug": "testentry-125", 319 "is_published": 1 320 } 321 }, 322 { 323 "pk": 118, 324 "model": "blog.entry", 325 "fields": { 326 "description": "\u30c6\u30b9\u30c8\u30a8\u30f3\u30c8\u30ea\u30fc118\n\u30c6\u30b9\u30c8\u30a8\u30f3\u30c8\u30ea\u30fc118\n\u30c6\u30b9\u30c8\u30a8\u30f3\u30c8\u30ea\u30fc118", 327 "title": "\u30c6\u30b9\u30c8\u30a8\u30f3\u30c8\u30ea\u30fc118", 328 "created_at": "2008-03-02 19:11:01", 329 "tags": [ 330 2, 331 6, 332 1, 333 3 334 ], 335 "is_active": 1, 336 "updated_at": "2008-03-02 19:11:01", 337 "published_at": "2008-03-02 19:11:01", 338 "trackbacks_count": 0, 339 "comments_count": 8, 340 "slug": "testentry-118", 341 "is_published": 1 342 } 343 }, 344 { 345 "pk": 116, 346 "model": "blog.entry", 347 "fields": { 348 "description": "\u30c6\u30b9\u30c8\u30a8\u30f3\u30c8\u30ea\u30fc116\n\u30c6\u30b9\u30c8\u30a8\u30f3\u30c8\u30ea\u30fc116\n\u30c6\u30b9\u30c8\u30a8\u30f3\u30c8\u30ea\u30fc116", 349 "title": "\u30c6\u30b9\u30c8\u30a8\u30f3\u30c8\u30ea\u30fc116", 350 "created_at": "2008-03-02 19:10:59", 351 "tags": [ 352 5, 353 4, 354 6, 355 1, 356 3 357 ], 358 "is_active": 1, 359 "updated_at": "2008-03-02 19:10:59", 360 "published_at": "2008-03-02 19:10:59", 361 "trackbacks_count": 0, 362 "comments_count": 0, 363 "slug": "testentry-116", 364 "is_published": 1 365 } 366 }, 367 { 368 "pk": 115, 369 "model": "blog.entry", 370 "fields": { 371 "description": "\u30c6\u30b9\u30c8\u30a8\u30f3\u30c8\u30ea\u30fc115\n\u30c6\u30b9\u30c8\u30a8\u30f3\u30c8\u30ea\u30fc115\n\u30c6\u30b9\u30c8\u30a8\u30f3\u30c8\u30ea\u30fc115", 372 "title": "\u30c6\u30b9\u30c8\u30a8\u30f3\u30c8\u30ea\u30fc115", 373 "created_at": "2008-03-02 19:10:58", 374 "tags": [ 375 2, 376 5, 377 6, 378 3 379 ], 380 "is_active": 1, 381 "updated_at": "2008-03-02 19:10:58", 382 "published_at": "2008-03-02 19:10:58", 383 "trackbacks_count": 0, 384 "comments_count": 8, 385 "slug": "testentry-115", 386 "is_published": 1 387 } 388 }, 389 { 390 "pk": 112, 391 "model": "blog.entry", 392 "fields": { 393 "description": "\u30c6\u30b9\u30c8\u30a8\u30f3\u30c8\u30ea\u30fc112\n\u30c6\u30b9\u30c8\u30a8\u30f3\u30c8\u30ea\u30fc112\n\u30c6\u30b9\u30c8\u30a8\u30f3\u30c8\u30ea\u30fc112", 394 "title": "\u30c6\u30b9\u30c8\u30a8\u30f3\u30c8\u30ea\u30fc112", 395 "created_at": "2008-03-02 19:10:55", 396 "tags": [ 397 2, 398 4, 399 6 400 ], 401 "is_active": 1, 402 "updated_at": "2008-03-02 19:10:55", 403 "published_at": "2008-03-02 19:10:55", 404 "trackbacks_count": 0, 405 "comments_count": 8, 406 "slug": "testentry-112", 407 "is_published": 1 408 } 409 }, 410 { 411 "pk": 111, 412 "model": "blog.entry", 413 "fields": { 414 "description": "\u30c6\u30b9\u30c8\u30a8\u30f3\u30c8\u30ea\u30fc111\n\u30c6\u30b9\u30c8\u30a8\u30f3\u30c8\u30ea\u30fc111\n\u30c6\u30b9\u30c8\u30a8\u30f3\u30c8\u30ea\u30fc111", 415 "title": "\u30c6\u30b9\u30c8\u30a8\u30f3\u30c8\u30ea\u30fc111", 416 "created_at": "2008-03-02 19:10:54", 417 "tags": [ 418 2, 419 5, 420 4, 421 6 422 ], 423 "is_active": 1, 424 "updated_at": "2008-03-02 19:10:54", 425 "published_at": "2008-03-02 19:10:54", 426 "trackbacks_count": 0, 427 "comments_count": 0, 428 "slug": "testentry-111", 429 "is_published": 1 430 } 431 }, 432 { 433 "pk": 108, 434 "model": "blog.entry", 435 "fields": { 436 "description": "\u30c6\u30b9\u30c8\u30a8\u30f3\u30c8\u30ea\u30fc108\n\u30c6\u30b9\u30c8\u30a8\u30f3\u30c8\u30ea\u30fc108\n\u30c6\u30b9\u30c8\u30a8\u30f3\u30c8\u30ea\u30fc108", 437 "title": "\u30c6\u30b9\u30c8\u30a8\u30f3\u30c8\u30ea\u30fc108", 438 "created_at": "2008-03-02 19:10:51", 439 "tags": [ 440 2, 441 5, 442 4, 443 6, 444 3 445 ], 446 "is_active": 1, 447 "updated_at": "2008-03-02 19:10:51", 448 "published_at": "2008-03-02 19:10:51", 449 "trackbacks_count": 0, 450 "comments_count": 4, 451 "slug": "testentry-108", 452 "is_published": 1 453 } 454 }, 455 { 456 "pk": 104, 457 "model": "blog.entry", 458 "fields": { 459 "description": "\u30c6\u30b9\u30c8\u30a8\u30f3\u30c8\u30ea\u30fc104\n\u30c6\u30b9\u30c8\u30a8\u30f3\u30c8\u30ea\u30fc104\n\u30c6\u30b9\u30c8\u30a8\u30f3\u30c8\u30ea\u30fc104", 460 "title": "\u30c6\u30b9\u30c8\u30a8\u30f3\u30c8\u30ea\u30fc104", 461 "created_at": "2008-03-02 19:10:47", 462 "tags": [ 463 2, 464 4, 465 6, 466 3 467 ], 468 "is_active": 1, 469 "updated_at": "2008-03-02 19:10:47", 470 "published_at": "2008-03-02 19:10:47", 471 "trackbacks_count": 0, 472 "comments_count": 8, 473 "slug": "testentry-104", 474 "is_published": 1 475 } 476 }, 477 { 478 "pk": 101, 479 "model": "blog.entry", 480 "fields": { 481 "description": "\u30c6\u30b9\u30c8\u30a8\u30f3\u30c8\u30ea\u30fc101\n\u30c6\u30b9\u30c8\u30a8\u30f3\u30c8\u30ea\u30fc101\n\u30c6\u30b9\u30c8\u30a8\u30f3\u30c8\u30ea\u30fc101", 482 "title": "\u30c6\u30b9\u30c8\u30a8\u30f3\u30c8\u30ea\u30fc101", 483 "created_at": "2008-03-02 19:10:44", 484 "tags": [ 485 2, 486 6, 487 3 488 ], 489 "is_active": 1, 490 "updated_at": "2008-03-02 19:10:44", 491 "published_at": "2008-03-02 19:10:44", 492 "trackbacks_count": 0, 493 "comments_count": 6, 494 "slug": "testentry-101", 495 "is_published": 1 496 } 497 }, 498 { 499 "pk": 100, 500 "model": "blog.entry", 501 "fields": { 502 "description": "\u30c6\u30b9\u30c8\u30a8\u30f3\u30c8\u30ea\u30fc100\n\u30c6\u30b9\u30c8\u30a8\u30f3\u30c8\u30ea\u30fc100\n\u30c6\u30b9\u30c8\u30a8\u30f3\u30c8\u30ea\u30fc100", 503 "title": "\u30c6\u30b9\u30c8\u30a8\u30f3\u30c8\u30ea\u30fc100", 504 "created_at": "2008-03-02 19:10:43", 505 "tags": [ 506 2, 507 4, 508 6 509 ],
