adm-ntuh-net/starting_page.py
2024-12-12 10:19:16 +08:00

60 lines
No EOL
2.1 KiB
Python

from distutils.version import LooseVersion
import json
import django
from django.conf import settings
from django.contrib.auth.models import User
from django.utils.translation import ugettext_lazy as _
def create_pages():
from cms.models import Placeholder
from cms.api import create_page, add_plugin, publish_page
placeholder = {}
with open('starting_page.json') as data_file:
content = json.load(data_file)
try:
# try to get a feature template with fallback
template = settings.CMS_TEMPLATES[1][0]
if template != 'feature.html':
template = settings.CMS_TEMPLATES[0][0]
except IndexError:
template = settings.CMS_TEMPLATES[0][0]
lang = settings.LANGUAGES[0][0]
page = create_page(_('Home'), template, lang)
placeholder['main'] = page.placeholders.get(slot='content')
try:
# try to get a feature placeholder
placeholder_feature = page.placeholders.get(slot='feature')
p = add_plugin(placeholder_feature, 'TextPlugin', lang,
body=content['feature'])
except Placeholder.DoesNotExist:
# fallback, add it to the
add_plugin(placeholder['main'], 'TextPlugin', lang, body=content['feature'])
pass
# Add main content to a MultiColumnPlugin
multi_columns_plugin = add_plugin(placeholder['main'], 'MultiColumnPlugin', lang)
for column_content in content['main']:
col = add_plugin(placeholder['main'], 'ColumnPlugin', lang,
target=multi_columns_plugin, **{'width': '33%'})
add_plugin(placeholder['main'], 'TextPlugin', lang, body=column_content,
target=col)
# In order to publish the page there needs to be at least one user
if User.objects.count() > 0:
try:
publish_page(page, User.objects.all()[0], lang)
except TypeError:
# supporting old cms versions
publish_page(page, User.objects.all()[0])
if __name__ == '__main__':
if LooseVersion(django.get_version()) >= LooseVersion('1.7'):
django.setup()
create_pages()