Merge branch 'master' of github.com:beetletweezers/tweezers

rtd2
Eric Holscher 2010-08-14 14:19:07 -05:00
commit 26bc7400f3
5 changed files with 71 additions and 16 deletions

View File

@ -20,3 +20,12 @@ SAMPLE_FILES = (
('Installation', 'projects/samples/installation.rst.html'),
('Getting started', 'projects/samples/getting_started.rst.html'),
)
SCRAPE_CONF_SETTINGS = [
'copyright',
'project',
'version',
'release',
'source_suffix',
'html_theme',
]

View File

@ -81,6 +81,15 @@ class Project(models.Model):
conf_py.write(self.get_rendered_conf())
conf_py.close()
def get_rendered_index(self):
return render_to_string('projects/index.rst.html', {'project': self})
def write_index(self):
if not self.is_imported:
fh = open(os.path.join(self.conf.path, 'index.rst'), 'w')
fh.write(self.get_rendered_index())
fh.close()
@property
def is_imported(self):
return bool(self.repo)
@ -165,6 +174,14 @@ class File(models.Model):
revision = self.revisions.get(revision_number=revision_number)
revision.apply()
def get_rendered(self):
return render_to_string('projects/doc_file.rst.html', {'file': self})
def write_to_disk(self):
fh = open(os.path.join(self.project.conf.path, '%s.rst' % self.slug), 'w')
fh.write(self.get_rendered())
fh.close()
class FileRevision(models.Model):
file = models.ForeignKey(File, related_name='revisions')

View File

@ -2,6 +2,7 @@ from celery.decorators import task
from celery.task.schedules import crontab
from celery.decorators import periodic_task
from projects.constants import SCRAPE_CONF_SETTINGS
from projects.models import Project, Conf
from projects.utils import find_file, run
@ -18,6 +19,7 @@ def update_docs(pk):
project = Project.objects.get(pk=pk)
if project.is_imported:
update_imported_docs(project)
scrape_conf_file(project)
else:
updated_created_docs(project)
@ -52,26 +54,13 @@ def update_imported_docs(project):
run(command)
def update_created_docs(project):
# grab the root path for the generated docs to live at
path = self.user_doc_path
doc_root = os.path.join(path, project.slug, 'docs')
# TODO: write files
def build_docs(project):
"""
A helper function for the celery task to do the actual doc building.
"""
def scrape_conf_file(project):
conf_dir = project.find('conf.py')[0].replace('/conf.py', '')
os.chdir(conf_dir)
lines = open('conf.py').readlines()
data = {}
for line in lines:
for we_care in ['copyright', 'project', 'version', 'release',
'source_suffix', 'html_theme']:
for we_care in SCRAPE_CONF_SETTINGS:
match = ghetto_hack.search(line)
if match:
data[match.group(1).strip()] = match.group(2).strip()
@ -85,6 +74,30 @@ def build_docs(project):
project.version = data.get('version', '0.1.0')
project.save()
def update_created_docs(project):
# grab the root path for the generated docs to live at
path = self.user_doc_path
doc_root = os.path.join(path, project.slug, 'docs')
if not os.path.exists(doc_root)
os.makedirs(doc_root)
project.conf.path = doc_root
project.conf.save()
project.write_index()
# TODO: make this more flexible
for file in project.files.all():
file.write_to_disk()
def build_docs(project):
"""
A helper function for the celery task to do the actual doc building.
"""
project.write_conf()
try:
@ -94,7 +107,7 @@ def build_docs(project):
print make_dir
os.system('make html')
except IndexError:
os.chdir(conf_dir)
os.chdir(project.conf.path)
os.system('sphinx-build -b html . _build')

View File

@ -0,0 +1,4 @@
{{ file.heading }}
=======================
{{ file.contents }}

View File

@ -0,0 +1,12 @@
{{ project.name }} v{{ project.version }}
==================================
{{ project.description }}
Contents:
.. toctree::
:maxdepth: 2
:glob:
*