From 65265b0ace0cb1f784c76a7da0822577e2c4c64f Mon Sep 17 00:00:00 2001 From: jingrow Date: Tue, 23 Dec 2025 19:56:26 +0800 Subject: [PATCH] update frappe - jingrow --- .cspell.json | 2 +- .github/helper/install.sh | 10 +- .github/workflows/main.yaml | 26 +- .gitignore | 2 +- .mergify.yml | 2 +- README.md | 8 +- backbone/packer/cloud-init-scaleway.yml | 2 +- backbone/tests/test_hypervisor.py | 2 +- backbone/vagrant/Vagrantfile | 52 +- dashboard/package.json | 4 +- dashboard/src/assets/style.css | 2 +- .../src/components/AccessRequestDialog.vue | 4 +- .../components/AccessRequestStatusDialog.vue | 2 +- dashboard/src/components/ActionButton.vue | 2 +- dashboard/src/components/AddTagDialog.vue | 2 +- .../src/components/AddressableErrorDialog.vue | 2 +- dashboard/src/components/AppSidebar.vue | 4 +- dashboard/src/components/Autocomplete.vue | 2 +- dashboard/src/components/AvatarGroup.vue | 2 +- .../src/components/BackupFilesUploader.vue | 2 +- .../components/BuyPrepaidCreditsRazorpay.vue | 2 +- .../src/components/ChurnFeedbackDialog.vue | 2 +- .../components/CommunicationInfoDialog.vue | 2 +- .../src/components/ConfigEditorDialog.vue | 2 +- .../EnvironmentVariableEditorDialog.vue | 2 +- dashboard/src/components/FilterControl.vue | 2 +- dashboard/src/components/FoldStep.vue | 2 +- dashboard/src/components/GenericDialog.vue | 2 +- .../src/components/GenericDialogField.vue | 2 +- dashboard/src/components/GenericList.vue | 2 +- dashboard/src/components/LinkControl.vue | 2 +- .../src/components/ManageSitePlansDialog.vue | 4 +- .../src/components/MarketplaceAppListing.vue | 2 +- dashboard/src/components/NewAppDialog.vue | 2 +- dashboard/src/components/ObjectList.vue | 2 +- dashboard/src/components/ObjectListCell.vue | 2 +- .../src/components/ObjectListFilters.vue | 2 +- dashboard/src/components/SiteActionCell.vue | 2 +- dashboard/src/components/SiteActions.vue | 2 +- .../components/SiteDatabaseAccessDialog.vue | 2 +- .../components/SiteDatabaseRestoreDialog.vue | 2 +- dashboard/src/components/SiteOverview.vue | 2 +- dashboard/src/components/SiteUpdateDialog.vue | 2 +- .../src/components/StorageBreakupChart.vue | 2 +- .../src/components/SupportAccessDialog.vue | 2 +- dashboard/src/components/SwitchTeamDialog.vue | 2 +- dashboard/src/components/TabsWithRouter.vue | 2 +- .../src/components/UserWithAvatarCell.vue | 2 +- .../src/components/billing/AddCardDialog.vue | 2 +- .../components/billing/AddExchangeRate.vue | 2 +- .../billing/AddPrepaidCreditsDialog.vue | 2 +- .../src/components/billing/BillingDetails.vue | 2 +- .../billing/BillingDetailsDialog.vue | 2 +- .../src/components/billing/BillingSummary.vue | 2 +- .../components/billing/BudgetAlertDialog.vue | 2 +- .../components/billing/BuyCreditsRazorpay.vue | 2 +- .../components/billing/BuyCreditsStripe.vue | 2 +- dashboard/src/components/billing/CardForm.vue | 2 +- .../components/billing/ChangeCardDialog.vue | 2 +- .../src/components/billing/DropdownItem.vue | 2 +- .../src/components/billing/NewAddressForm.vue | 2 +- .../src/components/billing/PaymentDetails.vue | 2 +- .../components/billing/PrepaidCreditsForm.vue | 2 +- .../billing/mpesa/AddMpesaCredentials.vue | 2 +- .../billing/mpesa/BuyPrepaidCreditsMpesa.vue | 2 +- .../billing/mpesa/PartnerPaymentPayout.vue | 2 +- .../devtools/database/BinlogBrowserChart.vue | 2 +- .../BinlogBrowserIndexStatusDialog.vue | 2 +- .../database/DatabaseTableSchemaDialog.vue | 2 +- .../DatabaseTableSchemaInfoDialog.vue | 2 +- dashboard/src/components/global/Badge.vue | 2 +- dashboard/src/components/global/Card.vue | 2 +- dashboard/src/components/global/register.js | 2 +- .../src/components/group/AddAppDialog.vue | 2 +- .../src/components/group/AddRegionDialog.vue | 2 +- .../src/components/group/BenchLogsDialog.vue | 2 +- .../group/DependencyEditorDialog.vue | 4 +- .../src/components/group/PatchAppDialog.vue | 2 +- .../group/ReleaseGroupActionCell.vue | 2 +- .../components/group/ReleaseGroupActions.vue | 2 +- .../components/group/SSHCertificateDialog.vue | 2 +- .../group/UpdateReleaseGroupDialog.vue | 2 +- .../marketplace/AppListingStepsDialog.vue | 2 +- .../partners/BuyPartnerCreditsRazorpay.vue | 2 +- .../partners/BuyPartnerCreditsStripe.vue | 2 +- .../partners/ChangePartnerDialog.vue | 2 +- .../src/components/partners/CommentArea.vue | 2 +- .../components/partners/LeadActivities.vue | 4 +- .../components/partners/LeadDetailsDialog.vue | 2 +- .../components/partners/LeadDetailsForm.vue | 2 +- .../src/components/partners/LeadFollowup.vue | 2 +- .../components/partners/LinkCertificate.vue | 4 +- .../components/partners/NewCommentDialog.vue | 2 +- .../components/partners/NewPartnerLead.vue | 2 +- .../partners/PartnerApprovalRequests.vue | 8 +- .../partners/PartnerCertificateRequest.vue | 4 +- .../partners/PartnerCertificates.vue | 4 +- .../partners/PartnerCreditsForm.vue | 2 +- .../components/partners/PartnerCustomers.vue | 2 +- .../components/partners/PartnerDashboard.vue | 2 +- .../partners/PartnerLeadOverview.vue | 2 +- .../src/components/partners/PartnerLeads.vue | 2 +- .../components/partners/PartnerMembers.vue | 4 +- .../components/partners/PartnerOverview.vue | 2 +- .../src/components/partners/PartnerPayout.vue | 2 +- .../components/partners/PartnerResources.vue | 2 +- .../partners/PartnerWebsiteDetails.vue | 2 +- .../partners/UpdateEngagementStageDialog.vue | 2 +- .../partners/UpdateFollowupDialog.vue | 2 +- .../components/partners/UpdateLostDialog.vue | 2 +- .../components/partners/UpdateWonDialog.vue | 2 +- .../components/partners/WebsiteInfoDialog.vue | 2 +- .../server/AutoscaleScheduleDialog.vue | 2 +- .../src/components/server/CleanupDialog.vue | 2 +- .../server/ConfigureAutomatedScaling.vue | 4 +- .../server/DatabaseConfigurationDialog.vue | 2 +- .../server/SecondaryServerPlanDialog.vue | 2 +- .../components/server/ServerActionCell.vue | 2 +- .../src/components/server/ServerActions.vue | 2 +- .../src/components/server/ServerCharts.vue | 2 +- .../server/ServerNewSnapshotDialog.vue | 2 +- .../src/components/server/ServerOverview.vue | 4 +- .../components/server/ServerPlansDialog.vue | 2 +- .../server/ServerSnapshotDetailsDialog.vue | 2 +- .../ServerSnapshotRecoverSitesDialog.vue | 2 +- .../server/ServerSnapshotRecoveryDetails.vue | 2 +- .../server/StorageBreakdownDialog.vue | 2 +- .../components/settings/DeveloperSettings.vue | 2 +- dashboard/src/components/settings/Role.vue | 2 +- .../settings/RoleConfigureDialog.vue | 2 +- .../components/settings/RoleCreateDialog.vue | 4 +- .../src/components/settings/RoleList.vue | 2 +- .../src/components/settings/RoleMembers.vue | 2 +- .../components/settings/RolePermissions.vue | 2 +- .../src/components/settings/RoleResources.vue | 2 +- .../settings/TeamSettingsDialog.vue | 2 +- .../settings/WebhookAttemptsDialog.vue | 2 +- dashboard/src/components/settings/data.ts | 2 +- .../settings/profile/AccountPartner.vue | 2 +- .../site/ConfigureAutoUpdateDialog.vue | 2 +- .../src/components/site/InstallAppDialog.vue | 2 +- .../components/site/NewSiteAppSelector.vue | 2 +- .../src/components/site/SiteAnalytics.vue | 2 +- .../site/SiteChangeRegionDialog.vue | 2 +- .../site/SiteChangeServerDialog.vue | 2 +- dashboard/src/components/site/SiteLogs.vue | 4 +- .../components/site/SiteScheduleBackup.vue | 2 +- .../site/SiteVersionUpgradeDialog.vue | 6 +- .../components/site/UninstallAppDialog.vue | 2 +- .../site/performance/PerformanceReport.vue | 2 +- .../SiteDatabaseAddEditUserDialog.vue | 2 +- .../SiteDatabaseColumnsSelector.vue | 2 +- .../SiteDatabaseUserLogs.vue | 4 +- .../src/components/utils/CommitChooser.vue | 2 +- dashboard/src/data/notifications.js | 2 +- dashboard/src/data/plans.js | 2 +- dashboard/src/data/session.js | 2 +- dashboard/src/data/team.js | 2 +- dashboard/src/dialogs/AppVersionsDialog.vue | 2 +- dashboard/src/dialogs/ConfirmDialog.vue | 2 +- dashboard/src/dialogs/TagsDialog.vue | 2 +- dashboard/src/globals.ts | 2 +- dashboard/src/main.js | 4 +- dashboard/src/objects/bench.ts | 2 +- dashboard/src/objects/common/apps.ts | 2 +- dashboard/src/objects/group.js | 4 +- dashboard/src/objects/marketplace.js | 2 +- dashboard/src/objects/notification.js | 2 +- dashboard/src/objects/site.js | 2 +- dashboard/src/pages/Billing.vue | 2 +- dashboard/src/pages/BillingForecast.vue | 2 +- dashboard/src/pages/BillingInvoices.vue | 2 +- dashboard/src/pages/BillingMpesaInvoices.vue | 2 +- dashboard/src/pages/BillingOverview.vue | 2 +- dashboard/src/pages/BillingPaymentMethods.vue | 2 +- dashboard/src/pages/CheckoutPayment.vue | 2 +- .../src/pages/CreateSiteForMarketplaceApp.vue | 2 +- dashboard/src/pages/DeployCandidate.vue | 2 +- dashboard/src/pages/DetailPage.vue | 2 +- dashboard/src/pages/InstallApp.vue | 4 +- dashboard/src/pages/JobPage.vue | 2 +- dashboard/src/pages/ListPage.vue | 2 +- dashboard/src/pages/LogPage.vue | 2 +- dashboard/src/pages/LoginSignup.vue | 2 +- dashboard/src/pages/NewReleaseGroup.vue | 4 +- dashboard/src/pages/NewServer.vue | 4 +- dashboard/src/pages/NewSite.vue | 6 +- dashboard/src/pages/PartnerAdmin.vue | 2 +- .../src/pages/PartnerAdminCertificates.vue | 6 +- dashboard/src/pages/PartnerLeadDetails.vue | 2 +- dashboard/src/pages/PartnerNewPayout.vue | 2 +- dashboard/src/pages/Partners.vue | 2 +- dashboard/src/pages/PlayPage.vue | 2 +- .../src/pages/ReleaseGroupBenchSites.vue | 2 +- dashboard/src/pages/Settings.vue | 2 +- dashboard/src/pages/SiteLogin.vue | 2 +- dashboard/src/pages/Subscription.vue | 2 +- .../pages/devtools/database/BinlogBrowser.vue | 2 +- .../devtools/database/DatabaseAnalyzer.vue | 2 +- .../database/DatabaseSQLPlayground.vue | 2 +- .../database/extras/DateTimePicker.vue | 4 +- .../devtools/database/extras/TimePicker.vue | 2 +- .../pages/devtools/database/extras/readme.md | 2 +- .../pages/devtools/database/extras/utils.js | 2 +- .../pages/devtools/log-browser/LogBrowser.vue | 2 +- dashboard/src/pages/signup/AppSelector.vue | 2 +- dashboard/src/pages/signup/Login.vue | 2 +- dashboard/src/pages/signup/LoginToSite.vue | 2 +- .../src/pages/signup/OAuthSetupAccount.vue | 2 +- dashboard/src/pages/signup/SetupSite.vue | 2 +- dashboard/src/pages/signup/Signup.vue | 2 +- dashboard/src/router.js | 2 +- dashboard/src/socket.js | 2 +- dashboard/src/utils/agentJob.js | 2 +- dashboard/src/utils/components.jsx | 2 +- dashboard/src/utils/format.js | 2 +- dashboard/src/utils/resource.js | 2 +- dashboard/tailwind.config.js | 4 +- dashboard/tests-e2e/mocks/sites/get_list.json | 12 +- dashboard/vite.config.ts | 4 +- dashboard/yarn.lock | 8 +- debugging/mariadb.build.md | 58 +- debugging/mariadb.md | 2 +- deployment/common_site_config.json | 4 +- deployment/nginx.conf | 64 +- deployment/redis_cache.conf | 6 +- deployment/supervisor.conf | 142 +-- docs/General Guide/Console Access.MD | 24 +- docs/General Guide/Debugging Issues.MD | 2 +- docs/General Guide/DevOps Manual.MD | 10 +- .../Marketplace Review Process.MD | 2 +- docs/General Guide/Operational Manual.MD | 4 +- docs/How to ?/Add New Press Webhook.MD | 2 +- docs/How to ?/Build a Bench.MD | 2 +- docs/Internals/Billing & Subscription.MD | 40 +- docs/Introduction/Local Setup Using Cloud.MD | 34 +- guide-to-testing.md | 16 +- libs/fc_cli/fc/commands/deploy.py | 20 +- libs/fc_cli/fc/commands/sites.py | 8 +- libs/fc_cli/fc/commands/utils.py | 4 +- libs/fc_cli/pyproject.toml | 2 +- package.json | 2 +- press-semgrep-rules.yml | 22 +- press/access/__init__.py | 4 +- press/access/decorators.py | 8 +- press/access/support_access.py | 8 +- press/access/utils.py | 8 +- press/agent.py | 140 +-- press/api/__init__.py | 12 +- press/api/access.py | 20 +- press/api/account.py | 502 ++++----- press/api/analytics.py | 116 +- press/api/app.py | 6 +- press/api/bench.py | 326 +++--- press/api/billing.py | 202 ++-- press/api/callbacks.py | 28 +- press/api/central.py | 60 +- press/api/client.py | 120 +-- press/api/config.py | 4 +- press/api/cookies.py | 16 +- press/api/dashboard.py | 14 +- press/api/developer/__init__.py | 2 +- press/api/developer/marketplace.py | 44 +- press/api/developer/saas.py | 100 +- press/api/email.py | 56 +- press/api/github.py | 56 +- press/api/google.py | 54 +- press/api/log_browser.py | 14 +- press/api/marketplace.py | 374 +++---- press/api/message.py | 2 +- press/api/monitoring.py | 60 +- press/api/notifications.py | 14 +- press/api/oauth.py | 60 +- press/api/partner.py | 202 ++-- press/api/payment.py | 4 +- press/api/product_trial.py | 84 +- press/api/regional_payments/mpesa/utils.py | 110 +- press/api/saas.py | 104 +- press/api/security.py | 10 +- press/api/selfhosted.py | 30 +- press/api/server.py | 152 +-- press/api/service_health.py | 6 +- press/api/site.py | 594 +++++------ press/api/site_backup.py | 16 +- press/api/site_login.py | 88 +- press/api/spaces.py | 42 +- press/api/telegram.py | 4 +- press/api/tests/test_account.py | 14 +- press/api/tests/test_bench.py | 94 +- press/api/tests/test_billing.py | 6 +- press/api/tests/test_marketplace.py | 104 +- press/api/tests/test_server.py | 46 +- press/api/tests/test_site.py | 178 ++-- press/api/webhook.py | 22 +- press/auth.py | 74 +- press/bootstrap.py | 64 +- press/commands.py | 14 +- press/config/desktop.py | 2 +- press/config/press.py | 2 +- press/docker/Dockerfile | 60 +- press/docker/Dockerfile_Bench_5_2_1 | 44 +- press/docker/config/redis-cache.conf | 6 +- press/docker/config/redis-queue.conf | 6 +- press/docker/config/ssh/sshd_config | 10 +- press/docker/config/supervisor.conf | 198 ++-- press/docker/docker-compose.yml | 34 +- press/docker/registry.conf | 6 +- press/docker/registry.md | 2 +- press/docker/ssh_proxy/Dockerfile | 2 +- press/docker/supervisord.conf | 2 +- press/exceptions.py | 2 +- .../doctype/referral_bonus/referral_bonus.js | 2 +- .../doctype/referral_bonus/referral_bonus.py | 14 +- .../referral_bonus/test_referral_bonus.py | 2 +- press/fixtures/bench_dependency.json | 112 +- press/fixtures/press_job_type.json | 194 ++-- press/fixtures/print_format.json | 2 +- press/fixtures/site_config_key.json | 2 +- press/guards/mfa.py | 28 +- press/guards/role_guard/__init__.py | 40 +- press/guards/role_guard/action.py | 2 +- press/guards/role_guard/document.py | 14 +- press/guards/role_guard/marketplace.py | 6 +- press/guards/role_guard/server_snapshot.py | 10 +- press/guards/role_guard/site_backup.py | 10 +- press/guards/role_guard/webhook.py | 6 +- press/guards/settings.py | 4 +- press/guards/site.py | 8 +- press/guards/team_guard.py | 18 +- press/hooks.py | 18 +- .../doctype/action_step/action_step.py | 16 +- .../incident_investigator.js | 4 +- .../incident_investigator.py | 72 +- .../test_incident_investigator.py | 64 +- .../investigation_step/investigation_step.py | 4 +- .../arm_build_record/arm_build_record.js | 4 +- .../arm_build_record/arm_build_record.py | 38 +- .../arm_build_record/test_arm_build_record.py | 24 +- .../arm_docker_image/arm_docker_image.py | 4 +- .../ssh_access_audit/ssh_access_audit.js | 4 +- .../ssh_access_audit/ssh_access_audit.py | 40 +- .../ssh_access_audit/test_ssh_access_audit.py | 2 +- .../ssh_access_audit_host.py | 4 +- .../ssh_access_audit_violation.py | 4 +- .../test_virtual_disk_resize.py | 2 +- .../virtual_disk_resize.js | 4 +- .../virtual_disk_resize.py | 80 +- .../virtual_machine_migration/README.md | 2 +- .../test_virtual_machine_migration.py | 2 +- .../virtual_machine_migration.js | 4 +- .../virtual_machine_migration.py | 60 +- .../virtual_machine_migration_bind_mount.py | 4 +- .../virtual_machine_migration_mount.py | 4 +- .../virtual_machine_migration_step.py | 4 +- .../virtual_machine_migration_volume.py | 4 +- .../test_virtual_machine_replacement.py | 2 +- .../virtual_machine_replacement.js | 4 +- .../virtual_machine_replacement.py | 38 +- press/install.py | 4 +- .../app_plan_version/app_plan_version.py | 2 +- .../app_release_approval_code_comments.py | 4 +- .../app_user_review/app_user_review.js | 2 +- .../app_user_review/app_user_review.py | 8 +- .../patches/add_rating_values_to_apps.py | 8 +- .../app_user_review/test_app_user_review.py | 2 +- .../auto_release_team/auto_release_team.py | 2 +- .../developer_review_reply.js | 2 +- .../developer_review_reply.py | 2 +- .../test_developer_review_reply.py | 2 +- .../doctype/featured_app/featured_app.py | 2 +- .../marketplace_add_on/marketplace_add_on.py | 2 +- .../marketplace_app_feedback.js | 2 +- .../marketplace_app_feedback.py | 14 +- .../test_marketplace_app_feedback.py | 2 +- .../marketplace_app_payment.js | 2 +- .../marketplace_app_payment.py | 8 +- .../test_marketplace_app_payment.py | 2 +- .../marketplace_app_plan.js | 4 +- .../marketplace_app_plan.py | 14 +- .../test_marketplace_app_plan.py | 8 +- .../marketplace_app_plans.py | 2 +- .../marketplace_app_subscription.js | 4 +- .../marketplace_app_subscription.py | 52 +- .../test_marketplace_app_subscription.py | 6 +- .../marketplace_promotional_banner.js | 2 +- .../marketplace_promotional_banner.py | 2 +- .../test_marketplace_promotional_banner.py | 2 +- .../marketplace_publisher_profile.js | 2 +- .../marketplace_publisher_profile.py | 2 +- .../test_marketplace_publisher_profile.py | 2 +- .../marketplace_settings.js | 2 +- .../marketplace_settings.py | 2 +- .../test_marketplace_settings.py | 2 +- press/metrics.py | 6 +- press/overrides.py | 98 +- .../certificate_link_request.js | 2 +- .../certificate_link_request.py | 16 +- .../test_certificate_link_request.py | 2 +- .../doctype/lead_followup/lead_followup.py | 4 +- .../partner_approval_request.js | 2 +- .../partner_approval_request.json | 4 +- .../partner_approval_request.py | 36 +- .../test_partner_approval_request.py | 2 +- .../partner_certificate.js | 2 +- .../partner_certificate.py | 12 +- .../test_partner_certificate.py | 2 +- .../partner_certificate_request.js | 2 +- .../partner_certificate_request.py | 4 +- .../test_partner_certificate_request.py | 2 +- .../partner_consent/partner_consent.js | 2 +- .../partner_consent/partner_consent.py | 4 +- .../partner_consent/test_partner_consent.py | 2 +- .../doctype/partner_lead/partner_lead.js | 2 +- .../doctype/partner_lead/partner_lead.json | 4 +- .../doctype/partner_lead/partner_lead.py | 10 +- .../doctype/partner_lead/test_partner_lead.py | 2 +- .../partner_lead_origin.js | 2 +- .../partner_lead_origin.py | 4 +- .../test_partner_lead_origin.py | 2 +- .../partner_lead_type/partner_lead_type.js | 2 +- .../partner_lead_type/partner_lead_type.py | 4 +- .../test_partner_lead_type.py | 2 +- .../doctype/partner_tier/partner_tier.js | 2 +- .../doctype/partner_tier/partner_tier.py | 4 +- .../doctype/partner_tier/test_partner_tier.py | 2 +- press/partner/doctype/territory/territory.js | 2 +- press/partner/doctype/territory/territory.py | 4 +- .../doctype/territory/test_territory.py | 2 +- press/patches.txt | 18 +- .../add_domains_in_site_config_preview.py | 4 +- .../v0_0_1/add_domains_to_site_config.py | 6 +- .../add_site_index_to_site_migration.py | 2 +- .../patches/v0_0_1/add_site_to_remote_file.py | 4 +- .../add_team_name_as_default_notify_email.py | 12 +- ...eakdown_site_usage_into_multiple_fields.py | 6 +- ...erence_from_deploy_candidate_difference.py | 18 +- .../v0_0_1/create_app_source_from_app.py | 64 +- .../v0_0_1/create_backup_uploads_folder.py | 2 +- .../v0_0_1/create_balance_transactions.py | 14 +- ...create_balance_transactions_from_stripe.py | 24 +- .../v0_0_1/create_certificate_authorities.py | 8 +- .../create_child_table_records_in_teams.py | 6 +- .../patches/v0_0_1/create_default_cluster.py | 8 +- .../v0_0_1/create_invoice_for_past_ples.py | 40 +- .../create_root_domain_from_press_settings.py | 10 +- .../v0_0_1/create_site_plan_change_log.py | 6 +- .../v0_0_1/create_site_subscriptions.py | 16 +- .../v0_0_1/delete_logs_from_archived_sites.py | 2 +- .../v0_0_1/enable_partner_privileges.py | 4 +- ...ake_apps_in_public_release_group_public.py | 10 +- .../v0_0_1/make_default_site_domain.py | 8 +- ...app_releases_as_approved_and_deployable.py | 10 +- ...e_domains_from_archived_to_active_sites.py | 8 +- press/patches/v0_0_1/new_onboarding.py | 12 +- press/patches/v0_0_1/patch_invoice.py | 8 +- press/patches/v0_0_1/ple_to_usage_record.py | 4 +- ...remove_domains_linked_to_archived_sites.py | 4 +- .../v0_0_1/remove_obsolete_doctypes.py | 4 +- .../patches/v0_0_1/remove_period_from_plan.py | 2 +- press/patches/v0_0_1/rename_archived_sites.py | 6 +- .../rename_columns_in_tls_certificate.py | 4 +- ...ate_app_release_to_deploy_candidate_app.py | 4 +- .../v0_0_1/rename_frappe_app_to_app.py | 4 +- .../rename_installed_app_to_bench_app.py | 4 +- ...e_group_frappe_app_to_release_group_app.py | 4 +- press/patches/v0_0_1/rename_release_groups.py | 12 +- .../v0_0_1/rename_site_backup_fields.py | 4 +- ...rename_transaction_currency_to_currency.py | 4 +- .../rename_workers_to_background_workers.py | 4 +- .../v0_0_1/set_app_title_from_custom_field.py | 6 +- .../set_app_title_in_deploy_candidate_app.py | 4 +- .../v0_0_1/set_billing_name_for_teams.py | 12 +- .../v0_0_1/set_cluster_in_press_settings.py | 10 +- .../set_dependencies_in_release_group.py | 8 +- .../v0_0_1/set_document_type_in_plan.py | 4 +- press/patches/v0_0_1/set_domain_in_site.py | 6 +- .../set_host_name_for_sites_with_domains.py | 6 +- .../patches/v0_0_1/set_hostname_in_server.py | 10 +- ...set_marketplace_app_app_field_from_name.py | 6 +- .../set_monitoring_password_in_cluster.py | 6 +- ..._app_release_based_on_app_source_public.py | 4 +- .../set_rate_limit_config_based_on_plan.py | 4 +- .../v0_0_1/set_release_group_in_site.py | 4 +- ...oup_version_and_title_from_custom_field.py | 10 +- .../v0_0_1/set_release_in_bench_app.py | 4 +- .../v0_0_1/set_remote_file_location.py | 12 +- .../v0_0_1/set_repository_in_frappe_app.py | 6 +- .../set_team_field_for_permission_checks.py | 4 +- ...in_tls_certificate_based_on_domain_team.py | 10 +- .../v0_0_1/site_history_to_site_activity.py | 4 +- .../v0_0_1/site_usage_convert_history.py | 18 +- .../track_offsite_backups_via_remote_files.py | 18 +- .../v0_0_1/truncate_server_status_table.py | 2 +- .../v0_0_1/update_backups_availability.py | 10 +- ..._proxy_for_suspended_and_inactive_sites.py | 6 +- .../patches/v0_0_1/update_site_config_doc.py | 14 +- .../v0_0_1/use_private_ip_for_upstreams.py | 10 +- press/patches/v0_0_1/user_account_to_team.py | 22 +- ...isable_subscriptions_for_inactive_sites.py | 8 +- .../v0_0_4/remove_legacy_billing_doctypes.py | 2 +- ...d_site_backup_times_for_configured_ones.py | 8 +- ...dd_team_field_for_site_backups_archived.py | 4 +- ...dd_team_field_for_site_related_doctypes.py | 8 +- ...convert_marketplace_description_to_html.py | 6 +- .../v0_7_0/fix_team_for_tls_certificates.py | 4 +- ...ds_from_plans_to_server_and_marketplace.py | 12 +- ...db_access_users_to_site_db_perm_manager.py | 8 +- .../v0_7_0/rename_plan_to_site_plan.py | 4 +- ...ename_site_skip_scheduled_backups_field.py | 4 +- .../v0_7_0/set_hostname_abbreviation.py | 6 +- .../set_label_for_site_database_user.py | 4 +- .../v0_7_0/set_password_config_type.py | 10 +- .../update_enable_performance_tuning.py | 2 +- .../v0_8_0/clear_alertmanager_webhook_log.py | 2 +- ...tify_billing_email_of_team_to_child_doc.py | 12 +- .../reset_release_group_gunicorn_workers.py | 6 +- .../playbooks/failover_up_secondary_proxy.yml | 6 +- press/playbooks/fetch_frappe_public_key.yml | 2 +- press/playbooks/mariadb_debug_symbols.yml | 2 +- ...ide_frappe_user_du_and_find_permission.yml | 4 +- press/playbooks/roles/agent/tasks/main.yml | 38 +- .../roles/agent_rename/tasks/main.yml | 18 +- .../roles/agent_sentry/tasks/main.yml | 2 +- .../roles/agent_set_proxy_ip/tasks/main.yml | 6 +- .../roles/alertmanager/tasks/main.yml | 28 +- .../templates/alertmanager.service | 10 +- press/playbooks/roles/bench/tasks/main.yml | 4 +- .../configure_ssh_logging/tasks/main.yml | 2 +- press/playbooks/roles/convert/tasks/main.yml | 2 +- .../correct_bench_permissions/tasks/main.yml | 2 +- press/playbooks/roles/docker/tasks/main.yml | 2 +- .../roles/docker/templates/mounts.conf | 4 +- .../roles/elasticsearch/tasks/main.yml | 6 +- .../tasks/main.yml | 4 +- .../roles/filebeat/templates/filebeat.yml | 2 +- .../filebeat/templates/inputs.d/monitor.yml | 2 +- .../filebeat/templates/modules.d/proxysql.yml | 4 +- .../format_disk_and_mount/tasks/main.yml | 4 +- press/playbooks/roles/frankfurter/README.md | 4 +- .../roles/frankfurter/tasks/main.yml | 14 +- press/playbooks/roles/get_apps/tasks/main.yml | 2 +- .../playbooks/roles/get_files/tasks/main.yml | 4 +- .../playbooks/roles/get_sites/tasks/main.yml | 4 +- press/playbooks/roles/grafana/tasks/main.yml | 40 +- .../roles/grafana/templates/grafana.ini | 10 +- .../roles/grafana/templates/grafana.service | 18 +- press/playbooks/roles/keys/tasks/main.yml | 2 +- .../roles/link_benches_to_nfs/tasks/main.yml | 2 +- press/playbooks/roles/mariadb/tasks/main.yml | 6 +- .../roles/mariadb_10_6/tasks/main.yml | 2 +- .../mariadb_10_6_16_frappe/tasks/main.yml | 4 +- .../tasks/main.yml | 2 +- .../tasks/main.yml | 2 +- .../mariadb_prepare_replica/tasks/main.yml | 4 +- .../tasks/main.yml | 2 +- .../roles/mariadb_rename/tasks/main.yml | 2 +- .../roles/migrate_to_fc/tasks/main.yml | 10 +- .../roles/monitoring_password/tasks/main.yml | 4 +- press/playbooks/roles/mount/tasks/main.yml | 2 +- .../roles/mount_shared_fs/tasks/main.yml | 6 +- .../mount_shared_fs_on_volume/tasks/main.yml | 4 +- .../roles/mysqld_variable/tasks/main.yml | 8 +- .../playbooks/roles/nfs_server/tasks/main.yml | 18 +- press/playbooks/roles/nginx/tasks/main.yml | 2 +- .../playbooks/roles/plausible/tasks/main.yml | 16 +- .../roles/primary_app/tasks/main.yml | 22 +- .../roles/primary_app/templates/lsyncd.conf | 8 +- .../primary_app/templates/lsyncd.service | 6 +- .../roles/primary_proxy/tasks/main.yml | 20 +- .../roles/primary_proxy/templates/lsyncd.conf | 4 +- .../primary_proxy/templates/lsyncd.service | 6 +- .../playbooks/roles/prometheus/tasks/main.yml | 46 +- .../prometheus/templates/prometheus.service | 12 +- .../roles/prometheus/templates/prometheus.yml | 36 +- .../tasks/main.yml | 12 +- press/playbooks/roles/proxy/tasks/main.yml | 8 +- press/playbooks/roles/proxysql/tasks/main.yml | 20 +- .../roles/proxysql/templates/proxysql.cnf | 2 +- .../roles/proxysql_monitor/tasks/main.yml | 6 +- .../templates/mysqld_exporter.service | 2 +- .../reconfigure_prometheus/tasks/main.yml | 20 +- .../files/registry-docker-compose.yml.j2 | 2 +- .../roles/registry/files/registry.sh | 2 +- press/playbooks/roles/registry/tasks/main.yml | 28 +- .../files/registry-docker-compose.yml.j2 | 2 +- .../rewrite_registry_config/tasks/main.yml | 14 +- .../roles/rq_exporter/tasks/main.yml | 6 +- .../rq_exporter/templates/rq-exporter.service | 2 +- .../roles/scaleway_dedibox/tasks/main.yml | 4 +- .../roles/secondary_app/tasks/main.yml | 4 +- .../roles/secondary_proxy/tasks/main.yml | 2 +- press/playbooks/roles/sentry/tasks/main.yml | 42 +- .../roles/sentry/templates/sentry.conf.py | 6 +- .../roles/sentry_upgrade/tasks/main.yml | 44 +- .../setup_archived_folder/tasks/main.yml | 18 +- .../tasks/main.yml | 18 +- .../playbooks/roles/ssh_proxy/tasks/main.yml | 18 +- .../playbooks/roles/standalone/tasks/main.yml | 6 +- .../roles/start_benches/tasks/main.yml | 2 +- .../roles/stop_benches/tasks/main.yml | 2 +- press/playbooks/roles/tls/tasks/main.yml | 14 +- .../roles/update_agent/tasks/main.yml | 18 +- .../update_fstab_with_mounts/tasks/main.yml | 2 +- press/playbooks/roles/user/files/sudoers | 18 +- press/playbooks/roles/user/tasks/main.yml | 12 +- .../roles/user_ssh_certificate/tasks/main.yml | 4 +- press/playbooks/setup_user_lingering.yml | 4 +- press/playbooks/upgrade_mariadb_patched.yml | 2 +- press/press/audit.py | 100 +- press/press/cleanup.py | 16 +- .../account_request/account_request.js | 2 +- .../account_request/account_request.py | 66 +- ...enerate_expiration_time_for_request_key.py | 4 +- .../account_request/test_account_request.py | 20 +- .../account_request_press_role.py | 4 +- .../add_on_settings/add_on_settings.js | 4 +- .../add_on_settings/add_on_settings.py | 10 +- .../add_on_settings/test_add_on_settings.py | 2 +- .../add_on_storage_log/add_on_storage_log.js | 2 +- .../add_on_storage_log/add_on_storage_log.py | 20 +- .../test_add_on_storage_log.py | 2 +- press/press/doctype/agent_job/agent_job.js | 14 +- press/press/doctype/agent_job/agent_job.py | 204 ++-- .../doctype/agent_job/agent_job_dashboard.py | 2 +- .../agent_job/agent_job_notifications.py | 12 +- .../update_status_for_undelivered_jobs.py | 4 +- .../press/doctype/agent_job/test_agent_job.py | 38 +- .../agent_job_callback/agent_job_callback.js | 2 +- .../agent_job_callback/agent_job_callback.py | 4 +- .../test_agent_job_callback.py | 2 +- .../doctype/agent_job_step/agent_job_step.js | 2 +- .../doctype/agent_job_step/agent_job_step.py | 8 +- .../agent_job_step/test_agent_job_step.py | 2 +- .../doctype/agent_job_type/agent_job_type.js | 2 +- .../doctype/agent_job_type/agent_job_type.py | 6 +- .../agent_job_type/test_agent_job_type.py | 2 +- .../agent_job_type_step.py | 4 +- .../agent_request_failure.js | 2 +- .../agent_request_failure.py | 18 +- .../test_agent_request_failure.py | 2 +- .../doctype/agent_update/agent_update.js | 10 +- .../doctype/agent_update/agent_update.py | 86 +- .../doctype/agent_update/test_agent_update.py | 2 +- .../agent_update_server.py | 4 +- .../alertmanager_webhook_log.js | 2 +- .../alertmanager_webhook_log.py | 62 +- .../test_alertmanager_webhook_log.py | 6 +- .../alertmanager_webhook_log_reaction_job.js | 2 +- .../alertmanager_webhook_log_reaction_job.py | 4 +- ...t_alertmanager_webhook_log_reaction_job.py | 2 +- .../press/doctype/analytics_server/README.md | 12 +- .../analytics_server/analytics_server.js | 10 +- .../analytics_server/analytics_server.json | 8 +- .../analytics_server/analytics_server.py | 18 +- .../analytics_server/test_analytics_server.py | 2 +- .../ansible_console/ansible_console.js | 8 +- .../ansible_console/ansible_console.py | 24 +- .../ansible_console/test_ansible_console.py | 10 +- .../ansible_console_log.js | 4 +- .../ansible_console_log.py | 4 +- .../test_ansible_console_log.py | 2 +- .../ansible_console_output.py | 4 +- .../doctype/ansible_play/ansible_play.js | 4 +- .../doctype/ansible_play/ansible_play.py | 14 +- .../ansible_play/ansible_play_dashboard.py | 2 +- .../doctype/ansible_play/test_ansible_play.py | 6 +- .../doctype/ansible_task/ansible_task.js | 2 +- .../doctype/ansible_task/ansible_task.py | 6 +- .../doctype/ansible_task/test_ansible_task.py | 4 +- press/press/doctype/app/app.js | 2 +- press/press/doctype/app/app.json | 4 +- press/press/doctype/app/app.py | 26 +- press/press/doctype/app/test_app.py | 44 +- press/press/doctype/app_group/app_group.py | 4 +- press/press/doctype/app_patch/app_patch.js | 2 +- press/press/doctype/app_patch/app_patch.py | 28 +- .../set_archived_patch_on_archived_bench.py | 10 +- .../press/doctype/app_patch/test_app_patch.py | 2 +- .../press/doctype/app_release/app_release.js | 8 +- .../press/doctype/app_release/app_release.py | 98 +- press/press/doctype/app_release/code.md | 6 +- .../patches/set_clone_directory.py | 8 +- .../patches/set_status_to_draft.py | 4 +- .../doctype/app_release/test_app_release.py | 6 +- .../app_release_approval_request.js | 6 +- .../app_release_approval_request.py | 46 +- .../test_app_release_approval_request.py | 2 +- .../app_release_difference.js | 2 +- .../app_release_difference.py | 22 +- .../test_app_release_difference.py | 2 +- press/press/doctype/app_rename/app_rename.js | 2 +- press/press/doctype/app_rename/app_rename.py | 4 +- .../doctype/app_rename/test_app_rename.py | 2 +- press/press/doctype/app_source/app_source.js | 2 +- .../press/doctype/app_source/app_source.json | 6 +- press/press/doctype/app_source/app_source.py | 36 +- .../doctype/app_source/test_app_source.py | 12 +- .../app_source_version/app_source_version.py | 4 +- press/press/doctype/app_tag/app_tag.js | 2 +- press/press/doctype/app_tag/app_tag.py | 4 +- press/press/doctype/app_tag/test_app_tag.py | 2 +- press/press/doctype/audit_log/audit_log.js | 2 +- press/press/doctype/audit_log/audit_log.py | 6 +- .../press/doctype/audit_log/test_audit_log.py | 2 +- .../auto_scale_record/auto_scale_record.js | 4 +- .../auto_scale_record/auto_scale_record.py | 196 ++-- .../test_auto_scale_record.py | 28 +- .../auto_scale_trigger/auto_scale_trigger.py | 4 +- .../aws_savings_plan_recommendation.js | 2 +- .../aws_savings_plan_recommendation.py | 26 +- .../test_aws_savings_plan_recommendation.py | 2 +- .../doctype/backup_bucket/backup_bucket.js | 2 +- .../doctype/backup_bucket/backup_bucket.py | 4 +- .../backup_bucket/test_backup_bucket.py | 2 +- .../backup_restoration_test.js | 2 +- .../backup_restoration_test.py | 20 +- .../backup_restoration_test/backup_test.py | 26 +- .../test_backup_restoration_test.py | 2 +- .../balance_transaction.js | 2 +- .../balance_transaction.py | 20 +- .../test_balance_transaction.py | 6 +- .../balance_transaction_allocation.py | 4 +- .../doctype/bastion_server/bastion_server.js | 2 +- .../bastion_server/bastion_server.json | 4 +- .../doctype/bastion_server/bastion_server.py | 6 +- .../bastion_server/test_bastion_server.py | 2 +- press/press/doctype/bench/bench.js | 10 +- press/press/doctype/bench/bench.py | 308 +++--- press/press/doctype/bench/bench_dashboard.py | 2 +- press/press/doctype/bench/test_bench.py | 138 +-- press/press/doctype/bench_app/bench_app.js | 2 +- press/press/doctype/bench_app/bench_app.py | 16 +- .../press/doctype/bench_app/test_bench_app.py | 2 +- .../bench_dependency/bench_dependency.js | 2 +- .../bench_dependency/bench_dependency.py | 4 +- .../bench_dependency/test_bench_dependency.py | 2 +- .../bench_dependency_version.json | 4 +- .../bench_dependency_version.py | 8 +- .../bench_get_app_cache.js | 2 +- .../bench_get_app_cache.py | 6 +- .../test_bench_get_app_cache.py | 2 +- .../press/doctype/bench_mount/bench_mount.py | 4 +- .../press/doctype/bench_shell/bench_shell.js | 6 +- .../press/doctype/bench_shell/bench_shell.py | 14 +- .../doctype/bench_shell/test_bench_shell.py | 2 +- .../bench_shell_log/bench_shell_log.js | 2 +- .../bench_shell_log/bench_shell_log.py | 8 +- .../bench_shell_log/test_bench_shell_log.py | 2 +- .../bench_site_update/bench_site_update.js | 2 +- .../bench_site_update/bench_site_update.py | 4 +- .../test_bench_site_update.py | 2 +- .../doctype/bench_update/bench_update.js | 2 +- .../doctype/bench_update/bench_update.py | 60 +- .../doctype/bench_update/test_bench_update.py | 2 +- .../bench_update_app/bench_update_app.py | 4 +- .../doctype/bench_variable/bench_variable.py | 4 +- .../doctype/blocked_domain/blocked_domain.js | 2 +- .../doctype/blocked_domain/blocked_domain.py | 4 +- .../blocked_domain/test_blocked_domain.py | 2 +- .../build_cache_shell/build_cache_shell.js | 4 +- .../build_cache_shell/build_cache_shell.json | 2 +- .../build_cache_shell/build_cache_shell.py | 12 +- .../test_build_cache_shell.py | 2 +- .../doctype/build_metric/build_metric.js | 4 +- .../doctype/build_metric/build_metric.py | 38 +- .../build_metric/build_metric_types.py | 2 +- .../doctype/build_metric/test_build_metric.py | 2 +- .../certificate_authority.js | 2 +- .../certificate_authority.py | 14 +- .../test_certificate_authority.py | 2 +- .../child_team_member/child_team_member.py | 4 +- .../doctype/cloud_region/cloud_region.js | 2 +- .../doctype/cloud_region/cloud_region.py | 4 +- .../doctype/cloud_region/test_cloud_region.py | 2 +- press/press/doctype/cluster/cluster.js | 8 +- press/press/doctype/cluster/cluster.py | 104 +- .../cluster/patches/rename_aws_fields.py | 4 +- press/press/doctype/cluster/test_cluster.py | 92 +- .../doctype/cluster_plan/cluster_plan.js | 2 +- .../doctype/cluster_plan/cluster_plan.py | 8 +- .../doctype/cluster_plan/test_cluster_plan.py | 2 +- .../press/doctype/code_server/code_server.js | 2 +- .../press/doctype/code_server/code_server.py | 44 +- .../doctype/code_server/test_code_server.py | 2 +- .../common_site_config/common_site_config.py | 6 +- .../communication_info/communication_info.py | 38 +- .../cookie_preference_log.js | 2 +- .../cookie_preference_log.py | 4 +- .../test_cookie_preference_log.py | 2 +- .../currency_exchange/currency_exchange.js | 2 +- .../currency_exchange/currency_exchange.py | 4 +- .../test_currency_exchange.py | 2 +- .../dashboard_banner/dashboard_banner.js | 2 +- .../dashboard_banner/dashboard_banner.py | 4 +- .../dashboard_banner/test_dashboard_banner.py | 2 +- .../dashboard_banner_dismissal.py | 4 +- .../database_server/database_server.js | 24 +- .../database_server/database_server.json | 8 +- .../database_server/database_server.py | 344 +++--- .../database_server_dashboard.py | 2 +- .../database_server/test_database_server.py | 26 +- .../database_server_mariadb_variable.js | 2 +- .../database_server_mariadb_variable.py | 26 +- .../patches/add_unique_constraint.py | 4 +- .../test_database_server_mariadb_variable.py | 42 +- press/press/doctype/deploy/deploy.js | 2 +- press/press/doctype/deploy/deploy.py | 38 +- press/press/doctype/deploy/test_deploy.py | 2 +- .../doctype/deploy_bench/deploy_bench.js | 2 +- .../doctype/deploy_bench/deploy_bench.py | 4 +- .../doctype/deploy_bench/test_deploy_bench.py | 2 +- .../doctype/deploy_candidate/cache_utils.py | 6 +- .../deploy_candidate/deploy_candidate.js | 12 +- .../deploy_candidate/deploy_candidate.py | 70 +- .../deploy_candidate/deploy_candidate_list.js | 8 +- .../deploy_candidate/deploy_notifications.py | 38 +- .../deploy_candidate/docker_output_parsers.py | 10 +- .../deploy_candidate/test_deploy_candidate.py | 80 +- press/press/doctype/deploy_candidate/utils.py | 18 +- .../doctype/deploy_candidate/validations.py | 18 +- .../deploy_candidate_app.py | 4 +- .../patches/set_app_name_to_app.py | 4 +- .../deploy_candidate_build.js | 16 +- .../deploy_candidate_build.py | 152 +-- .../patches/migrate_to_separate_build.py | 30 +- .../test_deploy_candidate_build.py | 52 +- .../deploy_candidate_build_step.py | 10 +- .../deploy_candidate_dependency.py | 4 +- .../deploy_candidate_difference.js | 2 +- .../deploy_candidate_difference.py | 34 +- .../test_deploy_candidate_difference.py | 4 +- .../deploy_candidate_difference_app.py | 8 +- .../deploy_candidate_package.py | 4 +- .../deploy_candidate_variable.py | 4 +- .../disk_performance/disk_performance.js | 2 +- .../disk_performance/disk_performance.py | 16 +- .../disk_performance/test_disk_performance.py | 2 +- .../downtime_analysis/downtime_analysis.js | 4 +- .../downtime_analysis/downtime_analysis.py | 28 +- .../downtime_analysis/generate_metrics.py | 6 +- .../test_downtime_analysis.py | 2 +- press/press/doctype/drip_email/drip_email.js | 6 +- press/press/doctype/drip_email/drip_email.py | 76 +- .../patches/migrate_to_product_trial_field.py | 4 +- .../patches/set_correct_field_for_html.py | 4 +- .../doctype/drip_email/test_drip_email.py | 6 +- .../press/doctype/erpnext_app/erpnext_app.py | 4 +- .../erpnext_consultant/erpnext_consultant.js | 2 +- .../erpnext_consultant/erpnext_consultant.py | 14 +- .../test_erpnext_consultant.py | 2 +- .../erpnext_consultant_region.py | 4 +- .../erpnext_site_settings.js | 2 +- .../erpnext_site_settings.py | 6 +- .../test_erpnext_site_settings.py | 2 +- .../doctype/frappe_version/frappe_version.js | 2 +- .../doctype/frappe_version/frappe_version.py | 6 +- .../frappe_version/test_frappe_version.py | 8 +- .../frappe_version_dependency.py | 4 +- .../github_webhook_log/github_webhook_log.js | 2 +- .../github_webhook_log/github_webhook_log.py | 32 +- .../test_github_webhook_log.py | 2 +- press/press/doctype/incident/incident.js | 4 +- press/press/doctype/incident/incident.py | 140 +-- press/press/doctype/incident/test_incident.py | 96 +- .../incident_alerts/incident_alerts.py | 4 +- .../incident_settings/incident_settings.js | 2 +- .../incident_settings/incident_settings.py | 4 +- .../test_incident_settings.py | 2 +- .../incident_settings_self_hosted_user.py | 4 +- .../incident_settings_user.py | 4 +- .../incident_suggestion.py | 4 +- .../incident_updates/incident_updates.py | 4 +- .../inspect_trace_id/inspect_trace_id.js | 2 +- .../inspect_trace_id/inspect_trace_id.py | 18 +- .../inspect_trace_id/test_inspect_trace_id.py | 2 +- press/press/doctype/invoice/invoice.js | 32 +- press/press/doctype/invoice/invoice.json | 14 +- press/press/doctype/invoice/invoice.py | 234 ++-- press/press/doctype/invoice/invoice_list.js | 2 +- .../doctype/invoice/mark_as_uncollectible.py | 6 +- .../invoice/patches/set_free_credits.py | 8 +- .../patches/set_transaction_details.py | 10 +- .../doctype/invoice/stripe_webhook_handler.py | 14 +- press/press/doctype/invoice/test_invoice.py | 110 +- .../invoice_credit_allocation.py | 4 +- .../invoice_discount/invoice_discount.py | 4 +- .../doctype/invoice_item/invoice_item.py | 4 +- .../invoice_transaction_fee.py | 4 +- .../press/doctype/log_counter/log_counter.js | 2 +- .../press/doctype/log_counter/log_counter.py | 28 +- .../doctype/log_counter/test_log_counter.py | 2 +- press/press/doctype/log_server/log_server.js | 10 +- .../press/doctype/log_server/log_server.json | 8 +- press/press/doctype/log_server/log_server.py | 16 +- .../doctype/log_server/test_log_server.py | 2 +- .../logical_replication_backup.js | 4 +- .../logical_replication_backup.py | 104 +- .../test_logical_replication_backup.py | 2 +- .../logical_replication_server.py | 4 +- .../logical_replication_step.py | 6 +- press/press/doctype/mail_log/mail_log.js | 2 +- press/press/doctype/mail_log/mail_log.py | 8 +- press/press/doctype/mail_log/test_mail_log.py | 2 +- press/press/doctype/mail_setup/mail_setup.js | 2 +- press/press/doctype/mail_setup/mail_setup.py | 4 +- .../doctype/mail_setup/test_mail_setup.py | 2 +- .../doctype/malware_scan/malware_scan.js | 4 +- .../doctype/malware_scan/malware_scan.py | 26 +- .../doctype/malware_scan/test_malware_scan.py | 2 +- .../managed_database_service.js | 6 +- .../managed_database_service.py | 6 +- .../test_managed_database_service.py | 2 +- .../doctype/mariadb_binlog/mariadb_binlog.js | 4 +- .../doctype/mariadb_binlog/mariadb_binlog.py | 24 +- .../mariadb_binlog/test_mariadb_binlog.py | 2 +- .../doctype/mariadb_stalk/mariadb_stalk.js | 2 +- .../doctype/mariadb_stalk/mariadb_stalk.py | 40 +- .../mariadb_stalk/test_mariadb_stalk.py | 2 +- .../mariadb_stalk_diagnostic.py | 4 +- .../mariadb_variable/mariadb_variable.js | 6 +- .../mariadb_variable/mariadb_variable.py | 10 +- .../mariadb_variable/test_mariadb_variable.py | 12 +- press/press/doctype/marketplace_app/events.py | 10 +- .../marketplace_app/marketplace_app.js | 2 +- .../marketplace_app/marketplace_app.json | 4 +- .../marketplace_app/marketplace_app.py | 162 +-- ...om_first_site_creation_to_site_creation.py | 4 +- .../patches/convert_images_to_webp.py | 8 +- .../templates/marketplace_app.html | 12 +- .../marketplace_app/test_marketplace_app.py | 6 +- press/press/doctype/marketplace_app/utils.py | 2 +- .../marketplace_app_categories.js | 2 +- .../marketplace_app_categories.py | 4 +- .../test_marketplace_app_categories.py | 2 +- .../marketplace_app_category.js | 2 +- .../marketplace_app_category.py | 6 +- .../test_marketplace_app_category.py | 2 +- .../marketplace_app_screenshot.py | 4 +- .../marketplace_app_version.py | 4 +- .../marketplace_localisation_app.py | 4 +- .../module_setup_guide/module_setup_guide.js | 2 +- .../module_setup_guide/module_setup_guide.py | 4 +- .../test_module_setup_guide.py | 2 +- .../doctype/monitor_server/monitor_server.js | 10 +- .../monitor_server/monitor_server.json | 10 +- .../doctype/monitor_server/monitor_server.py | 74 +- .../monitor_server/test_monitor_server.py | 2 +- .../mpesa_payment_record.js | 2 +- .../mpesa_payment_record.py | 10 +- .../patches/add_unique_constraint.py | 4 +- .../test_mpesa_payment_record.py | 2 +- .../mpesa_request_log/mpesa_request_log.js | 2 +- .../mpesa_request_log/mpesa_request_log.py | 8 +- .../test_mpesa_request_log.py | 2 +- .../press/doctype/mpesa_setup/mpesa_setup.js | 10 +- .../press/doctype/mpesa_setup/mpesa_setup.py | 4 +- .../doctype/mpesa_setup/test_mpesa_setup.py | 2 +- press/press/doctype/nfs_server/nfs_server.js | 12 +- .../press/doctype/nfs_server/nfs_server.json | 8 +- press/press/doctype/nfs_server/nfs_server.py | 20 +- .../doctype/nfs_server/test_nfs_server.py | 2 +- .../nfs_volume_attachment.js | 4 +- .../nfs_volume_attachment.py | 78 +- .../test_nfs_volume_attachment.py | 2 +- .../nfs_volume_attachment_step.py | 4 +- .../nfs_volume_detachment.js | 4 +- .../nfs_volume_detachment.py | 68 +- .../test_nfs_volume_detachment.py | 2 +- .../nfs_volume_detachment_step.py | 4 +- .../oauth_domain_mapping.js | 2 +- .../oauth_domain_mapping.py | 2 +- .../test_oauth_domain_mapping.py | 2 +- .../partner_payment_payout.js | 6 +- .../partner_payment_payout.py | 32 +- .../test_partner_payment_payout.py | 2 +- .../partner_payment_payout_item.py | 4 +- .../payment_dispute/payment_dispute.js | 2 +- .../payment_dispute/payment_dispute.py | 4 +- .../payment_dispute/test_payment_dispute.py | 2 +- .../payment_due_extension.js | 2 +- .../payment_due_extension.py | 26 +- .../test_payment_due_extension.py | 2 +- .../payment_gateway/payment_gateway.js | 2 +- .../payment_gateway/payment_gateway.py | 4 +- .../payment_gateway/test_payment_gateway.py | 2 +- .../payment_partner_transaction.js | 2 +- .../payment_partner_transaction.json | 4 +- .../payment_partner_transaction.py | 6 +- .../test_payment_partner_transaction.py | 2 +- .../change_fields_from_recipient_to_team.py | 2 +- .../patches/compute_total_amount.py | 6 +- .../doctype/payout_order/payout_order.js | 2 +- .../doctype/payout_order/payout_order.json | 4 +- .../doctype/payout_order/payout_order.py | 68 +- .../doctype/payout_order/test_payout_order.py | 42 +- .../payout_order_item/payout_order_item.py | 4 +- .../physical_backup_group.js | 4 +- .../physical_backup_group.py | 20 +- .../test_physical_backup_group.py | 2 +- .../physical_backup_group_site.py | 30 +- .../physical_backup_restoration.js | 4 +- .../physical_backup_restoration.py | 120 +-- .../test_physical_backup_restoration.py | 2 +- .../physical_backup_restoration_step.py | 6 +- .../physical_restoration_test.js | 4 +- .../physical_restoration_test.py | 26 +- .../test_physical_restoration_test.py | 2 +- .../physical_restoration_test_result.py | 4 +- .../press/doctype/plan_change/plan_change.js | 2 +- .../press/doctype/plan_change/plan_change.py | 20 +- .../doctype/plan_change/test_plan_change.py | 2 +- .../doctype/plan_feature/plan_feature.py | 4 +- .../doctype/press_feedback/press_feedback.js | 2 +- .../doctype/press_feedback/press_feedback.py | 4 +- .../press_feedback/test_press_feedback.py | 2 +- press/press/doctype/press_job/press_job.js | 4 +- press/press/doctype/press_job/press_job.py | 62 +- .../press/doctype/press_job/test_press_job.py | 2 +- .../doctype/press_job_step/press_job_step.js | 2 +- .../doctype/press_job_step/press_job_step.py | 20 +- .../press_job_step/test_press_job_step.py | 2 +- .../doctype/press_job_type/press_job_type.js | 2 +- .../doctype/press_job_type/press_job_type.py | 4 +- .../press_job_type/test_press_job_type.py | 2 +- .../press_job_type_step.js | 2 +- .../press_job_type_step.py | 4 +- .../test_press_job_type_step.py | 2 +- .../press_method_permission.js | 2 +- .../press_method_permission.py | 8 +- .../test_press_method_permission.py | 2 +- ...link_reference_doctype_to_notifications.py | 10 +- .../press_notification/press_notification.js | 2 +- .../press_notification/press_notification.py | 28 +- .../test_press_notification.py | 10 +- .../press_permission_group.js | 2 +- .../press_permission_group.py | 62 +- .../test_press_permission_group.py | 78 +- .../press_permission_group_user.py | 4 +- .../change_fields_from_enable_to_allow.py | 2 +- .../press_role/patches/migrate_permissions.py | 14 +- .../press_role/patches/to_resources.py | 6 +- press/press/doctype/press_role/press_role.js | 2 +- press/press/doctype/press_role/press_role.py | 32 +- .../doctype/press_role/test_press_role.py | 42 +- .../press_role_permission.js | 2 +- .../press_role_permission.py | 26 +- .../test_press_role_permission.py | 2 +- .../press_role_resource.py | 4 +- .../press_role_user/press_role_user.py | 4 +- ...ve_stripe_credentials_to_press_settings.py | 10 +- .../patches/set_minimum_rebuild_memory.py | 4 +- .../patches/set_press_monitoring_password.py | 8 +- .../patches/set_redis_cache_size.py | 6 +- .../doctype/press_settings/press_settings.js | 2 +- .../press_settings/press_settings.json | 12 +- .../doctype/press_settings/press_settings.py | 28 +- .../press_settings/test_press_settings.py | 16 +- press/press/doctype/press_tag/press_tag.js | 2 +- press/press/doctype/press_tag/press_tag.py | 4 +- .../press/doctype/press_tag/test_press_tag.py | 6 +- .../press_user_permission.js | 2 +- .../press_user_permission.py | 20 +- .../test_press_user_permission.py | 30 +- .../doctype/press_webhook/press_webhook.js | 8 +- .../doctype/press_webhook/press_webhook.py | 50 +- .../press_webhook/test_press_webhook.py | 2 +- .../press_webhook_attempt.js | 2 +- .../press_webhook_attempt.py | 6 +- .../test_press_webhook_attempt.py | 2 +- .../press_webhook_event.js | 2 +- .../press_webhook_event.py | 4 +- .../test_press_webhook_event.py | 2 +- .../press_webhook_log/press_webhook_log.js | 2 +- .../press_webhook_log/press_webhook_log.py | 34 +- .../test_press_webhook_log.py | 2 +- .../press_webhook_selected_event.py | 4 +- .../process_snapshot/process_snapshot.js | 2 +- .../process_snapshot/process_snapshot.py | 10 +- .../process_snapshot/test_process_snapshot.py | 2 +- .../prometheus_alert_rule.js | 2 +- .../prometheus_alert_rule.py | 32 +- .../test_prometheus_alert_rule.py | 4 +- .../prometheus_alert_rule_cluster.py | 4 +- .../doctype/proxy_failover/proxy_failover.js | 2 +- .../doctype/proxy_failover/proxy_failover.py | 68 +- .../proxy_failover/test_proxy_failover.py | 2 +- .../proxy_failover_steps.py | 4 +- .../generate_proxysql_monitor_password.py | 8 +- .../doctype/proxy_server/proxy_server.js | 10 +- .../doctype/proxy_server/proxy_server.json | 10 +- .../doctype/proxy_server/proxy_server.py | 74 +- .../proxy_server/proxy_server_dashboard.py | 2 +- .../doctype/proxy_server/test_proxy_server.py | 14 +- .../proxy_server_domain.py | 4 +- .../razorpay_payment_record.js | 2 +- .../razorpay_payment_record.py | 22 +- .../test_razorpay_payment_record.py | 2 +- .../razorpay_webhook_log.js | 2 +- .../razorpay_webhook_log.py | 40 +- .../test_razorpay_webhook_log.py | 2 +- press/press/doctype/region/region.js | 2 +- press/press/doctype/region/region.py | 4 +- press/press/doctype/region/test_region.py | 2 +- .../registry_server/registry_server.js | 12 +- .../registry_server/registry_server.json | 8 +- .../registry_server/registry_server.py | 44 +- .../registry_server/test_registry_server.py | 2 +- .../set_bench_dependency_in_release_group.py | 4 +- .../patches/sync_common_site_config.py | 10 +- .../doctype/release_group/release_group.js | 12 +- .../doctype/release_group/release_group.py | 384 +++---- .../release_group/test_release_group.py | 124 +-- .../release_group_app/release_group_app.py | 6 +- .../release_group_dependency.py | 8 +- .../release_group_mount.py | 4 +- .../release_group_package.py | 4 +- .../release_group_server.py | 4 +- .../release_group_variable.py | 8 +- .../press/doctype/remote_file/remote_file.js | 6 +- .../press/doctype/remote_file/remote_file.py | 56 +- .../doctype/remote_file/test_remote_file.py | 6 +- .../remote_operation_log.js | 2 +- .../remote_operation_log.py | 4 +- .../test_remote_operation_log.py | 2 +- .../doctype/required_apps/required_apps.py | 4 +- .../doctype/resource_tag/resource_tag.py | 4 +- .../press/doctype/resource_tag/tag_helpers.py | 8 +- .../press/doctype/root_domain/root_domain.js | 2 +- .../press/doctype/root_domain/root_domain.py | 36 +- .../doctype/root_domain/test_root_domain.py | 16 +- press/press/doctype/scale_step/scale_step.py | 4 +- .../scheduled_auto_update_log.js | 2 +- .../scheduled_auto_update_log.py | 4 +- .../test_scheduled_auto_update_log.py | 2 +- .../security_update/security_update.js | 2 +- .../security_update/security_update.py | 18 +- .../security_update/test_security_update.py | 2 +- .../security_update_check.js | 2 +- .../security_update_check.py | 14 +- .../test_security_update_check.py | 2 +- .../self_hosted_server/self_hosted_server.js | 8 +- .../self_hosted_server.json | 4 +- .../self_hosted_server/self_hosted_server.py | 148 +-- .../self_hosted_server_dashboard.py | 2 +- .../test_self_hosted_server.py | 48 +- .../self_hosted_site_apps.py | 4 +- .../serial_console_log/serial_console_log.js | 6 +- .../serial_console_log/serial_console_log.py | 24 +- .../test_serial_console_log.py | 2 +- .../server/patches/set_bench_memory_limits.py | 2 +- .../patches/set_plan_and_subscription.py | 12 +- ...ench_memory_limits_on_dedicated_servers.py | 10 +- press/press/doctype/server/server.js | 28 +- press/press/doctype/server/server.json | 8 +- press/press/doctype/server/server.py | 580 +++++----- .../press/doctype/server/server_dashboard.py | 2 +- press/press/doctype/server/test_server.py | 46 +- .../server_activity/server_activity.js | 2 +- .../server_activity/server_activity.py | 8 +- .../server_activity/test_server_activity.py | 2 +- .../doctype/server_mount/server_mount.py | 4 +- .../press/doctype/server_plan/server_plan.js | 2 +- .../press/doctype/server_plan/server_plan.py | 8 +- .../doctype/server_plan/test_server_plan.py | 8 +- .../server_snapshot/server_snapshot.js | 10 +- .../server_snapshot/server_snapshot.py | 166 +-- .../server_snapshot/test_server_snapshot.py | 2 +- .../server_snapshot_plan.js | 2 +- .../server_snapshot_plan.py | 2 +- .../test_server_snapshot_plan.py | 2 +- .../server_snapshot_recovery.js | 8 +- .../server_snapshot_recovery.py | 84 +- .../test_server_snapshot_recovery.py | 2 +- .../server_snapshot_site_recovery.py | 4 +- ...iption_for_servers_with_additional_disk.py | 16 +- .../server_storage_plan.js | 2 +- .../server_storage_plan.py | 6 +- .../test_server_storage_plan.py | 2 +- .../doctype/silenced_alert/silenced_alert.js | 6 +- .../doctype/silenced_alert/silenced_alert.py | 46 +- .../silenced_alert/test_silenced_alert.py | 2 +- press/press/doctype/site/archive.py | 22 +- press/press/doctype/site/backups.py | 74 +- press/press/doctype/site/erpnext_site.py | 20 +- .../set_database_access_credentials.py | 10 +- .../doctype/site/patches/set_plan_in_site.py | 6 +- .../patches/set_plan_limit_in_site_config.py | 12 +- ...izard_check_next_retry_datetime_in_site.py | 4 +- press/press/doctype/site/pool.py | 14 +- press/press/doctype/site/saas_pool.py | 28 +- press/press/doctype/site/saas_site.py | 44 +- press/press/doctype/site/site.js | 50 +- press/press/doctype/site/site.py | 996 +++++++++--------- press/press/doctype/site/site_usages.py | 32 +- press/press/doctype/site/sync.py | 10 +- press/press/doctype/site/test_backups.py | 22 +- press/press/doctype/site/test_site.py | 146 +-- .../doctype/site_activity/site_activity.js | 2 +- .../doctype/site_activity/site_activity.py | 10 +- .../site_activity/test_site_activity.py | 4 +- .../doctype/site_analytics/site_analytics.js | 2 +- .../site_analytics/site_analytics.json | 4 +- .../doctype/site_analytics/site_analytics.py | 18 +- .../site_analytics/test_site_analytics.py | 2 +- .../site_analytics_active.py | 4 +- .../site_analytics_app/site_analytics_app.py | 4 +- .../site_analytics_doctype.py | 4 +- .../site_analytics_login.py | 4 +- .../site_analytics_user.py | 4 +- press/press/doctype/site_app/site_app.py | 10 +- .../press/doctype/site_backup/site_backup.js | 2 +- .../press/doctype/site_backup/site_backup.py | 144 +-- .../doctype/site_backup/test_site_backup.py | 10 +- .../site_backup_time/site_backup_time.py | 4 +- .../press/doctype/site_config/site_config.py | 12 +- .../site_config_key/site_config_key.js | 2 +- .../site_config_key/site_config_key.py | 8 +- .../site_config_key/test_site_config_key.py | 2 +- .../site_config_key_blacklist.js | 2 +- .../site_config_key_blacklist.py | 8 +- .../test_site_config_key_blacklist.py | 2 +- .../site_database_table_permission.py | 4 +- .../site_database_user/site_database_user.js | 6 +- .../site_database_user/site_database_user.py | 82 +- .../test_site_database_user.py | 2 +- .../press/doctype/site_domain/site_domain.js | 2 +- .../press/doctype/site_domain/site_domain.py | 76 +- .../doctype/site_domain/test_site_domain.py | 32 +- .../site_group_deploy/site_group_deploy.js | 2 +- .../site_group_deploy/site_group_deploy.py | 22 +- .../test_site_group_deploy.py | 2 +- .../site_group_deploy_app.py | 4 +- .../doctype/site_migration/site_migration.js | 10 +- .../doctype/site_migration/site_migration.py | 122 +-- .../site_migration/test_site_migration.py | 40 +- .../site_migration_step.js | 2 +- .../site_migration_step.py | 4 +- .../test_site_migration_step.py | 2 +- .../site_partner_lead/site_partner_lead.js | 2 +- .../site_partner_lead/site_partner_lead.json | 4 +- .../site_partner_lead/site_partner_lead.py | 6 +- .../test_site_partner_lead.py | 2 +- press/press/doctype/site_plan/plan.py | 10 +- press/press/doctype/site_plan/site_plan.js | 2 +- press/press/doctype/site_plan/site_plan.json | 4 +- press/press/doctype/site_plan/site_plan.py | 14 +- .../press/doctype/site_plan/test_site_plan.py | 16 +- .../site_plan_allowed_app.py | 4 +- .../site_plan_change/site_plan_change.js | 2 +- .../site_plan_change/site_plan_change.py | 30 +- .../site_plan_change/test_site_plan_change.py | 12 +- .../site_plan_release_group.py | 4 +- .../site_replication/site_replication.js | 2 +- .../site_replication/site_replication.py | 22 +- .../site_replication/test_site_replication.py | 2 +- .../site_update/scheduled_auto_updates.py | 10 +- .../press/doctype/site_update/site_update.js | 6 +- .../press/doctype/site_update/site_update.py | 314 +++--- .../doctype/site_update/test_site_update.py | 24 +- press/press/doctype/site_usage/site_usage.js | 2 +- press/press/doctype/site_usage/site_usage.py | 12 +- .../doctype/site_usage/test_site_usage.py | 2 +- press/press/doctype/site_user/site_user.js | 2 +- press/press/doctype/site_user/site_user.py | 16 +- .../press/doctype/site_user/test_site_user.py | 2 +- .../site_user_session/site_user_session.js | 2 +- .../site_user_session/site_user_session.py | 16 +- .../test_site_user_session.py | 2 +- .../sql_playground_log/sql_playground_log.js | 2 +- .../sql_playground_log/sql_playground_log.py | 4 +- .../test_sql_playground_log.py | 2 +- .../ssh_certificate/ssh_certificate.js | 2 +- .../ssh_certificate/ssh_certificate.py | 26 +- .../ssh_certificate/test_ssh_certificate.py | 12 +- .../ssh_certificate_authority.js | 2 +- .../ssh_certificate_authority.py | 20 +- .../test_ssh_certificate_authority.py | 2 +- press/press/doctype/ssh_key/ssh_key.js | 2 +- press/press/doctype/ssh_key/ssh_key.py | 4 +- press/press/doctype/ssh_key/test_ssh_key.py | 4 +- .../storage_integration_bucket.js | 2 +- .../storage_integration_bucket.py | 4 +- .../test_storage_integration_bucket.py | 2 +- .../storage_integration_subscription.js | 4 +- .../storage_integration_subscription.py | 38 +- .../test_storage_integration_subscription.py | 2 +- .../stripe_micro_charge_record.js | 4 +- .../stripe_micro_charge_record.py | 4 +- .../test_stripe_micro_charge_record.py | 2 +- .../stripe_payment_event.js | 2 +- .../stripe_payment_event.py | 20 +- .../test_stripe_payment_event.py | 2 +- .../stripe_payment_method.js | 10 +- .../stripe_payment_method.py | 36 +- .../test_stripe_payment_method.py | 2 +- .../add_payment_method_for_failed_events.py | 8 +- .../stripe_webhook_log/stripe_webhook_log.js | 2 +- .../stripe_webhook_log/stripe_webhook_log.py | 52 +- .../test_stripe_webhook_log.py | 2 +- .../doctype/subscription/subscription.js | 2 +- .../doctype/subscription/subscription.py | 98 +- .../doctype/subscription/test_subscription.py | 52 +- .../doctype/support_access/support_access.js | 2 +- .../doctype/support_access/support_access.py | 56 +- .../support_access/test_support_access.py | 4 +- .../support_access_resource.py | 4 +- .../patches/remove_invalid_email_addresses.py | 6 +- .../doctype/team/patches/set_partner_email.py | 8 +- .../doctype/team/patches/set_payment_mode.py | 6 +- .../doctype/team/patches/set_referrer_id.py | 8 +- .../doctype/team/patches/set_team_title.py | 4 +- press/press/doctype/team/suspend_sites.py | 28 +- press/press/doctype/team/team.js | 28 +- press/press/doctype/team/team.json | 4 +- press/press/doctype/team/team.py | 390 +++---- press/press/doctype/team/team_invoice.py | 16 +- press/press/doctype/team/test_team.py | 28 +- .../press/doctype/team_change/team_change.js | 2 +- .../press/doctype/team_change/team_change.py | 24 +- .../doctype/team_change/test_team_change.py | 2 +- .../team_deletion_request.js | 4 +- .../team_deletion_request.py | 66 +- .../test_team_deletion_request.py | 14 +- .../press/doctype/team_member/team_member.py | 4 +- .../team_member_deletion_request.js | 2 +- .../team_member_deletion_request.py | 4 +- .../test_team_member_deletion_request.py | 2 +- .../team_member_impersonation.js | 2 +- .../team_member_impersonation.py | 4 +- .../test_team_member_impersonation.py | 2 +- .../team_onboarding/team_onboarding.py | 4 +- .../create_groups_from_press_settings.py | 10 +- .../doctype/telegram_group/telegram_group.js | 2 +- .../doctype/telegram_group/telegram_group.py | 4 +- .../telegram_group/test_telegram_group.py | 2 +- .../telegram_group_topic.py | 4 +- .../telegram_message/telegram_message.js | 2 +- .../telegram_message/telegram_message.py | 20 +- .../telegram_message/test_telegram_message.py | 8 +- .../tls_certificate/test_tls_certificate.py | 6 +- .../tls_certificate/tls_certificate.js | 6 +- .../tls_certificate/tls_certificate.py | 110 +- .../doctype/trace_server/test_trace_server.py | 2 +- .../doctype/trace_server/trace_server.js | 10 +- .../doctype/trace_server/trace_server.json | 8 +- .../doctype/trace_server/trace_server.py | 20 +- .../doctype/usage_record/test_usage_record.py | 2 +- .../doctype/usage_record/usage_record.js | 2 +- .../doctype/usage_record/usage_record.py | 40 +- .../patches/generate_recovery_codes.py | 16 +- press/press/doctype/user_2fa/test_user_2fa.py | 2 +- press/press/doctype/user_2fa/user_2fa.js | 2 +- press/press/doctype/user_2fa/user_2fa.py | 22 +- .../user_2fa_recovery_code.py | 4 +- .../test_user_ssh_certificate.py | 2 +- .../user_ssh_certificate.js | 6 +- .../user_ssh_certificate.py | 24 +- .../patches/set_existing_keys_as_default.py | 4 +- .../doctype/user_ssh_key/test_user_ssh_key.py | 24 +- .../doctype/user_ssh_key/user_ssh_key.js | 2 +- .../doctype/user_ssh_key/user_ssh_key.py | 16 +- .../version_upgrade/test_version_upgrade.py | 16 +- .../version_upgrade/version_upgrade.js | 4 +- .../version_upgrade/version_upgrade.py | 82 +- .../patches/rename_aws_fields.py | 4 +- .../test_virtual_disk_snapshot.py | 2 +- .../virtual_disk_snapshot.js | 2 +- .../virtual_disk_snapshot.py | 138 +-- .../virtual_machine/cloud-init.yml.jinja2 | 12 +- .../patches/populate_volumes_table.py | 8 +- .../patches/rename_aws_fields.py | 4 +- .../patches/rename_virtual_machines.py | 6 +- .../patches/set_naming_fields.py | 12 +- .../patches/set_root_disk_size.py | 10 +- .../set_virtual_machine_naming_series.py | 6 +- .../virtual_machine/test_virtual_machine.py | 16 +- .../virtual_machine/virtual_machine.js | 32 +- .../virtual_machine/virtual_machine.py | 304 +++--- .../virtual_machine/virtual_machine_list.js | 4 +- .../patches/rename_aws_fields.py | 4 +- .../patches/set_root_size.py | 10 +- .../test_virtual_machine_image.py | 6 +- .../virtual_machine_image.js | 4 +- .../virtual_machine_image.py | 36 +- .../virtual_machine_image_volume.py | 4 +- .../virtual_machine_temporary_volume.py | 4 +- .../patches/rename_aws_fields.py | 4 +- .../virtual_machine_volume.py | 4 +- .../wireguard_peer/test_wireguard_peer.py | 2 +- .../doctype/wireguard_peer/wireguard_peer.js | 8 +- .../doctype/wireguard_peer/wireguard_peer.py | 32 +- .../wireguard_peer_dashboard.py | 2 +- .../report/agent_versions/agent_versions.js | 12 +- .../report/agent_versions/agent_versions.py | 22 +- .../aws_instance_pricing.js | 2 +- .../aws_instance_pricing.py | 12 +- .../aws_rightsizing_recommendation.js | 10 +- .../aws_rightsizing_recommendation.py | 30 +- .../bench_memory_limits.js | 2 +- .../bench_memory_limits.json | 2 +- .../bench_memory_limits.py | 18 +- .../binary_log_browser/binary_log_browser.js | 2 +- .../binary_log_browser/binary_log_browser.py | 20 +- .../mariadb_deadlock_browser.js | 2 +- .../mariadb_deadlock_browser.py | 20 +- .../mariadb_locks_list/mariadb_locks_list.js | 4 +- .../mariadb_locks_list/mariadb_locks_list.py | 4 +- .../mariadb_process_list.js | 10 +- .../mariadb_process_list.py | 28 +- .../mariadb_slow_queries.js | 16 +- .../mariadb_slow_queries.py | 30 +- .../marketplace_app_repository_visibility.js | 6 +- .../marketplace_app_repository_visibility.py | 12 +- .../report/payment_partner/payment_partner.js | 8 +- .../report/payment_partner/payment_partner.py | 14 +- .../press_endpoints_audit.js | 2 +- .../press_endpoints_audit.py | 10 +- .../press/report/server_stats/server_stats.js | 2 +- .../press/report/server_stats/server_stats.py | 48 +- .../shared_app_server_stats.js | 2 +- .../shared_app_server_stats.py | 44 +- press/public/js/ChartComponent.js | 2 +- press/public/js/datatable.js | 4 +- press/public/js/form_controller.js | 2 +- press/public/js/utils.js | 4 +- press/public/migrate | 2 +- press/redis-setup/Dockerfile | 30 +- press/redis-setup/supervisord.conf | 2 +- press/runner.py | 72 +- press/saas/README.md | 4 +- press/saas/api/__init__.py | 36 +- press/saas/api/auth.py | 4 +- press/saas/api/billing.py | 28 +- press/saas/api/readme.md | 30 +- press/saas/api/site.py | 26 +- press/saas/api/team.py | 2 +- .../account_request_rules.py | 2 +- .../hybrid_pool_item/hybrid_pool_item.py | 4 +- .../hybrid_saas_pool/hybrid_saas_pool.js | 2 +- .../hybrid_saas_pool/hybrid_saas_pool.py | 2 +- .../hybrid_saas_pool/test_hybrid_saas_pool.py | 2 +- ..._saas_product_doctypes_to_product_trial.py | 10 +- .../doctype/product_trial/product_trial.js | 2 +- .../doctype/product_trial/product_trial.json | 2 +- .../doctype/product_trial/product_trial.py | 132 +-- .../product_trial/test_product_trial.py | 12 +- .../product_trial_app/product_trial_app.py | 4 +- .../patches/set_subscription_created_flag.py | 2 +- .../product_trial_request.js | 10 +- .../product_trial_request.py | 74 +- .../test_product_trial_request.py | 2 +- .../product_trial_signup_field.py | 4 +- press/saas/doctype/saas_app/saas_app.js | 2 +- press/saas/doctype/saas_app/saas_app.py | 8 +- press/saas/doctype/saas_app/test_saas_app.py | 4 +- .../doctype/saas_app_plan/saas_app_plan.js | 2 +- .../doctype/saas_app_plan/saas_app_plan.py | 14 +- .../saas_app_plan/test_saas_app_plan.py | 2 +- .../saas_app_subscription.js | 2 +- .../saas_app_subscription.py | 96 +- .../test_saas_app_subscription.py | 2 +- .../saas_app_version/saas_app_version.js | 2 +- .../saas_app_version/saas_app_version.py | 2 +- .../saas_app_version/test_saas_app_version.py | 2 +- .../doctype/saas_feedback/saas_feedback.js | 2 +- .../doctype/saas_feedback/saas_feedback.py | 2 +- .../saas_feedback/test_saas_feedback.py | 2 +- .../saas_pool_rules/saas_pool_rules.py | 2 +- .../saas_remote_login/saas_remote_login.js | 2 +- .../saas_remote_login/saas_remote_login.py | 4 +- .../test_saas_remote_login.py | 2 +- .../doctype/saas_settings/saas_settings.js | 2 +- .../doctype/saas_settings/saas_settings.py | 4 +- .../saas_settings/test_saas_settings.py | 4 +- .../saas_setup_account_generator.js | 2 +- .../saas_setup_account_generator.json | 2 +- .../saas_setup_account_generator.py | 6 +- .../test_saas_setup_account_generator.py | 2 +- .../saas_signup_generator.js | 2 +- .../saas_signup_generator.json | 2 +- .../saas_signup_generator.py | 8 +- .../test_saas_signup_generator.py | 2 +- .../site_access_token/site_access_token.js | 2 +- .../site_access_token/site_access_token.py | 12 +- .../test_site_access_token.py | 2 +- press/sanity.py | 4 +- .../infrastructure/server_conversion.py | 54 +- press/scripts/migrate.py | 42 +- press/scripts/registry.py | 6 +- press/scripts/weekend_support.py | 12 +- press/signup_e2e.py | 42 +- press/telegram_utils.py | 34 +- press/templates/emails/budget_alert.html | 2 +- press/templates/emails/suspended_sites.html | 2 +- press/templates/includes/signup.js | 4 +- press/templates/marketplace/base.html | 2 +- press/templates/marketplace/footer.html | 4 +- press/templates/marketplace/macros.html | 2 +- press/templates/saas/macros.html | 2 +- press/templates/saas/setup-account.html | 16 +- press/templates/saas/signup.html | 14 +- press/templates/saas_signup_layout.html | 2 +- press/tests/before_test.py | 34 +- press/tests/test_2fa.py | 24 +- press/tests/test_agent.py | 16 +- press/tests/test_audit.py | 32 +- press/tests/test_billing_utils.py | 2 +- press/tests/test_cleanup.py | 54 +- press/tests/test_sanity.py | 6 +- press/tests/test_scheduled_auto_updates.py | 20 +- press/utils/__init__.py | 172 +-- press/utils/billing.py | 98 +- press/utils/disposable_emails.py | 6 +- press/utils/dns.py | 38 +- press/utils/extra.py | 2 +- press/utils/jobs.py | 8 +- press/utils/mpesa_utils.py | 4 +- press/utils/telemetry.py | 16 +- press/utils/test.py | 4 +- press/utils/user.py | 6 +- press/utils/webhook.py | 22 +- press/www/dashboard.py | 36 +- press/www/github/authorize.py | 20 +- press/www/github/redirect.py | 16 +- press/www/marketplace/index.html | 4 +- press/www/marketplace/index.py | 16 +- press/www/prepare-site.html | 12 +- press/www/saas-oauth.html | 20 +- press/www/saas/billing.html | 4 +- press/www/saas/billing.js | 48 +- press/www/saas/subscription.js | 14 +- press/www/stripe/setup-account.html | 10 +- press/www/stripe/signup.html | 16 +- yarn.lock | 4 +- 1534 files changed, 12854 insertions(+), 12854 deletions(-) diff --git a/.cspell.json b/.cspell.json index e7fc575a..5de63cf5 100644 --- a/.cspell.json +++ b/.cspell.json @@ -200,7 +200,7 @@ "frappeclient", "frappehr", "Frappeio", - "frappeui", + "jingrowui", "fremovexattr", "fsetxattr", "fstype", diff --git a/.github/helper/install.sh b/.github/helper/install.sh index c8843a3c..f935a53d 100644 --- a/.github/helper/install.sh +++ b/.github/helper/install.sh @@ -6,21 +6,21 @@ cd ~ || exit sudo apt update && sudo apt install redis-server libcups2-dev -pip install frappe-bench -bench init --skip-assets --python "$(which python)" ~/frappe-bench --frappe-path http://git.jingrow.com/balamurali27/frappe --frappe-branch fc-ci +pip install jingrow-bench +bench init --skip-assets --python "$(which python)" ~/jingrow-bench --jingrow-path http://git.jingrow.com/balamurali27/jingrow --jingrow-branch fc-ci mysql --host 127.0.0.1 --port 3306 -u root -proot -e "SET GLOBAL character_set_server = 'utf8mb4'" mysql --host 127.0.0.1 --port 3306 -u root -proot -e "SET GLOBAL collation_server = 'utf8mb4_unicode_ci'" install_whktml() { - wget -O /tmp/wkhtmltox.tar.xz http://git.jingrow.com/frappe/wkhtmltopdf/raw/master/wkhtmltox-0.12.3_linux-generic-amd64.tar.xz + wget -O /tmp/wkhtmltox.tar.xz http://git.jingrow.com/jingrow/wkhtmltopdf/raw/master/wkhtmltox-0.12.3_linux-generic-amd64.tar.xz tar -xf /tmp/wkhtmltox.tar.xz -C /tmp sudo mv /tmp/wkhtmltox/bin/wkhtmltopdf /usr/local/bin/wkhtmltopdf sudo chmod o+x /usr/local/bin/wkhtmltopdf } install_whktml & -cd ~/frappe-bench || exit +cd ~/jingrow-bench || exit sed -i 's/watch:/# watch:/g' Procfile sed -i 's/schedule:/# schedule:/g' Procfile @@ -32,7 +32,7 @@ bench get-app press "${GITHUB_WORKSPACE}" bench setup requirements --dev bench start &> bench_start_logs.txt & -CI=Yes bench build --app frappe & +CI=Yes bench build --app jingrow & bench new-site --db-root-password root --admin-password admin test_site bench --site test_site install-app press bench set-config -g server_script_enabled 1 diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml index 1c1a3a05..35fbaa3e 100644 --- a/.github/workflows/main.yaml +++ b/.github/workflows/main.yaml @@ -10,9 +10,9 @@ on: workflow_dispatch: env: - DB_NAME: test_frappe - DB_USER: test_frappe - DB_PASSWORD: test_frappe + DB_NAME: test_jingrow + DB_USER: test_jingrow + DB_PASSWORD: test_jingrow concurrency: group: ${{ github.ref }} @@ -162,22 +162,22 @@ jobs: uses: crazy-max/ghaction-github-runtime@v3 - name: Install Playwright browsers - working-directory: /home/runner/frappe-bench/apps/press/dashboard + working-directory: /home/runner/jingrow-bench/apps/press/dashboard run: npx playwright install chromium - name: Setup Test Users - working-directory: /home/runner/frappe-bench/apps/press/dashboard + working-directory: /home/runner/jingrow-bench/apps/press/dashboard run: | bench --site test_site execute press.press.doctype.team.test_team.create_test_press_admin_team \ --kwargs "{\"email\": \"${PRESS_ADMIN_USER_EMAIL}\", \"free_account\": True, \"skip_onboarding\": True}" bench --site test_site set-password "$PRESS_ADMIN_USER_EMAIL" "$PRESS_ADMIN_USER_PASSWORD" - name: Run Playwright Tests - working-directory: /home/runner/frappe-bench/apps/press/dashboard + working-directory: /home/runner/jingrow-bench/apps/press/dashboard run: npx playwright test --project=chromium - name: Generate Coverage Report - working-directory: /home/runner/frappe-bench/apps/press/dashboard + working-directory: /home/runner/jingrow-bench/apps/press/dashboard run: npx nyc report --reporter=cobertura --reporter=text --report-dir=./coverage - name: Upload Playwright Test report @@ -185,13 +185,13 @@ jobs: uses: actions/upload-artifact@v4 with: name: playwright-report - path: /home/runner/frappe-bench/apps/press/dashboard/playwright-report + path: /home/runner/jingrow-bench/apps/press/dashboard/playwright-report - name: Upload coverage data uses: codecov/codecov-action@v5 with: disable_search: true - files: /home/runner/frappe-bench/apps/press/dashboard/coverage/cobertura-coverage.xml + files: /home/runner/jingrow-bench/apps/press/dashboard/coverage/cobertura-coverage.xml fail_ci_if_error: false verbose: true token: ${{ secrets.CODECOV_TOKEN }} @@ -280,26 +280,26 @@ jobs: install: true - name: Run Tests - working-directory: /home/runner/frappe-bench + working-directory: /home/runner/jingrow-bench run: | bench --site test_site set-config allow_tests true bench --site test_site run-parallel-tests --app press --with-coverage --total-builds 2 --build-number ${{ matrix.container }} env: TYPE: server - COVERAGE_RCFILE: /home/runner/frappe-bench/apps/press/.coveragerc + COVERAGE_RCFILE: /home/runner/jingrow-bench/apps/press/.coveragerc - name: Upload coverage reports to Codecov uses: actions/upload-artifact@v4 with: name: coverage-${{ matrix.container }} - path: /home/runner/frappe-bench/sites/coverage.xml + path: /home/runner/jingrow-bench/sites/coverage.xml if: always() - name: Upload bench start logs uses: actions/upload-artifact@v4 with: name: bench-start-logs-${{ matrix.container }} - path: /home/runner/frappe-bench/bench_start_logs.txt + path: /home/runner/jingrow-bench/bench_start_logs.txt if: always() coverage: diff --git a/.gitignore b/.gitignore index 5e8d1eac..e310501d 100644 --- a/.gitignore +++ b/.gitignore @@ -129,7 +129,7 @@ dmypy.json # Pyre type checker .pyre/ -# Added by frappe +# Added by jingrow .DS_Store *.pyc *.egg-info diff --git a/.mergify.yml b/.mergify.yml index b5ae304c..d06d1bb3 100644 --- a/.mergify.yml +++ b/.mergify.yml @@ -3,7 +3,7 @@ pull_request_rules: conditions: - and: - and: - - author!=frappe-pr-bot + - author!=jingrow-pr-bot - author!=mergify[bot] - author!=github-actions - or: diff --git a/README.md b/README.md index 21c01642..68a8194b 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ **Full Service Cloud Hosting For The Frappe Stack - Powers Frappe Cloud** -[![codecov](https://codecov.io/gh/frappe/press/branch/master/graph/badge.svg?token=0puvH0jUx9)](https://codecov.io/gh/frappe/press) +[![codecov](https://codecov.io/gh/jingrow/press/branch/master/graph/badge.svg?token=0puvH0jUx9)](https://codecov.io/gh/jingrow/press) [![unittests](http://git.jingrow.com/jingrow/jcloude/actions/workflows/main.yaml/badge.svg)](http://git.jingrow.com/jingrow/jcloude/actions/workflows/main.yaml) @@ -55,9 +55,9 @@ Additionally, customers lacked full control over their servers—no SSH access, ### Under the Hood -- [**Frappe Framework**](http://git.jingrow.com/frappe/frappe): A full-stack web application framework written in Python and Javascript. The framework provides a robust foundation for building web applications, including a database abstraction layer, user authentication, and a REST API. +- [**Frappe Framework**](http://git.jingrow.com/jingrow/jingrow): A full-stack web application framework written in Python and Javascript. The framework provides a robust foundation for building web applications, including a database abstraction layer, user authentication, and a REST API. -- [**Frappe UI**](http://git.jingrow.com/frappe/frappe-ui): A Vue-based UI library, to provide a modern user interface. The Frappe UI library provides a variety of components that can be used to build single-page applications on top of the Frappe Framework. +- [**Frappe UI**](http://git.jingrow.com/jingrow/jingrow-ui): A Vue-based UI library, to provide a modern user interface. The Frappe UI library provides a variety of components that can be used to build single-page applications on top of the Frappe Framework. - [**Agent**](http://git.jingrow.com/jingrow/agent): A flask app designed to work along with Press. It provides a CLI interface for Press to communicate with the sites and benches. @@ -80,7 +80,7 @@ pre-commit install ## Learn and connect - [Telegram Public Group](https://t.me/frappecloud) -- [Discuss Forum](https://discuss.framework.jingrow.com/c/frappe-cloud/77) +- [Discuss Forum](https://discuss.framework.jingrow.com/c/jingrow-cloud/77) - [Documentation](https://docs.framework.jingrow.com/cloud)
diff --git a/backbone/packer/cloud-init-scaleway.yml b/backbone/packer/cloud-init-scaleway.yml index b38fd34b..f386e538 100644 --- a/backbone/packer/cloud-init-scaleway.yml +++ b/backbone/packer/cloud-init-scaleway.yml @@ -6,7 +6,7 @@ users: - name: root shell: /usr/bin/bash - - name: frappe + - name: jingrow gecos: Frappe groups: sudo lock_passwd: false diff --git a/backbone/tests/test_hypervisor.py b/backbone/tests/test_hypervisor.py index c0f834fa..70317edc 100644 --- a/backbone/tests/test_hypervisor.py +++ b/backbone/tests/test_hypervisor.py @@ -2,7 +2,7 @@ # For license information, please see license.txt from unittest.mock import MagicMock -from frappe.tests.utils import FrappeTestCase +from jingrow.tests.utils import FrappeTestCase from backbone.hypervisor import Hypervisor diff --git a/backbone/vagrant/Vagrantfile b/backbone/vagrant/Vagrantfile index 27ddc2bf..8bba7cd4 100644 --- a/backbone/vagrant/Vagrantfile +++ b/backbone/vagrant/Vagrantfile @@ -37,8 +37,8 @@ Vagrant.configure("2") do |config| # Default Cluster # Reverse Proxy Server - config.vm.define "n1.local.frappe.dev" do |n1| - n1.vm.hostname = "n1.local.frappe.dev" + config.vm.define "n1.local.jingrow.dev" do |n1| + n1.vm.hostname = "n1.local.jingrow.dev" n1.vm.network "private_network", ip: "10.0.1.101", netmask: "255.255.0.0" n1.vm.network "private_network", ip: "10.1.1.101", netmask: "255.255.0.0" n1.vm.provider :libvirt do |libvirt| @@ -47,8 +47,8 @@ Vagrant.configure("2") do |config| end # Primary App Server - config.vm.define "f1.local.frappe.dev" do |f1| - f1.vm.hostname = "f1.local.frappe.dev" + config.vm.define "f1.local.jingrow.dev" do |f1| + f1.vm.hostname = "f1.local.jingrow.dev" f1.vm.network "private_network", ip: "10.0.2.101", netmask: "255.255.0.0" f1.vm.network "private_network", ip: "10.1.2.101", netmask: "255.255.0.0" f1.vm.provider :libvirt do |libvirt| @@ -58,8 +58,8 @@ Vagrant.configure("2") do |config| end # Replica of f1 - # config.vm.define "f2.local.frappe.dev" do |f2| - # f2.vm.hostname = "f2.local.frappe.dev" + # config.vm.define "f2.local.jingrow.dev" do |f2| + # f2.vm.hostname = "f2.local.jingrow.dev" # f2.vm.network "private_network", ip: "10.0.2.102", netmask: "255.255.0.0" # f2.vm.network "private_network", ip: "10.1.2.102", netmask: "255.255.0.0" # f2.vm.provider :libvirt do |libvirt| @@ -69,8 +69,8 @@ Vagrant.configure("2") do |config| # end # Primary DB Server - config.vm.define "m1.local.frappe.dev" do |m1| - m1.vm.hostname = "m1.local.frappe.dev" + config.vm.define "m1.local.jingrow.dev" do |m1| + m1.vm.hostname = "m1.local.jingrow.dev" m1.vm.network "private_network", ip: "10.0.3.101", netmask: "255.255.0.0" m1.vm.network "private_network", ip: "10.1.3.101", netmask: "255.255.0.0" m1.vm.provider :libvirt do |libvirt| @@ -80,8 +80,8 @@ Vagrant.configure("2") do |config| end # Replica of m1 - # config.vm.define "m2.local.frappe.dev" do |m2| - # m2.vm.hostname = "m2.local.frappe.dev" + # config.vm.define "m2.local.jingrow.dev" do |m2| + # m2.vm.hostname = "m2.local.jingrow.dev" # m2.vm.network "private_network", ip: "10.0.3.102", netmask: "255.255.0.0" # m2.vm.network "private_network", ip: "10.1.3.102", netmask: "255.255.0.0" # m2.vm.provider :libvirt do |libvirt| @@ -91,8 +91,8 @@ Vagrant.configure("2") do |config| # end # # Secondary Cluster - # config.vm.define "n2.frappe.dev" do |n2| - # n2.vm.hostname = "n2.frappe.dev" + # config.vm.define "n2.jingrow.dev" do |n2| + # n2.vm.hostname = "n2.jingrow.dev" # n2.vm.network "private_network", ip: "10.0.1.102", netmask: "255.255.0.0" # n2.vm.network "private_network", ip: "10.1.1.102", netmask: "255.255.0.0" # end @@ -100,15 +100,15 @@ Vagrant.configure("2") do |config| # Additional Hosts. # Docker Registry - config.vm.define "registry.local.frappe.dev" do |registry| - registry.vm.hostname = "registry.local.frappe.dev" + config.vm.define "registry.local.jingrow.dev" do |registry| + registry.vm.hostname = "registry.local.jingrow.dev" registry.vm.network "private_network", ip: "10.0.4.101", netmask: "255.255.0.0" registry.vm.network "private_network", ip: "10.1.4.101", netmask: "255.255.0.0" end # Log Server = ElasticSearch + Logstash + Kibana - config.vm.define "log.local.frappe.dev" do |log| - log.vm.hostname = "log.local.frappe.dev" + config.vm.define "log.local.jingrow.dev" do |log| + log.vm.hostname = "log.local.jingrow.dev" log.vm.network "private_network", ip: "10.0.4.102", netmask: "255.255.0.0" log.vm.network "private_network", ip: "10.1.4.102", netmask: "255.255.0.0" log.vm.provider :libvirt do |libvirt| @@ -118,8 +118,8 @@ Vagrant.configure("2") do |config| end # Uptime Server = Prometheus + Grafana - config.vm.define "monitor.local.frappe.dev" do |monitor| - monitor.vm.hostname = "monitor.local.frappe.dev" + config.vm.define "monitor.local.jingrow.dev" do |monitor| + monitor.vm.hostname = "monitor.local.jingrow.dev" monitor.vm.network "private_network", ip: "10.0.4.103", netmask: "255.255.0.0" monitor.vm.network "private_network", ip: "10.1.4.103", netmask: "255.255.0.0" monitor.vm.provider :libvirt do |libvirt| @@ -128,8 +128,8 @@ Vagrant.configure("2") do |config| end # Analytics Server = Plausible - # config.vm.define "analytics.local.frappe.dev" do |analytics| - # analytics.vm.hostname = "analytics.local.frappe.dev" + # config.vm.define "analytics.local.jingrow.dev" do |analytics| + # analytics.vm.hostname = "analytics.local.jingrow.dev" # analytics.vm.network "private_network", ip: "10.0.4.104", netmask: "255.255.0.0" # analytics.vm.network "private_network", ip: "10.1.4.104", netmask: "255.255.0.0" # analytics.vm.provider :libvirt do |libvirt| @@ -138,8 +138,8 @@ Vagrant.configure("2") do |config| # end # Trace Server = Sentry - config.vm.define "trace.local.frappe.dev" do |trace| - trace.vm.hostname = "trace.local.frappe.dev" + config.vm.define "trace.local.jingrow.dev" do |trace| + trace.vm.hostname = "trace.local.jingrow.dev" trace.vm.network "private_network", ip: "10.0.4.105", netmask: "255.255.0.0" trace.vm.network "private_network", ip: "10.1.4.105", netmask: "255.255.0.0" trace.vm.provider :libvirt do |libvirt| @@ -148,16 +148,16 @@ Vagrant.configure("2") do |config| end end - # config.vm.define "sn1.local.frappe.dev" do |sn1| + # config.vm.define "sn1.local.jingrow.dev" do |sn1| # sn1.vm.box = "scaleway" - # sn1.vm.hostname = "sn1.local.frappe.dev" + # sn1.vm.hostname = "sn1.local.jingrow.dev" # sn1.vm.network "private_network", ip: "10.2.0.101", netmask: "255.255.0.0" # sn1.vm.network "private_network", ip: "10.3.0.101", netmask: "255.255.0.0", auto_config: false # end - # config.vm.define "sf1.local.frappe.dev" do |sf1| + # config.vm.define "sf1.local.jingrow.dev" do |sf1| # sf1.vm.box = "scaleway" - # sf1.vm.hostname = "sf1.local.frappe.dev" + # sf1.vm.hostname = "sf1.local.jingrow.dev" # sf1.vm.network "private_network", ip: "10.2.1.101", netmask: "255.255.0.0" # sf1.vm.network "private_network", ip: "10.3.1.101", netmask: "255.255.0.0", auto_config: false # sf1.vm.provider :libvirt do |libvirt| diff --git a/dashboard/package.json b/dashboard/package.json index 70533cfa..a32c0c79 100644 --- a/dashboard/package.json +++ b/dashboard/package.json @@ -30,8 +30,8 @@ "dayjs": "^1.10.7", "echarts": "^5.4.3", "feather-icons": "^4.26.0", - "frappe-charts": "2.0.0-rc22", - "frappe-ui": "0.1.168", + "jingrow-charts": "2.0.0-rc22", + "jingrow-ui": "0.1.168", "fuse.js": "6.6.2", "libarchive.js": "^1.3.0", "lodash": "^4.17.19", diff --git a/dashboard/src/assets/style.css b/dashboard/src/assets/style.css index 12a13bf4..ba1a51fa 100644 --- a/dashboard/src/assets/style.css +++ b/dashboard/src/assets/style.css @@ -1,4 +1,4 @@ -@import 'frappe-ui/src/style.css'; +@import 'jingrow-ui/src/style.css'; @layer components { /* Works on Firefox */ diff --git a/dashboard/src/components/AccessRequestDialog.vue b/dashboard/src/components/AccessRequestDialog.vue index ece1b5c4..293cf9c0 100644 --- a/dashboard/src/components/AccessRequestDialog.vue +++ b/dashboard/src/components/AccessRequestDialog.vue @@ -59,10 +59,10 @@ diff --git a/dashboard/src/components/FoldStep.vue b/dashboard/src/components/FoldStep.vue index 81c9d561..c64a2c76 100644 --- a/dashboard/src/components/FoldStep.vue +++ b/dashboard/src/components/FoldStep.vue @@ -47,7 +47,7 @@