|
86 | 86 | class BaseExport(BrowserView): |
87 | 87 | """Just DRY""" |
88 | 88 |
|
| 89 | + show_root_export_option = False |
| 90 | + |
89 | 91 | def download(self, data): |
90 | 92 | filename = self.request.form.get("filename") |
91 | 93 | if not filename: |
@@ -427,24 +429,27 @@ def all_translations(self): # noqa: C901 |
427 | 429 | class ExportLocalRoles(BaseExport): |
428 | 430 | """Export all local roles""" |
429 | 431 |
|
430 | | - def __call__(self, download_to_server=False): |
| 432 | + show_root_export_option = True |
| 433 | + |
| 434 | + def __call__(self, download_to_server=False, exclude_root_settings=False): |
431 | 435 | self.title = _(u"Export local roles") |
432 | 436 | self.download_to_server = download_to_server |
433 | 437 | if not self.request.form.get("form.submitted", False): |
434 | 438 | return self.index() |
435 | 439 |
|
436 | 440 | logger.info(u"Exporting local roles...") |
437 | | - data = self.all_localroles() |
| 441 | + data = self.all_localroles(exclude_root_settings) |
438 | 442 | logger.info(u"Exported local roles for %s items", len(data)) |
439 | 443 | self.download(data) |
440 | 444 |
|
441 | | - def all_localroles(self): |
| 445 | + def all_localroles(self, exclude_root_settings=False): |
442 | 446 | self.results = [] |
443 | 447 |
|
444 | 448 | portal = api.portal.get() |
445 | 449 | portal.ZopeFindAndApply(portal, search_sub=True, apply_func=self.get_localroles) |
446 | 450 |
|
447 | | - self.get_root_localroles() |
| 451 | + if not exclude_root_settings: |
| 452 | + self.get_root_localroles() |
448 | 453 |
|
449 | 454 | return self.results |
450 | 455 |
|
@@ -520,18 +525,20 @@ def get_position_in_parent(obj, path): |
520 | 525 | class ExportDefaultPages(BaseExport): |
521 | 526 | """Export all default_page settings.""" |
522 | 527 |
|
523 | | - def __call__(self, download_to_server=False): |
| 528 | + show_root_export_option = True |
| 529 | + |
| 530 | + def __call__(self, download_to_server=False, exclude_root_settings=False): |
524 | 531 | self.title = _(u"Export default pages") |
525 | 532 | self.download_to_server = download_to_server |
526 | 533 | if not self.request.form.get("form.submitted", False): |
527 | 534 | return self.index() |
528 | 535 |
|
529 | 536 | logger.info(u"Exporting default pages...") |
530 | | - data = self.all_default_pages() |
| 537 | + data = self.all_default_pages(exclude_root_settings) |
531 | 538 | logger.info(u"Exported %s default pages", len(data)) |
532 | 539 | self.download(data) |
533 | 540 |
|
534 | | - def all_default_pages(self): |
| 541 | + def all_default_pages(self, exclude_root_settings=False): |
535 | 542 | results = [] |
536 | 543 | catalog = api.portal.get_tool("portal_catalog") |
537 | 544 | for brain in catalog.unrestrictedSearchResults( |
@@ -563,14 +570,15 @@ def all_default_pages(self): |
563 | 570 | results.append(data) |
564 | 571 |
|
565 | 572 | # handle portal |
566 | | - portal = api.portal.get() |
567 | | - try: |
568 | | - data = self.get_default_page_info(portal) |
569 | | - if data: |
570 | | - data["uuid"] = config.SITE_ROOT |
571 | | - results.append(data) |
572 | | - except Exception: |
573 | | - logger.info(u"Error exporting default_page for portal", exc_info=True) |
| 573 | + if not exclude_root_settings: |
| 574 | + portal = api.portal.get() |
| 575 | + try: |
| 576 | + data = self.get_default_page_info(portal) |
| 577 | + if data: |
| 578 | + data["uuid"] = config.SITE_ROOT |
| 579 | + results.append(data) |
| 580 | + except Exception: |
| 581 | + logger.info(u"Error exporting default_page for portal", exc_info=True) |
574 | 582 |
|
575 | 583 | return results |
576 | 584 |
|
@@ -642,24 +650,30 @@ def all_discussions(self): |
642 | 650 |
|
643 | 651 |
|
644 | 652 | class ExportPortlets(BaseExport): |
645 | | - def __call__(self, download_to_server=False): |
| 653 | + |
| 654 | + show_root_export_option = True |
| 655 | + |
| 656 | + def __call__(self, download_to_server=False, exclude_root_settings=False): |
646 | 657 | self.title = _(u"Export portlets") |
647 | 658 | self.download_to_server = download_to_server |
648 | 659 | if not self.request.form.get("form.submitted", False): |
649 | 660 | return self.index() |
650 | 661 |
|
651 | 662 | logger.info(u"Exporting portlets...") |
652 | | - data = self.all_portlets() |
| 663 | + data = self.all_portlets(exclude_root_settings) |
653 | 664 | logger.info(u"Exported info for %s items with portlets", len(data)) |
654 | 665 | self.download(data) |
655 | 666 |
|
656 | | - def all_portlets(self): |
| 667 | + def all_portlets(self, exclude_root_settings=False): |
657 | 668 | self.results = [] |
658 | 669 | portal = api.portal.get() |
659 | 670 | portal.ZopeFindAndApply( |
660 | 671 | self.context, search_sub=True, apply_func=self.get_portlets |
661 | 672 | ) |
662 | | - self.get_root_portlets() |
| 673 | + |
| 674 | + if not exclude_root_settings: |
| 675 | + self.get_root_portlets() |
| 676 | + |
663 | 677 | return self.results |
664 | 678 |
|
665 | 679 | def get_portlets(self, obj, path): |
|
0 commit comments