def rst_reader(): "Finds rst posts, parses them and loads into the db." for post in find_files(get_blog_dir(), ['.rst']): print('Processing {0}'.format(post)) with open(post) as p: parsed = parse_rst(p.read()) generic_metadata, title, content = parsed.next() # got those, now go over the languages for metadata, title, content in parsed: lang = metadata['lang'] tags = [] for meta_tag in metadata['tags']: try: name, slug = meta_tag.split('|') except ValueError: name, slug = meta_tag, slugify(meta_tag) i18n_slug = '{0}-{1}'.format(lang, slug) tag, created = I18NTag.objects.get_or_create( slug=i18n_slug, language=lang, defaults={ 'name': name, 'slug_no_locale': slug }) if not created: tag.name = name tag.slug_no_locale = slug tag.save() tags.append(tag) defaults = dict(title=title, is_published=not generic_metadata['draft'], content=content, pubdate=generic_metadata['datetime'], excerpt=metadata.get('excerpt'), image=generic_metadata.get('image')) post, created = Post.objects.get_or_create( slug=generic_metadata['slug'], language=lang, defaults=defaults) if not created: for field, val in defaults.iteritems(): setattr(post, field, val) post.save() post.tags.set(*tags)
def rst_reader(): "Finds rst posts, parses them and loads into the db." for post in find_files(get_blog_dir(), [".rst"]): print("Processing {0}".format(post)) with open(post) as p: parsed = parse_rst(p.read()) generic_metadata, title, content = parsed.next() # got those, now go over the languages for metadata, title, content in parsed: lang = metadata["lang"] tags = [] for meta_tag in metadata["tags"]: try: name, slug = meta_tag.split("|") except ValueError: name, slug = meta_tag, slugify(meta_tag) i18n_slug = "{0}-{1}".format(lang, slug) tag, created = I18NTag.objects.get_or_create( slug=i18n_slug, language=lang, defaults={"name": name, "slug_no_locale": slug} ) if not created: tag.name = name tag.slug_no_locale = slug tag.save() tags.append(tag) defaults = dict( title=title, is_published=not generic_metadata["draft"], content=content, pubdate=generic_metadata["datetime"], excerpt=metadata.get("excerpt"), image=generic_metadata.get("image"), ) post, created = Post.objects.get_or_create( slug=generic_metadata["slug"], language=lang, defaults=defaults ) if not created: for field, val in defaults.iteritems(): setattr(post, field, val) post.save() post.tags.set(*tags)
def html_reader(): "Finds django html pages, parses them and loads into the db." for page in find_files(get_pages_dir(), ['.html']): print('Processing {0}'.format(page)) slug, ext = os.path.splitext(os.path.basename(page)) with open(page) as p: template_content = p.read() # we create one for each language. Less efficient, but will work we # i18n_permalink without further hacking # # Each template will be renderd for each language, so make sure to # have language logic in the template for lang_code, lang_name in settings.LANGUAGES: defaults = dict(content=template_content, page_type='html') update_post(slug, lang_code, defaults)