Merge branch 'master' of github.com:beetletweezers/tweezers
commit
26bc7400f3
|
@ -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',
|
||||
]
|
||||
|
|
|
@ -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')
|
||||
|
|
|
@ -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')
|
||||
|
||||
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
{{ file.heading }}
|
||||
=======================
|
||||
|
||||
{{ file.contents }}
|
|
@ -0,0 +1,12 @@
|
|||
{{ project.name }} v{{ project.version }}
|
||||
==================================
|
||||
|
||||
{{ project.description }}
|
||||
|
||||
Contents:
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 2
|
||||
:glob:
|
||||
|
||||
*
|
Loading…
Reference in New Issue