mirror of
https://git.cmoser.eu/tinytools/django-tinywiki.git
synced 2026-02-04 06:06:33 +01:00
137 lines
4.9 KiB
Python
137 lines
4.9 KiB
Python
# Generated by Django 5.2.4 on 2025-09-14 13:15
|
|
|
|
from django.db import migrations
|
|
from .. import settings
|
|
|
|
|
|
class Migration(migrations.Migration):
|
|
dependencies = [
|
|
('tinywiki', '0001_initial'),
|
|
]
|
|
|
|
@staticmethod
|
|
def init_tinywiki_user(apps, schema_editor):
|
|
from django.contrib.auth import get_user_model
|
|
get_user_model().objects.create_user(**settings.TINYWIKI_USER_CONFIG)
|
|
|
|
@staticmethod
|
|
def init_tinywiki_groups_and_permissions(apps, schema_editor):
|
|
from ..models import Page
|
|
from django.contrib.auth.models import Group, Permission
|
|
from django.contrib.contenttypes.models import ContentType
|
|
|
|
PERMISSIONS = [
|
|
'tinywiki-read-all',
|
|
'tinywiki-delete',
|
|
'tinywiki-create',
|
|
'tinywiki-create-system',
|
|
'tinywiki-edit',
|
|
'tinywiki-edit-system',
|
|
'tinywiki-edit-all',
|
|
'tinywiki-delete-all',
|
|
'tinywiki-delete-system',
|
|
]
|
|
|
|
GROUPS = [
|
|
('tinywiki-moderator', ('tinywiki-read-all',
|
|
'tinywiki-delete-all',
|
|
'tinywiki-edit-all',
|
|
'tinywiki-create')),
|
|
('tinywiki-author', ('tinywiki-create',
|
|
'tinywiki-edit',
|
|
'tinywiki-delete')),
|
|
('tinywiki-reader', ('tinywiki-read-all',)),
|
|
('tinywiki-admin', ('tinywiki-read-all',
|
|
'tinywiki-create',
|
|
'tinywiki-create-system',
|
|
'tinywiki-delete-all',
|
|
'tinywiki-delete-system',
|
|
'tinywiki-edit-all',
|
|
'tinywiki-edit-system'))
|
|
]
|
|
|
|
perm_mapping = {}
|
|
content_type = ContentType.objects.get_for_model(Page)
|
|
for perm in PERMISSIONS:
|
|
permission = Permission.objects.create(codename=perm,content_type=content_type)
|
|
perm_mapping[perm] = permission
|
|
|
|
for grp, perms in GROUPS:
|
|
group = Group.objects.create(name=grp)
|
|
for perm in perms:
|
|
group.permissions.add(perm_mapping[perm])
|
|
|
|
@staticmethod
|
|
def init_builtin_pages(apps, schema_editor):
|
|
from ..models import Page, BuiltinPages
|
|
from ..enums import WikiContentType, WikiPageStatus
|
|
from pathlib import Path
|
|
import json
|
|
|
|
page_path = Path(__file__).resolve().parent / "pages"
|
|
json_file = page_path / "pages.json"
|
|
|
|
if json_file.is_file():
|
|
with open(json_file, "rt", encoding="utf-8") as ifile:
|
|
data = json.loads(ifile.read())
|
|
|
|
version = data["version"]
|
|
app = 'tinywiki'
|
|
prefix = data['prefix']
|
|
|
|
for slug, spec in data['pages'].items():
|
|
filename = page_path / spec['file']
|
|
with open(filename, "rt", encoding="utf-8") as ifile:
|
|
content = ifile.read()
|
|
|
|
Page.objects.create(slug=slug,
|
|
title=spec['title'],
|
|
status_data=WikiPageStatus.from_string(spec['status']).value,
|
|
content_type_data=WikiContentType.from_string(spec['content_type']).value,
|
|
content=content)
|
|
|
|
BuiltinPages.objects.create(app=app, prefix=prefix, version=version)
|
|
|
|
@staticmethod
|
|
def init_builtin_images(apps, schema_edit):
|
|
from pathlib import Path
|
|
from ..models import Image, BuiltinImages
|
|
from django.core.files.images import ImageFile
|
|
import json
|
|
|
|
image_dir = Path(__file__).resolve().parent / "images"
|
|
images_json_file = image_dir / "images.json"
|
|
|
|
if not images_json_file.is_file():
|
|
return
|
|
|
|
with open(images_json_file, "rt", encoding="utf-8") as ifile:
|
|
images_data = json.loads(ifile.read())
|
|
|
|
version = images_data['version']
|
|
app = 'tinywiki'
|
|
prefix = images_data['prefix']
|
|
|
|
for slug, _spec in images_data['images'].items():
|
|
spec = dict(_spec)
|
|
image_basename = spec['image']
|
|
image_filename = image_dir / spec["image"]
|
|
spec['slug'] = slug
|
|
del spec['image']
|
|
|
|
img = Image(**spec)
|
|
with open(image_filename,"rb") as ifile:
|
|
img_file = ImageFile(ifile,image_basename)
|
|
img.image.save(image_basename,img_file)
|
|
img.save()
|
|
|
|
BuiltinImages.objects.create(app=app, prefix=prefix, version=version)
|
|
|
|
|
|
operations = [
|
|
migrations.RunPython(init_tinywiki_groups_and_permissions),
|
|
migrations.RunPython(init_tinywiki_user),
|
|
migrations.RunPython(init_builtin_images),
|
|
migrations.RunPython(init_builtin_pages),
|
|
]
|