Skip to content

Commit c434b53

Browse files
authored
Merge pull request #539 from bruecksen/498-imp-making-add-a-new-client-an-ease
Improve creation of a new client
2 parents e545ca3 + c16b2fa commit c434b53

File tree

4 files changed

+91
-3
lines changed

4 files changed

+91
-3
lines changed

README.md

+1
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ It is important to set the proper --schema parameter to load the data into the r
3737

3838
python manage.py tenant_command loaddata --schema=localhost bakeup/shop/fixtures/demo_point_of_sale.json
3939
python manage.py tenant_command loaddata --schema=localhost bakeup/users/fixtures/demo_users.json
40+
python manage.py tenant_command loaddata --schema=localhost bakeup/users/fixtures/groups.json
4041
python manage.py tenant_command loaddata --schema=localhost bakeup/workshop/fixtures/demo_categories.json
4142
python manage.py tenant_command loaddata --schema=localhost bakeup/workshop/fixtures/demo_products.json
4243

bakeup/pages/management/commands/create_initial_wagtail_pages.py bakeup/pages/management/commands/setup_tenant.py

+82-3
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
1+
import getpass
12
from pathlib import Path
23

4+
from django.conf import settings
5+
from django.contrib.auth.models import Group
36
from django.contrib.contenttypes.models import ContentType
47
from django.core.files import File
58
from django.core.management.base import BaseCommand
@@ -9,14 +12,20 @@
912
from wagtail.models import Page, Site
1013
from wagtailmenus.conf import settings as wagtailmenu_settings
1114

15+
from bakeup.core.models import RegistrationFieldOption
16+
from bakeup.newsletter.models import Audience
1217
from bakeup.pages.models import ContentPage, ShopPage
18+
from bakeup.users.models import User
1319

1420
APP_DIR = Path(__file__).resolve().parent.parent.parent
1521
FIXTURES_DIR = APP_DIR.joinpath("fixtures")
1622

1723

1824
class Command(InteractiveTenantOption, BaseCommand):
19-
help = "Creates initial pages for the wagtail site"
25+
help = (
26+
"Setup default data for tenant. Includes creating pages and menus, adding a"
27+
" user and default settings."
28+
)
2029

2130
def _boolean_input(self, question, default=None):
2231
self.stdout.write(f"{question} ", ending="")
@@ -245,7 +254,77 @@ def handle(self, *args, **options):
245254
# finally, create the menus
246255
self._create_main_menu()
247256
self._create_flat_menus()
257+
self.stdout.write(
258+
self.style.SUCCESS("All pages created for tenant {}".format(tenant))
259+
)
260+
do_account = self._boolean_input(
261+
"Would you like to create an baker account? [y/N]",
262+
default=True,
263+
)
264+
if do_account:
265+
# create a user
266+
username = input("Username: ")
267+
password = getpass.getpass()
268+
email = input("Email: ")
269+
first_name = input("First name: ")
270+
last_name = input("Last name: ")
271+
user = User.objects.create_user(
272+
username=username,
273+
email=email,
274+
first_name=first_name,
275+
last_name=last_name,
276+
password=password,
277+
is_staff=True,
278+
is_active=True,
279+
)
280+
self.stdout.write(
281+
self.style.SUCCESS(
282+
"Account {} created for tenant {}".format(user, tenant)
283+
)
284+
)
285+
# Add user to Wagtail groups
286+
editors_group = Group.objects.filter(name="Editors").first()
287+
moderators_group = Group.objects.filter(name="Moderators").first()
248288

249-
self.stdout.write(
250-
self.style.SUCCESS("All pages created for tenant {}".format(tenant))
289+
if editors_group:
290+
user.groups.add(editors_group)
291+
self.stdout.write(self.style.SUCCESS("Added user to 'Editors' group."))
292+
else:
293+
self.stderr.write(
294+
"Editors group not found. Please ensure Wagtail is set up."
295+
)
296+
297+
if moderators_group:
298+
user.groups.add(moderators_group)
299+
self.stdout.write(
300+
self.style.SUCCESS("Added user to 'Moderators' group.")
301+
)
302+
else:
303+
self.stderr.write(
304+
"Moderators group not found. Please ensure Wagtail is set up."
305+
)
306+
do_settings = self._boolean_input(
307+
"Would you really like to create default settings? [y/N]",
308+
default=True,
251309
)
310+
if do_settings:
311+
tenant_settings = tenant.clientsetting
312+
tenant_settings.default_from_email = settings.TENANT_DEFAULT_EMAIL
313+
tenant_settings.email_host = settings.TENANT_DEFAULT_EMAIL_HOST
314+
tenant_settings.email_host_password = settings.TENANT_DEFAULT_EMAIL_PASSWORD
315+
tenant_settings.email_host_user = settings.TENANT_DEFAULT_EMAIL_USER
316+
tenant_settings.email_host_port = settings.TENANT_DEFAULT_EMAIL_PORT
317+
tenant_settings.email_use_tls = settings.TENANT_DEFAULT_EMAIL_USE_TLS
318+
tenant_settings.show_full_name_delivery_bill = True
319+
tenant_settings.show_remaining_products = True
320+
tenant_settings.user_registration_fields = RegistrationFieldOption.values
321+
is_newsletter_enabled = self._boolean_input(
322+
"Enable newsletter? [y/N]", default=False
323+
)
324+
if is_newsletter_enabled:
325+
tenant_settings.is_newsletter_enabled = is_newsletter_enabled
326+
Audience.objects.create(
327+
name="Alle Kunden",
328+
is_default=True,
329+
)
330+
tenant_settings.save()

bakeup/users/fixtures/groups.json

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
[{"model": "auth.group", "pk": 1, "fields": {"name": "Moderators", "permissions": [109, 105, 106, 107, 101, 102, 103]}}, {"model": "auth.group", "pk": 2, "fields": {"name": "Editors", "permissions": [154, 155, 156, 320, 321, 322, 324, 325, 326, 344, 345, 346, 336, 337, 338, 313, 289, 309, 297, 301, 268, 269, 270, 109, 5, 6, 7, 65, 66, 67, 69, 70, 71, 105, 106, 107, 101, 102, 103, 368, 369, 370, 376, 377, 378, 166, 167, 168]}}, {"model": "wagtailcore.groupcollectionpermission", "pk": 1, "fields": {"group": 1, "collection": 1, "permission": 101}}, {"model": "wagtailcore.groupcollectionpermission", "pk": 2, "fields": {"group": 2, "collection": 1, "permission": 101}}, {"model": "wagtailcore.groupcollectionpermission", "pk": 3, "fields": {"group": 1, "collection": 1, "permission": 102}}, {"model": "wagtailcore.groupcollectionpermission", "pk": 4, "fields": {"group": 2, "collection": 1, "permission": 102}}, {"model": "wagtailcore.groupcollectionpermission", "pk": 5, "fields": {"group": 1, "collection": 1, "permission": 105}}, {"model": "wagtailcore.groupcollectionpermission", "pk": 6, "fields": {"group": 2, "collection": 1, "permission": 105}}, {"model": "wagtailcore.groupcollectionpermission", "pk": 7, "fields": {"group": 1, "collection": 1, "permission": 106}}, {"model": "wagtailcore.groupcollectionpermission", "pk": 8, "fields": {"group": 2, "collection": 1, "permission": 106}}, {"model": "wagtailcore.groupcollectionpermission", "pk": 9, "fields": {"group": 2, "collection": 1, "permission": 108}}, {"model": "wagtailcore.groupcollectionpermission", "pk": 10, "fields": {"group": 2, "collection": 1, "permission": 104}}, {"model": "wagtailcore.grouppagepermission", "pk": 1, "fields": {"group": 1, "page": 1, "permission": 33}}, {"model": "wagtailcore.grouppagepermission", "pk": 2, "fields": {"group": 1, "page": 1, "permission": 34}}, {"model": "wagtailcore.grouppagepermission", "pk": 3, "fields": {"group": 1, "page": 1, "permission": 39}}, {"model": "wagtailcore.grouppagepermission", "pk": 4, "fields": {"group": 2, "page": 1, "permission": 33}}, {"model": "wagtailcore.grouppagepermission", "pk": 5, "fields": {"group": 2, "page": 1, "permission": 34}}, {"model": "wagtailcore.grouppagepermission", "pk": 6, "fields": {"group": 1, "page": 1, "permission": 38}}, {"model": "wagtailcore.grouppagepermission", "pk": 7, "fields": {"group": 1, "page": 1, "permission": 40}}, {"model": "wagtailcore.grouppagepermission", "pk": 8, "fields": {"group": 2, "page": 1, "permission": 39}}, {"model": "wagtailcore.grouppagepermission", "pk": 9, "fields": {"group": 2, "page": 1, "permission": 40}}, {"model": "wagtailcore.grouppagepermission", "pk": 10, "fields": {"group": 2, "page": 1, "permission": 37}}, {"model": "wagtailcore.grouppagepermission", "pk": 11, "fields": {"group": 2, "page": 1, "permission": 38}}]

config/settings/base.py

+7
Original file line numberDiff line numberDiff line change
@@ -526,3 +526,10 @@
526526
NEWSLETTER_SUBSCRIBE_FORM_MSG_FAILURE = (
527527
"Es ist ein Fehler aufgetreten. Bitte versuche es erneut."
528528
)
529+
530+
TENANT_DEFAULT_EMAIL = "[email protected]"
531+
TENANT_DEFAULT_EMAIL_HOST = "v027131.kasserver.com"
532+
TENANT_DEFAULT_EMAIL_PASSWORD = env("TENANT_DEFAULT_EMAIL_PASSWORD", default="")
533+
TENANT_DEFAULT_EMAIL_USER = env("TENANT_DEFAULT_EMAIL_USER", default="")
534+
TENANT_DEFAULT_EMAIL_PORT = env("TENANT_DEFAULT_EMAIL_PORT", default="587")
535+
TENANT_DEFAULT_EMAIL_USE_TLS = env("TENANT_DEFAULT_EMAIL_USE_TLS", default=True)

0 commit comments

Comments
 (0)