Skip to content

feat: Add management command to load demo content #74

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 2 commits into
base: main
Choose a base branch
from

Conversation

mrbazzan
Copy link
Collaborator

@mrbazzan mrbazzan commented Aug 8, 2025

This pull request address issue #73 .
It adds a management command to load data exported using djangocms-transfer.

It works by running docker compose --rm web python manage.py democontent demo-content/help.json.
I would like to remove the FILE positional argument from the command so it becomes
docker compose --rm web python manage.py democontent but we would need to finalise the content that
would be in the remote URI (which we would then use internally).

@mrbazzan mrbazzan requested a review from fsbraun August 8, 2025 20:37
Copy link
Member

@fsbraun fsbraun left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi @mrbazzan ! I will give it a test run in the coming days. A few thoughts:

  • Is it possible to rename the folder to "democontent" to be consistent with the command?
  • Can the command list the options (i.e. files in the democontent folder) if you do not specify any?
  • If only a file name and no path is specified, can the command automatically read from the democontent folder?
  • Another option would be to call the new page "help-2" if "help" already existed.

#TODO: delete possible after whole operation?
username = "demo"
password = "demo"
user = User.objects.create_user(username=username, password=password)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This will not suffice. The user will need to be a staff user.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Okay. It creates the page as a normal user.
Could you please explain why it should be a staff user?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this in order to use the same user to access the admin?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If you only need the user to create the page, you can give it an invalid password, which you do. So that's all right! Maybe just a get_or_create?

@mrbazzan
Copy link
Collaborator Author

  • Another option would be to call the new page "help-2" if "help" already existed.

Hi @fsbraun, won't that cluster the page tree?
If there is help-2, we create help-3 and it continues like that.
Shouldn't the user be explicit about the page they want created?

@fsbraun
Copy link
Member

fsbraun commented Aug 12, 2025

  • Another option would be to call the new page "help-2" if "help" already existed.

Hi @fsbraun, won't that cluster the page tree? If there is help-2, we create help-3 and it continues like that. Shouldn't the user be explicit about the page they want created?

Alternatively, to avoid unintended clustering, you can add a --force option which would import (using the names as you suggested). So, without --force it would fail, and with --force you can add any page many times.

from djangocms_transfer.datastructures import ArchivedPlaceholder, ArchivedPlugin


LANGUAGE="en"
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please run the code via ruff check filename.py

LANGUAGE = "en"

return ArchivedPlugin(**data)
return data

fixture = abs_filepath.open()
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Might want to try this:

   data = f.read()
   #do something with data```

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants