include public and featured texts in sitemap and include on-js view for texts

This commit is contained in:
j 2014-01-16 11:01:31 +00:00
commit 7b32cfbf5b
5 changed files with 93 additions and 3 deletions

View file

@ -53,12 +53,19 @@ class Text(models.Model):
def __unicode__(self):
return self.get_id()
@classmethod
def get(cls, id):
id = id.split(':')
username = id[0]
name = ":".join(id[1:])
return cls.objects.get(user__username=username, name=name)
def get_absolute_url(self):
return '/texts/%s' % quote(self.get_id())
return '/texts/%s' % quote(self.get_id().replace('_', '\t').replace(' ', '_')).replace('/', '%2F')
def get_absolute_pdf_url(self):
return '/texts/%s/text.pdf' % quote(self.get_id())
return '%s/text.pdf' % self.get_absolute_url()
def get_id(self):
return u'%s:%s' % (self.user.username, self.name)

View file

@ -4,6 +4,7 @@ from __future__ import division
import os
import re
import ox
from ox.utils import json
from ox.django.api import actions
from ox.django.decorators import login_required_json
@ -434,3 +435,29 @@ def upload(request):
response = json_response(status=404, text='permission denied')
response = json_response(status=400, text='this request requires POST')
return render_to_json_response(response)
def text(request, id):
id = id.replace('_', ' ').replace('\t', '_')
try:
text = models.Text.get(id)
if not text.accessible(request.user):
raise
template = 'text.html'
context = RequestContext(request, {
'base_url': request.build_absolute_uri('/'),
'description': ox.strip_tags(text.description),
'icon': request.build_absolute_uri('/text/%s/icon256.jpg' % text.get_id()),
'settings': settings,
'text': text,
'title': ox.strip_tags(text.name),
'url': request.build_absolute_uri(text.get_absolute_url()),
})
except models.Text.DoesNotExist:
template = 'index.html'
context = RequestContext(request, {
'base_url': request.build_absolute_uri('/'),
'settings': settings,
'title': settings.SITENAME
})
return render_to_response(template, context)