update Press to Jcloude
This commit is contained in:
parent
8226a31793
commit
2e1e6d961b
@ -3,7 +3,7 @@
|
|||||||
<template #body-content>
|
<template #body-content>
|
||||||
<div class="space-y-4">
|
<div class="space-y-4">
|
||||||
<div class="flex items-center space-x-2">
|
<div class="flex items-center space-x-2">
|
||||||
<PressAutocomplete
|
<JcloudeAutocomplete
|
||||||
v-model="selectedTag"
|
v-model="selectedTag"
|
||||||
:options="tagOptions"
|
:options="tagOptions"
|
||||||
label="Select or create a tag"
|
label="Select or create a tag"
|
||||||
@ -31,7 +31,7 @@ import Autocomplete from '../components/Autocomplete.vue';
|
|||||||
export default {
|
export default {
|
||||||
name: 'TagsDialog',
|
name: 'TagsDialog',
|
||||||
props: ['docname', 'pagetype'],
|
props: ['docname', 'pagetype'],
|
||||||
components: { ErrorMessage, PressAutocomplete: Autocomplete },
|
components: { ErrorMessage, JcloudeAutocomplete: Autocomplete },
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
showDialog: true,
|
showDialog: true,
|
||||||
|
|||||||
@ -542,7 +542,7 @@ def get_permissions():
|
|||||||
docperms = jingrow.db.sql(
|
docperms = jingrow.db.sql(
|
||||||
f"""
|
f"""
|
||||||
SELECT `document_name`, GROUP_CONCAT(`action`) as `actions`
|
SELECT `document_name`, GROUP_CONCAT(`action`) as `actions`
|
||||||
FROM `tabPress User Permission`
|
FROM `tabJcloude User Permission`
|
||||||
WHERE user='{user}' or `group` in {groups}
|
WHERE user='{user}' or `group` in {groups}
|
||||||
GROUP BY `document_name`
|
GROUP BY `document_name`
|
||||||
""",
|
""",
|
||||||
@ -1194,29 +1194,29 @@ def remove_permission_group_user(name, user):
|
|||||||
|
|
||||||
@jingrow.whitelist()
|
@jingrow.whitelist()
|
||||||
def get_permission_roles():
|
def get_permission_roles():
|
||||||
PressRole = jingrow.qb.PageType("Jcloude Role")
|
JcloudeRole = jingrow.qb.PageType("Jcloude Role")
|
||||||
PressRoleUser = jingrow.qb.PageType("Jcloude Role User")
|
JcloudeRoleUser = jingrow.qb.PageType("Jcloude Role User")
|
||||||
|
|
||||||
return (
|
return (
|
||||||
jingrow.qb.from_(PressRole)
|
jingrow.qb.from_(JcloudeRole)
|
||||||
.select(
|
.select(
|
||||||
PressRole.name,
|
JcloudeRole.name,
|
||||||
PressRole.admin_access,
|
JcloudeRole.admin_access,
|
||||||
PressRole.allow_billing,
|
JcloudeRole.allow_billing,
|
||||||
PressRole.allow_apps,
|
JcloudeRole.allow_apps,
|
||||||
PressRole.allow_partner,
|
JcloudeRole.allow_partner,
|
||||||
PressRole.allow_site_creation,
|
JcloudeRole.allow_site_creation,
|
||||||
PressRole.allow_bench_creation,
|
JcloudeRole.allow_bench_creation,
|
||||||
PressRole.allow_server_creation,
|
JcloudeRole.allow_server_creation,
|
||||||
PressRole.allow_webhook_configuration,
|
JcloudeRole.allow_webhook_configuration,
|
||||||
PressRole.allow_dashboard,
|
JcloudeRole.allow_dashboard,
|
||||||
PressRole.allow_customer,
|
JcloudeRole.allow_customer,
|
||||||
PressRole.allow_leads,
|
JcloudeRole.allow_leads,
|
||||||
PressRole.allow_contribution,
|
JcloudeRole.allow_contribution,
|
||||||
)
|
)
|
||||||
.join(PressRoleUser)
|
.join(JcloudeRoleUser)
|
||||||
.on((PressRole.name == PressRoleUser.parent) & (PressRoleUser.user == jingrow.session.user))
|
.on((JcloudeRole.name == JcloudeRoleUser.parent) & (JcloudeRoleUser.user == jingrow.session.user))
|
||||||
.where(PressRole.team == get_current_team())
|
.where(JcloudeRole.team == get_current_team())
|
||||||
.run(as_dict=True)
|
.run(as_dict=True)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@ -39,7 +39,7 @@ if TYPE_CHECKING:
|
|||||||
from elasticsearch_dsl.response import AggResponse
|
from elasticsearch_dsl.response import AggResponse
|
||||||
from elasticsearch_dsl.response.aggs import FieldBucket, FieldBucketData
|
from elasticsearch_dsl.response.aggs import FieldBucket, FieldBucketData
|
||||||
|
|
||||||
from jcloude.jcloude.pagetype.jcloude_settings.jcloude_settings import PressSettings
|
from jcloude.jcloude.pagetype.jcloude_settings.jcloude_settings import JcloudeSettings
|
||||||
|
|
||||||
class Dataset(TypedDict):
|
class Dataset(TypedDict):
|
||||||
"""Single element of list of Datasets returned for stacked histogram chart"""
|
"""Single element of list of Datasets returned for stacked histogram chart"""
|
||||||
@ -366,7 +366,7 @@ class NginxRequestGroupByChart(StackedGroupByChart):
|
|||||||
|
|
||||||
def setup_search_filters(self):
|
def setup_search_filters(self):
|
||||||
super().setup_search_filters()
|
super().setup_search_filters()
|
||||||
jcloude_settings: PressSettings = jingrow.get_cached_pg("Jcloude Settings")
|
jcloude_settings: JcloudeSettings = jingrow.get_cached_pg("Jcloude Settings")
|
||||||
if not (
|
if not (
|
||||||
jcloude_settings.monitor_server
|
jcloude_settings.monitor_server
|
||||||
and (
|
and (
|
||||||
|
|||||||
@ -19,7 +19,7 @@ from jcloude.api.site import site_config, update_config
|
|||||||
from jcloude.utils import log_error
|
from jcloude.utils import log_error
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from jcloude.jcloude.pagetype.jcloude_settings.jcloude_settings import PressSettings
|
from jcloude.jcloude.pagetype.jcloude_settings.jcloude_settings import JcloudeSettings
|
||||||
|
|
||||||
|
|
||||||
class EmailLimitExceeded(TooManyRequestsError):
|
class EmailLimitExceeded(TooManyRequestsError):
|
||||||
@ -156,7 +156,7 @@ def validate_plan(secret_key):
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
def make_spamd_request(jcloude_settings: PressSettings, message: bytes):
|
def make_spamd_request(jcloude_settings: JcloudeSettings, message: bytes):
|
||||||
headers = {}
|
headers = {}
|
||||||
if jcloude_settings.spamd_api_key:
|
if jcloude_settings.spamd_api_key:
|
||||||
spamd_api_secret = get_decrypted_password("Jcloude Settings", "Jcloude Settings", "spamd_api_secret")
|
spamd_api_secret = get_decrypted_password("Jcloude Settings", "Jcloude Settings", "spamd_api_secret")
|
||||||
|
|||||||
@ -26,23 +26,23 @@ def get_notifications(
|
|||||||
if not filters:
|
if not filters:
|
||||||
filters = {}
|
filters = {}
|
||||||
|
|
||||||
PressNotification = jingrow.qb.PageType("Jcloude Notification")
|
JcloudeNotification = jingrow.qb.PageType("Jcloude Notification")
|
||||||
query = (
|
query = (
|
||||||
jingrow.qb.from_(PressNotification)
|
jingrow.qb.from_(JcloudeNotification)
|
||||||
.select(
|
.select(
|
||||||
PressNotification.name,
|
JcloudeNotification.name,
|
||||||
PressNotification.type,
|
JcloudeNotification.type,
|
||||||
PressNotification.read,
|
JcloudeNotification.read,
|
||||||
PressNotification.title,
|
JcloudeNotification.title,
|
||||||
PressNotification.message,
|
JcloudeNotification.message,
|
||||||
PressNotification.creation,
|
JcloudeNotification.creation,
|
||||||
PressNotification.is_addressed,
|
JcloudeNotification.is_addressed,
|
||||||
PressNotification.is_actionable,
|
JcloudeNotification.is_actionable,
|
||||||
PressNotification.document_type,
|
JcloudeNotification.document_type,
|
||||||
PressNotification.document_name,
|
JcloudeNotification.document_name,
|
||||||
)
|
)
|
||||||
.where(PressNotification.team == get_current_team())
|
.where(JcloudeNotification.team == get_current_team())
|
||||||
.orderby(PressNotification.creation, order=jingrow.qb.desc)
|
.orderby(JcloudeNotification.creation, order=jingrow.qb.desc)
|
||||||
.limit(limit_page_length)
|
.limit(limit_page_length)
|
||||||
.offset(limit_start)
|
.offset(limit_start)
|
||||||
)
|
)
|
||||||
@ -54,10 +54,10 @@ def get_notifications(
|
|||||||
resources.update(release_groups)
|
resources.update(release_groups)
|
||||||
|
|
||||||
if resources:
|
if resources:
|
||||||
query = query.where(PressNotification.reference_name.isin(resources))
|
query = query.where(JcloudeNotification.reference_name.isin(resources))
|
||||||
|
|
||||||
if filters.get("read") == "Unread":
|
if filters.get("read") == "Unread":
|
||||||
query = query.where(PressNotification.read == 0)
|
query = query.where(JcloudeNotification.read == 0)
|
||||||
|
|
||||||
notifications = query.run(as_dict=True)
|
notifications = query.run(as_dict=True)
|
||||||
|
|
||||||
|
|||||||
@ -53,22 +53,22 @@ def attempts(webhook: str):
|
|||||||
pg = jingrow.get_pg("Jcloude Webhook", webhook)
|
pg = jingrow.get_pg("Jcloude Webhook", webhook)
|
||||||
pg.has_permission("read")
|
pg.has_permission("read")
|
||||||
|
|
||||||
PressWebhookAttempt = jingrow.qb.PageType("Jcloude Webhook Attempt")
|
JcloudeWebhookAttempt = jingrow.qb.PageType("Jcloude Webhook Attempt")
|
||||||
PressWebhookLog = jingrow.qb.PageType("Jcloude Webhook Log")
|
JcloudeWebhookLog = jingrow.qb.PageType("Jcloude Webhook Log")
|
||||||
query = (
|
query = (
|
||||||
jingrow.qb.from_(PressWebhookAttempt)
|
jingrow.qb.from_(JcloudeWebhookAttempt)
|
||||||
.select(
|
.select(
|
||||||
PressWebhookAttempt.name,
|
JcloudeWebhookAttempt.name,
|
||||||
PressWebhookAttempt.endpoint,
|
JcloudeWebhookAttempt.endpoint,
|
||||||
PressWebhookLog.event,
|
JcloudeWebhookLog.event,
|
||||||
PressWebhookAttempt.status,
|
JcloudeWebhookAttempt.status,
|
||||||
PressWebhookAttempt.response_status_code,
|
JcloudeWebhookAttempt.response_status_code,
|
||||||
PressWebhookAttempt.timestamp,
|
JcloudeWebhookAttempt.timestamp,
|
||||||
)
|
)
|
||||||
.left_join(PressWebhookLog)
|
.left_join(JcloudeWebhookLog)
|
||||||
.on(PressWebhookAttempt.parent == PressWebhookLog.name)
|
.on(JcloudeWebhookAttempt.parent == JcloudeWebhookLog.name)
|
||||||
.where(PressWebhookAttempt.webhook == pg.name)
|
.where(JcloudeWebhookAttempt.webhook == pg.name)
|
||||||
.orderby(PressWebhookAttempt.timestamp, order=jingrow.qb.desc)
|
.orderby(JcloudeWebhookAttempt.timestamp, order=jingrow.qb.desc)
|
||||||
)
|
)
|
||||||
return query.run(as_dict=1)
|
return query.run(as_dict=1)
|
||||||
|
|
||||||
|
|||||||
@ -37,16 +37,16 @@ def api(scope: Literal["billing", "partner"]):
|
|||||||
team: Team = get_current_team(get_pg=True)
|
team: Team = get_current_team(get_pg=True)
|
||||||
if team.is_team_owner() or team.is_admin_user():
|
if team.is_team_owner() or team.is_admin_user():
|
||||||
return fn(*args, **kwargs)
|
return fn(*args, **kwargs)
|
||||||
PressRole = jingrow.qb.PageType("Jcloude Role")
|
JcloudeRole = jingrow.qb.PageType("Jcloude Role")
|
||||||
PressRoleUser = jingrow.qb.PageType("Jcloude Role User")
|
JcloudeRoleUser = jingrow.qb.PageType("Jcloude Role User")
|
||||||
has_permission = (
|
has_permission = (
|
||||||
jingrow.qb.from_(PressRole)
|
jingrow.qb.from_(JcloudeRole)
|
||||||
.inner_join(PressRoleUser)
|
.inner_join(JcloudeRoleUser)
|
||||||
.on(PressRoleUser.parent == PressRole.name)
|
.on(JcloudeRoleUser.parent == JcloudeRole.name)
|
||||||
.select(Count(PressRole.name).as_("count"))
|
.select(Count(JcloudeRole.name).as_("count"))
|
||||||
.where(PressRole.team == team.name)
|
.where(JcloudeRole.team == team.name)
|
||||||
.where(PressRole[key] == 1)
|
.where(JcloudeRole[key] == 1)
|
||||||
.where(PressRoleUser.user == jingrow.session.user)
|
.where(JcloudeRoleUser.user == jingrow.session.user)
|
||||||
.run(as_dict=True)
|
.run(as_dict=True)
|
||||||
.pop()
|
.pop()
|
||||||
.get("count")
|
.get("count")
|
||||||
@ -74,16 +74,16 @@ def action():
|
|||||||
team: Team = get_current_team(get_pg=True)
|
team: Team = get_current_team(get_pg=True)
|
||||||
if team.is_team_owner() or team.is_admin_user():
|
if team.is_team_owner() or team.is_admin_user():
|
||||||
return fn(self, *args, **kwargs)
|
return fn(self, *args, **kwargs)
|
||||||
PressRole = jingrow.qb.PageType("Jcloude Role")
|
JcloudeRole = jingrow.qb.PageType("Jcloude Role")
|
||||||
PressRoleUser = jingrow.qb.PageType("Jcloude Role User")
|
JcloudeRoleUser = jingrow.qb.PageType("Jcloude Role User")
|
||||||
has_permission = (
|
has_permission = (
|
||||||
jingrow.qb.from_(PressRole)
|
jingrow.qb.from_(JcloudeRole)
|
||||||
.inner_join(PressRoleUser)
|
.inner_join(JcloudeRoleUser)
|
||||||
.on(PressRoleUser.parent == PressRole.name)
|
.on(JcloudeRoleUser.parent == JcloudeRole.name)
|
||||||
.select(Count(PressRole.name).as_("count"))
|
.select(Count(JcloudeRole.name).as_("count"))
|
||||||
.where(PressRole.team == team.name)
|
.where(JcloudeRole.team == team.name)
|
||||||
.where(PressRole[key] == 1)
|
.where(JcloudeRole[key] == 1)
|
||||||
.where(PressRoleUser.user == jingrow.session.user)
|
.where(JcloudeRoleUser.user == jingrow.session.user)
|
||||||
.run(as_dict=True)
|
.run(as_dict=True)
|
||||||
.pop()
|
.pop()
|
||||||
.get("count")
|
.get("count")
|
||||||
@ -159,15 +159,15 @@ def base_query() -> QueryBuilder:
|
|||||||
"""
|
"""
|
||||||
Get a base query for Jcloude Role documents based on the current team context.
|
Get a base query for Jcloude Role documents based on the current team context.
|
||||||
"""
|
"""
|
||||||
PressRole = jingrow.qb.PageType("Jcloude Role")
|
JcloudeRole = jingrow.qb.PageType("Jcloude Role")
|
||||||
PressRoleUser = jingrow.qb.PageType("Jcloude Role User")
|
JcloudeRoleUser = jingrow.qb.PageType("Jcloude Role User")
|
||||||
return (
|
return (
|
||||||
jingrow.qb.from_(PressRole)
|
jingrow.qb.from_(JcloudeRole)
|
||||||
.select(PressRole.name)
|
.select(JcloudeRole.name)
|
||||||
.left_join(PressRoleUser)
|
.left_join(JcloudeRoleUser)
|
||||||
.on(PressRoleUser.parent == PressRole.name)
|
.on(JcloudeRoleUser.parent == JcloudeRole.name)
|
||||||
.where(PressRole.team == get_current_team())
|
.where(JcloudeRole.team == get_current_team())
|
||||||
.where(PressRoleUser.user == jingrow.session.user)
|
.where(JcloudeRoleUser.user == jingrow.session.user)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -11,33 +11,33 @@ def check(base_query: QueryBuilder, document_type: str, document_name: str) -> b
|
|||||||
|
|
||||||
|
|
||||||
def documents(base_query: QueryBuilder, document_type: str) -> list[str]:
|
def documents(base_query: QueryBuilder, document_type: str) -> list[str]:
|
||||||
PressRole = jingrow.qb.PageType("Jcloude Role")
|
JcloudeRole = jingrow.qb.PageType("Jcloude Role")
|
||||||
PressRoleResource = jingrow.qb.PageType("Jcloude Role Resource")
|
JcloudeRoleResource = jingrow.qb.PageType("Jcloude Role Resource")
|
||||||
return [
|
return [
|
||||||
pg.document_name
|
pg.document_name
|
||||||
for pg in base_query.inner_join(PressRoleResource)
|
for pg in base_query.inner_join(JcloudeRoleResource)
|
||||||
.on(
|
.on(
|
||||||
(PressRoleResource.parent == PressRole.name)
|
(JcloudeRoleResource.parent == JcloudeRole.name)
|
||||||
& (PressRoleResource.document_type == document_type)
|
& (JcloudeRoleResource.document_type == document_type)
|
||||||
& (Not(PressRoleResource.document_name.isnull()))
|
& (Not(JcloudeRoleResource.document_name.isnull()))
|
||||||
)
|
)
|
||||||
.select(PressRoleResource.document_name)
|
.select(JcloudeRoleResource.document_name)
|
||||||
.distinct()
|
.distinct()
|
||||||
.run(as_dict=True)
|
.run(as_dict=True)
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
def document(base_query: QueryBuilder, document_type: str, document_name: str) -> bool:
|
def document(base_query: QueryBuilder, document_type: str, document_name: str) -> bool:
|
||||||
PressRole = jingrow.qb.PageType("Jcloude Role")
|
JcloudeRole = jingrow.qb.PageType("Jcloude Role")
|
||||||
PressRoleResource = jingrow.qb.PageType("Jcloude Role Resource")
|
JcloudeRoleResource = jingrow.qb.PageType("Jcloude Role Resource")
|
||||||
return (
|
return (
|
||||||
base_query.inner_join(PressRoleResource)
|
base_query.inner_join(JcloudeRoleResource)
|
||||||
.on(
|
.on(
|
||||||
(PressRoleResource.parent == PressRole.name)
|
(JcloudeRoleResource.parent == JcloudeRole.name)
|
||||||
& (PressRoleResource.document_type == document_type)
|
& (JcloudeRoleResource.document_type == document_type)
|
||||||
& (PressRoleResource.document_name == document_name)
|
& (JcloudeRoleResource.document_name == document_name)
|
||||||
)
|
)
|
||||||
.select(Count(PressRole.name).as_("document_count"))
|
.select(Count(JcloudeRole.name).as_("document_count"))
|
||||||
.run(as_dict=True)
|
.run(as_dict=True)
|
||||||
.pop()
|
.pop()
|
||||||
.get("document_count")
|
.get("document_count")
|
||||||
|
|||||||
@ -4,10 +4,10 @@ from jingrow.query_builder.terms import QueryBuilder
|
|||||||
|
|
||||||
|
|
||||||
def check(base_query: QueryBuilder) -> bool:
|
def check(base_query: QueryBuilder) -> bool:
|
||||||
PressRole = jingrow.qb.PageType("Jcloude Role")
|
JcloudeRole = jingrow.qb.PageType("Jcloude Role")
|
||||||
return (
|
return (
|
||||||
base_query.where(PressRole.allow_apps == 1)
|
base_query.where(JcloudeRole.allow_apps == 1)
|
||||||
.select(Count(PressRole.name).as_("count"))
|
.select(Count(JcloudeRole.name).as_("count"))
|
||||||
.run(as_dict=True)
|
.run(as_dict=True)
|
||||||
.pop()
|
.pop()
|
||||||
.get("count")
|
.get("count")
|
||||||
|
|||||||
@ -4,17 +4,17 @@ from jingrow.query_builder.terms import QueryBuilder
|
|||||||
|
|
||||||
|
|
||||||
def check(base_query: QueryBuilder, document_name: str) -> bool:
|
def check(base_query: QueryBuilder, document_name: str) -> bool:
|
||||||
PressRole = jingrow.qb.PageType("Jcloude Role")
|
JcloudeRole = jingrow.qb.PageType("Jcloude Role")
|
||||||
PressRoleResource = jingrow.qb.PageType("Jcloude Role Resource")
|
JcloudeRoleResource = jingrow.qb.PageType("Jcloude Role Resource")
|
||||||
ServerSnapshot = jingrow.qb.PageType("Server Snapshot")
|
ServerSnapshot = jingrow.qb.PageType("Server Snapshot")
|
||||||
return (
|
return (
|
||||||
base_query.left_join(PressRoleResource)
|
base_query.left_join(JcloudeRoleResource)
|
||||||
.on(PressRoleResource.parent == PressRole.name)
|
.on(JcloudeRoleResource.parent == JcloudeRole.name)
|
||||||
.left_join(ServerSnapshot)
|
.left_join(ServerSnapshot)
|
||||||
.on(ServerSnapshot.name == document_name)
|
.on(ServerSnapshot.name == document_name)
|
||||||
.select(Count(PressRole.name).as_("count"))
|
.select(Count(JcloudeRole.name).as_("count"))
|
||||||
.where(PressRoleResource.document_type == "Server")
|
.where(JcloudeRoleResource.document_type == "Server")
|
||||||
.where(PressRoleResource.document_name == ServerSnapshot.app_server)
|
.where(JcloudeRoleResource.document_name == ServerSnapshot.app_server)
|
||||||
.run(as_dict=True)
|
.run(as_dict=True)
|
||||||
.pop()
|
.pop()
|
||||||
.get("count")
|
.get("count")
|
||||||
|
|||||||
@ -4,17 +4,17 @@ from jingrow.query_builder.terms import QueryBuilder
|
|||||||
|
|
||||||
|
|
||||||
def check(base_query: QueryBuilder, document_name: str) -> bool:
|
def check(base_query: QueryBuilder, document_name: str) -> bool:
|
||||||
PressRole = jingrow.qb.PageType("Jcloude Role")
|
JcloudeRole = jingrow.qb.PageType("Jcloude Role")
|
||||||
PressRoleResource = jingrow.qb.PageType("Jcloude Role Resource")
|
JcloudeRoleResource = jingrow.qb.PageType("Jcloude Role Resource")
|
||||||
SiteBackup = jingrow.qb.PageType("Site Backup")
|
SiteBackup = jingrow.qb.PageType("Site Backup")
|
||||||
return (
|
return (
|
||||||
base_query.left_join(PressRoleResource)
|
base_query.left_join(JcloudeRoleResource)
|
||||||
.on(PressRoleResource.parent == PressRole.name)
|
.on(JcloudeRoleResource.parent == JcloudeRole.name)
|
||||||
.left_join(SiteBackup)
|
.left_join(SiteBackup)
|
||||||
.on(SiteBackup.name == document_name)
|
.on(SiteBackup.name == document_name)
|
||||||
.select(Count(PressRole.name).as_("count"))
|
.select(Count(JcloudeRole.name).as_("count"))
|
||||||
.where(PressRoleResource.document_type == "Site")
|
.where(JcloudeRoleResource.document_type == "Site")
|
||||||
.where(PressRoleResource.document_name == SiteBackup.site)
|
.where(JcloudeRoleResource.document_name == SiteBackup.site)
|
||||||
.run(as_dict=True)
|
.run(as_dict=True)
|
||||||
.pop()
|
.pop()
|
||||||
.get("count")
|
.get("count")
|
||||||
|
|||||||
@ -4,10 +4,10 @@ from jingrow.query_builder.terms import QueryBuilder
|
|||||||
|
|
||||||
|
|
||||||
def check(base_query: QueryBuilder) -> bool:
|
def check(base_query: QueryBuilder) -> bool:
|
||||||
PressRole = jingrow.qb.PageType("Jcloude Role")
|
JcloudeRole = jingrow.qb.PageType("Jcloude Role")
|
||||||
return (
|
return (
|
||||||
base_query.where(PressRole.allow_webhook_configuration == 1)
|
base_query.where(JcloudeRole.allow_webhook_configuration == 1)
|
||||||
.select(Count(PressRole.name).as_("document_count"))
|
.select(Count(JcloudeRole.name).as_("document_count"))
|
||||||
.run(as_dict=True)
|
.run(as_dict=True)
|
||||||
.pop()
|
.pop()
|
||||||
.get("document_count")
|
.get("document_count")
|
||||||
|
|||||||
@ -25,7 +25,7 @@ class AccountRequest(Page):
|
|||||||
from jingrow.types import DF
|
from jingrow.types import DF
|
||||||
|
|
||||||
from jcloude.jcloude.pagetype.account_request_jcloude_role.account_request_jcloude_role import (
|
from jcloude.jcloude.pagetype.account_request_jcloude_role.account_request_jcloude_role import (
|
||||||
AccountRequestPressRole,
|
AccountRequestJcloudeRole,
|
||||||
)
|
)
|
||||||
|
|
||||||
agreed_to_partner_consent: DF.Check
|
agreed_to_partner_consent: DF.Check
|
||||||
@ -52,7 +52,7 @@ class AccountRequest(Page):
|
|||||||
otp_generated_at: DF.Datetime | None
|
otp_generated_at: DF.Datetime | None
|
||||||
phone_number: DF.Data | None
|
phone_number: DF.Data | None
|
||||||
plan: DF.Link | None
|
plan: DF.Link | None
|
||||||
jcloude_roles: DF.TableMultiSelect[AccountRequestPressRole]
|
jcloude_roles: DF.TableMultiSelect[AccountRequestJcloudeRole]
|
||||||
product_trial: DF.Link | None
|
product_trial: DF.Link | None
|
||||||
referral_source: DF.Data | None
|
referral_source: DF.Data | None
|
||||||
referrer_id: DF.Data | None
|
referrer_id: DF.Data | None
|
||||||
|
|||||||
@ -5,7 +5,7 @@
|
|||||||
from jingrow.model.page import Page
|
from jingrow.model.page import Page
|
||||||
|
|
||||||
|
|
||||||
class AccountRequestPressRole(Page):
|
class AccountRequestJcloudeRole(Page):
|
||||||
# begin: auto-generated types
|
# begin: auto-generated types
|
||||||
# This code is auto-generated. Do not modify anything in this block.
|
# This code is auto-generated. Do not modify anything in this block.
|
||||||
|
|
||||||
|
|||||||
@ -62,7 +62,7 @@ if TYPE_CHECKING:
|
|||||||
from jcloude.jcloude.pagetype.bench_update_app.bench_update_app import BenchUpdateApp
|
from jcloude.jcloude.pagetype.bench_update_app.bench_update_app import BenchUpdateApp
|
||||||
from jcloude.jcloude.pagetype.deploy_candidate.deploy_candidate import DeployCandidate
|
from jcloude.jcloude.pagetype.deploy_candidate.deploy_candidate import DeployCandidate
|
||||||
from jcloude.jcloude.pagetype.deploy_candidate_build.deploy_candidate_build import DeployCandidateBuild
|
from jcloude.jcloude.pagetype.deploy_candidate_build.deploy_candidate_build import DeployCandidateBuild
|
||||||
from jcloude.jcloude.pagetype.jcloude_settings.jcloude_settings import PressSettings
|
from jcloude.jcloude.pagetype.jcloude_settings.jcloude_settings import JcloudeSettings
|
||||||
|
|
||||||
SupervisorctlActions = Literal[
|
SupervisorctlActions = Literal[
|
||||||
"start",
|
"start",
|
||||||
@ -725,7 +725,7 @@ class Bench(Page):
|
|||||||
|
|
||||||
def get_memory_info(self) -> tuple[bool, float, float]:
|
def get_memory_info(self) -> tuple[bool, float, float]:
|
||||||
"""Returns a tuple: (is_info_available, free_memory_in_gb, required_memory_in_gb)"""
|
"""Returns a tuple: (is_info_available, free_memory_in_gb, required_memory_in_gb)"""
|
||||||
jcloude_settings: PressSettings = jingrow.get_cached_pg("Jcloude Settings")
|
jcloude_settings: JcloudeSettings = jingrow.get_cached_pg("Jcloude Settings")
|
||||||
required_memory_gb = jcloude_settings.minimum_rebuild_memory
|
required_memory_gb = jcloude_settings.minimum_rebuild_memory
|
||||||
|
|
||||||
free_memory_bytes = self.get_free_memory()
|
free_memory_bytes = self.get_free_memory()
|
||||||
|
|||||||
@ -46,7 +46,7 @@ from jcloude.utils import get_current_team
|
|||||||
from jcloude.utils.test import foreground_enqueue, foreground_enqueue_pg
|
from jcloude.utils.test import foreground_enqueue, foreground_enqueue_pg
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from jcloude.jcloude.pagetype.jcloude_settings.jcloude_settings import PressSettings
|
from jcloude.jcloude.pagetype.jcloude_settings.jcloude_settings import JcloudeSettings
|
||||||
from jcloude.jcloude.pagetype.team.team import Team
|
from jcloude.jcloude.pagetype.team.team import Team
|
||||||
|
|
||||||
|
|
||||||
@ -107,7 +107,7 @@ class TestBench(JingrowTestCase):
|
|||||||
high_memory_max = 4020
|
high_memory_max = 4020
|
||||||
low_memory_max = 1029
|
low_memory_max = 1029
|
||||||
|
|
||||||
jcloude_settings: PressSettings = jingrow.get_pg("Jcloude Settings")
|
jcloude_settings: JcloudeSettings = jingrow.get_pg("Jcloude Settings")
|
||||||
|
|
||||||
if not jcloude_settings.minimum_rebuild_memory:
|
if not jcloude_settings.minimum_rebuild_memory:
|
||||||
jcloude_settings.certbot_directory = "./"
|
jcloude_settings.certbot_directory = "./"
|
||||||
|
|||||||
@ -42,8 +42,8 @@ if typing.TYPE_CHECKING:
|
|||||||
|
|
||||||
from jcloude.jcloude.pagetype.log_server.log_server import LogServer
|
from jcloude.jcloude.pagetype.log_server.log_server import LogServer
|
||||||
from jcloude.jcloude.pagetype.monitor_server.monitor_server import MonitorServer
|
from jcloude.jcloude.pagetype.monitor_server.monitor_server import MonitorServer
|
||||||
from jcloude.jcloude.pagetype.jcloude_job.jcloude_job import PressJob
|
from jcloude.jcloude.pagetype.jcloude_job.jcloude_job import JcloudeJob
|
||||||
from jcloude.jcloude.pagetype.jcloude_settings.jcloude_settings import PressSettings
|
from jcloude.jcloude.pagetype.jcloude_settings.jcloude_settings import JcloudeSettings
|
||||||
from jcloude.jcloude.pagetype.server.server import BaseServer
|
from jcloude.jcloude.pagetype.server.server import BaseServer
|
||||||
from jcloude.jcloude.pagetype.server_plan.server_plan import ServerPlan
|
from jcloude.jcloude.pagetype.server_plan.server_plan import ServerPlan
|
||||||
from jcloude.jcloude.pagetype.virtual_machine.virtual_machine import VirtualMachine
|
from jcloude.jcloude.pagetype.virtual_machine.virtual_machine import VirtualMachine
|
||||||
@ -132,7 +132,7 @@ class Cluster(Page):
|
|||||||
self.validate_hetzner_api_token()
|
self.validate_hetzner_api_token()
|
||||||
|
|
||||||
def validate_hetzner_api_token(self):
|
def validate_hetzner_api_token(self):
|
||||||
settings: "PressSettings" = jingrow.get_single("Jcloude Settings")
|
settings: "JcloudeSettings" = jingrow.get_single("Jcloude Settings")
|
||||||
api_token = settings.get_password("hetzner_api_token")
|
api_token = settings.get_password("hetzner_api_token")
|
||||||
client = Client(token=api_token)
|
client = Client(token=api_token)
|
||||||
try:
|
try:
|
||||||
@ -150,7 +150,7 @@ class Cluster(Page):
|
|||||||
jingrow.throw(f"An error occurred while validating the API token: {e}")
|
jingrow.throw(f"An error occurred while validating the API token: {e}")
|
||||||
|
|
||||||
def validate_aws_credentials(self):
|
def validate_aws_credentials(self):
|
||||||
settings: "PressSettings" = jingrow.get_single("Jcloude Settings")
|
settings: "JcloudeSettings" = jingrow.get_single("Jcloude Settings")
|
||||||
if self.public and not self.aws_access_key_id:
|
if self.public and not self.aws_access_key_id:
|
||||||
self.aws_access_key_id = settings.aws_access_key_id
|
self.aws_access_key_id = settings.aws_access_key_id
|
||||||
self.aws_secret_access_key = settings.get_password("aws_secret_access_key")
|
self.aws_secret_access_key = settings.get_password("aws_secret_access_key")
|
||||||
@ -193,7 +193,7 @@ class Cluster(Page):
|
|||||||
]
|
]
|
||||||
|
|
||||||
# Get Hetzner API token from Jcloude Settings
|
# Get Hetzner API token from Jcloude Settings
|
||||||
settings: "PressSettings" = jingrow.get_single("Jcloude Settings")
|
settings: "JcloudeSettings" = jingrow.get_single("Jcloude Settings")
|
||||||
api_token = settings.get_password("hetzner_api_token")
|
api_token = settings.get_password("hetzner_api_token")
|
||||||
|
|
||||||
client = Client(token=api_token)
|
client = Client(token=api_token)
|
||||||
@ -893,7 +893,7 @@ class Cluster(Page):
|
|||||||
kms_key_id: str | None = None,
|
kms_key_id: str | None = None,
|
||||||
is_secondary: bool = False,
|
is_secondary: bool = False,
|
||||||
primary: str | None = None,
|
primary: str | None = None,
|
||||||
) -> tuple[BaseServer | MonitorServer | LogServer, PressJob]:
|
) -> tuple[BaseServer | MonitorServer | LogServer, JcloudeJob]:
|
||||||
"""Creates a server for the cluster
|
"""Creates a server for the cluster
|
||||||
|
|
||||||
temporary_server: If you are creating a temporary server for some special purpose, set this to True.
|
temporary_server: If you are creating a temporary server for some special purpose, set this to True.
|
||||||
|
|||||||
@ -63,7 +63,7 @@
|
|||||||
"fieldname": "status",
|
"fieldname": "status",
|
||||||
"fieldtype": "Select",
|
"fieldtype": "Select",
|
||||||
"label": "Status",
|
"label": "Status",
|
||||||
"options": "Validating\nConfirmed\nAcknowledged\nInvestigating\nResolved\nAuto-Resolved\nPress-Resolved"
|
"options": "Validating\nConfirmed\nAcknowledged\nInvestigating\nResolved\nAuto-Resolved\nJcloude-Resolved"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"default": "Database Down",
|
"default": "Database Down",
|
||||||
|
|||||||
@ -43,7 +43,7 @@ if TYPE_CHECKING:
|
|||||||
IncidentSettingsUser,
|
IncidentSettingsUser,
|
||||||
)
|
)
|
||||||
from jcloude.jcloude.pagetype.monitor_server.monitor_server import MonitorServer
|
from jcloude.jcloude.pagetype.monitor_server.monitor_server import MonitorServer
|
||||||
from jcloude.jcloude.pagetype.jcloude_settings.jcloude_settings import PressSettings
|
from jcloude.jcloude.pagetype.jcloude_settings.jcloude_settings import JcloudeSettings
|
||||||
from jcloude.jcloude.pagetype.server.server import Server
|
from jcloude.jcloude.pagetype.server.server import Server
|
||||||
|
|
||||||
INCIDENT_ALERT = "Sites Down" # TODO: make it a field or child table somewhere #
|
INCIDENT_ALERT = "Sites Down" # TODO: make it a field or child table somewhere #
|
||||||
@ -367,7 +367,7 @@ class Incident(WebsiteGenerator):
|
|||||||
|
|
||||||
@cached_property
|
@cached_property
|
||||||
def monitor_server(self) -> MonitorServer:
|
def monitor_server(self) -> MonitorServer:
|
||||||
jcloude_settings: PressSettings = jingrow.get_cached_pg("Jcloude Settings")
|
jcloude_settings: JcloudeSettings = jingrow.get_cached_pg("Jcloude Settings")
|
||||||
if not (monitor_url := jcloude_settings.monitor_server):
|
if not (monitor_url := jcloude_settings.monitor_server):
|
||||||
jingrow.throw("Monitor Server not set in Jcloude Settings")
|
jingrow.throw("Monitor Server not set in Jcloude Settings")
|
||||||
return jingrow.get_cached_pg("Monitor Server", monitor_url)
|
return jingrow.get_cached_pg("Monitor Server", monitor_url)
|
||||||
@ -482,12 +482,12 @@ class Incident(WebsiteGenerator):
|
|||||||
|
|
||||||
@property
|
@property
|
||||||
def twilio_phone_number(self):
|
def twilio_phone_number(self):
|
||||||
jcloude_settings: PressSettings = jingrow.get_cached_pg("Jcloude Settings")
|
jcloude_settings: JcloudeSettings = jingrow.get_cached_pg("Jcloude Settings")
|
||||||
return Phone(jcloude_settings.twilio_phone_number)
|
return Phone(jcloude_settings.twilio_phone_number)
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def twilio_client(self):
|
def twilio_client(self):
|
||||||
jcloude_settings: PressSettings = jingrow.get_cached_pg("Jcloude Settings")
|
jcloude_settings: JcloudeSettings = jingrow.get_cached_pg("Jcloude Settings")
|
||||||
try:
|
try:
|
||||||
return jcloude_settings.twilio_client
|
return jcloude_settings.twilio_client
|
||||||
except Exception:
|
except Exception:
|
||||||
|
|||||||
@ -6,7 +6,7 @@ from __future__ import annotations
|
|||||||
from jingrow.model.page import Page
|
from jingrow.model.page import Page
|
||||||
|
|
||||||
|
|
||||||
class PressFeedback(Page):
|
class JcloudeFeedback(Page):
|
||||||
# begin: auto-generated types
|
# begin: auto-generated types
|
||||||
# This code is auto-generated. Do not modify anything in this block.
|
# This code is auto-generated. Do not modify anything in this block.
|
||||||
|
|
||||||
|
|||||||
@ -6,5 +6,5 @@
|
|||||||
from jingrow.tests.utils import JingrowTestCase
|
from jingrow.tests.utils import JingrowTestCase
|
||||||
|
|
||||||
|
|
||||||
class TestPressFeedback(JingrowTestCase):
|
class TestJcloudeFeedback(JingrowTestCase):
|
||||||
pass
|
pass
|
||||||
|
|||||||
@ -10,7 +10,7 @@ from jingrow.utils import add_days, add_to_date
|
|||||||
from jcloude.jcloude.pagetype.jcloude_job_step.jcloude_job_step import safe_exec
|
from jcloude.jcloude.pagetype.jcloude_job_step.jcloude_job_step import safe_exec
|
||||||
|
|
||||||
|
|
||||||
class PressJob(Page):
|
class JcloudeJob(Page):
|
||||||
# begin: auto-generated types
|
# begin: auto-generated types
|
||||||
# This code is auto-generated. Do not modify anything in this block.
|
# This code is auto-generated. Do not modify anything in this block.
|
||||||
|
|
||||||
@ -232,7 +232,7 @@ def fail_stuck_jcloude_jobs():
|
|||||||
limit=100,
|
limit=100,
|
||||||
)
|
)
|
||||||
for job_name in jobs:
|
for job_name in jobs:
|
||||||
job = PressJob("Jcloude Job", job_name)
|
job = JcloudeJob("Jcloude Job", job_name)
|
||||||
job.force_fail()
|
job.force_fail()
|
||||||
jingrow.db.commit()
|
jingrow.db.commit()
|
||||||
|
|
||||||
|
|||||||
@ -5,5 +5,5 @@
|
|||||||
from jingrow.tests.utils import JingrowTestCase
|
from jingrow.tests.utils import JingrowTestCase
|
||||||
|
|
||||||
|
|
||||||
class TestPressJob(JingrowTestCase):
|
class TestJcloudeJob(JingrowTestCase):
|
||||||
pass
|
pass
|
||||||
|
|||||||
@ -9,10 +9,10 @@ from jingrow.model.page import Page
|
|||||||
from jingrow.utils.safe_exec import safe_exec
|
from jingrow.utils.safe_exec import safe_exec
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from jcloude.jcloude.pagetype.jcloude_job.jcloude_job import PressJob
|
from jcloude.jcloude.pagetype.jcloude_job.jcloude_job import JcloudeJob
|
||||||
|
|
||||||
|
|
||||||
class PressJobStep(Page):
|
class JcloudeJobStep(Page):
|
||||||
# begin: auto-generated types
|
# begin: auto-generated types
|
||||||
# This code is auto-generated. Do not modify anything in this block.
|
# This code is auto-generated. Do not modify anything in this block.
|
||||||
|
|
||||||
@ -45,7 +45,7 @@ class PressJobStep(Page):
|
|||||||
{"parent": self.job_type, "step_name": self.step_name},
|
{"parent": self.job_type, "step_name": self.step_name},
|
||||||
"script",
|
"script",
|
||||||
)
|
)
|
||||||
job: PressJob = jingrow.get_pg("Jcloude Job", self.job)
|
job: JcloudeJob = jingrow.get_pg("Jcloude Job", self.job)
|
||||||
arguments = json.loads(job.arguments)
|
arguments = json.loads(job.arguments)
|
||||||
try:
|
try:
|
||||||
local = {"arguments": jingrow._dict(arguments), "result": None, "pg": job}
|
local = {"arguments": jingrow._dict(arguments), "result": None, "pg": job}
|
||||||
|
|||||||
@ -5,5 +5,5 @@
|
|||||||
from jingrow.tests.utils import JingrowTestCase
|
from jingrow.tests.utils import JingrowTestCase
|
||||||
|
|
||||||
|
|
||||||
class TestPressJobStep(JingrowTestCase):
|
class TestJcloudeJobStep(JingrowTestCase):
|
||||||
pass
|
pass
|
||||||
|
|||||||
@ -5,7 +5,7 @@
|
|||||||
from jingrow.model.page import Page
|
from jingrow.model.page import Page
|
||||||
|
|
||||||
|
|
||||||
class PressJobType(Page):
|
class JcloudeJobType(Page):
|
||||||
# begin: auto-generated types
|
# begin: auto-generated types
|
||||||
# This code is auto-generated. Do not modify anything in this block.
|
# This code is auto-generated. Do not modify anything in this block.
|
||||||
|
|
||||||
@ -14,11 +14,11 @@ class PressJobType(Page):
|
|||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from jingrow.types import DF
|
from jingrow.types import DF
|
||||||
|
|
||||||
from jcloude.jcloude.pagetype.jcloude_job_type_step.jcloude_job_type_step import PressJobTypeStep
|
from jcloude.jcloude.pagetype.jcloude_job_type_step.jcloude_job_type_step import JcloudeJobTypeStep
|
||||||
|
|
||||||
callback_max_retry: DF.Int
|
callback_max_retry: DF.Int
|
||||||
callback_script: DF.Code | None
|
callback_script: DF.Code | None
|
||||||
steps: DF.Table[PressJobTypeStep]
|
steps: DF.Table[JcloudeJobTypeStep]
|
||||||
# end: auto-generated types
|
# end: auto-generated types
|
||||||
|
|
||||||
pass
|
pass
|
||||||
|
|||||||
@ -5,5 +5,5 @@
|
|||||||
from jingrow.tests.utils import JingrowTestCase
|
from jingrow.tests.utils import JingrowTestCase
|
||||||
|
|
||||||
|
|
||||||
class TestPressJobType(JingrowTestCase):
|
class TestJcloudeJobType(JingrowTestCase):
|
||||||
pass
|
pass
|
||||||
|
|||||||
@ -5,7 +5,7 @@
|
|||||||
from jingrow.model.page import Page
|
from jingrow.model.page import Page
|
||||||
|
|
||||||
|
|
||||||
class PressJobTypeStep(Page):
|
class JcloudeJobTypeStep(Page):
|
||||||
# begin: auto-generated types
|
# begin: auto-generated types
|
||||||
# This code is auto-generated. Do not modify anything in this block.
|
# This code is auto-generated. Do not modify anything in this block.
|
||||||
|
|
||||||
|
|||||||
@ -5,5 +5,5 @@
|
|||||||
from jingrow.tests.utils import JingrowTestCase
|
from jingrow.tests.utils import JingrowTestCase
|
||||||
|
|
||||||
|
|
||||||
class TestPressJobTypeStep(JingrowTestCase):
|
class TestJcloudeJobTypeStep(JingrowTestCase):
|
||||||
pass
|
pass
|
||||||
|
|||||||
@ -5,7 +5,7 @@ import jingrow
|
|||||||
from jingrow.model.page import Page
|
from jingrow.model.page import Page
|
||||||
|
|
||||||
|
|
||||||
class PressMethodPermission(Page):
|
class JcloudeMethodPermission(Page):
|
||||||
# begin: auto-generated types
|
# begin: auto-generated types
|
||||||
# This code is auto-generated. Do not modify anything in this block.
|
# This code is auto-generated. Do not modify anything in this block.
|
||||||
|
|
||||||
|
|||||||
@ -5,5 +5,5 @@
|
|||||||
from jingrow.tests.utils import JingrowTestCase
|
from jingrow.tests.utils import JingrowTestCase
|
||||||
|
|
||||||
|
|
||||||
class TestPressMethodPermission(JingrowTestCase):
|
class TestJcloudeMethodPermission(JingrowTestCase):
|
||||||
pass
|
pass
|
||||||
|
|||||||
@ -9,7 +9,7 @@ from jcloude.api.client import dashboard_whitelist
|
|||||||
from jcloude.jcloude.pagetype.communication_info.communication_info import get_communication_info
|
from jcloude.jcloude.pagetype.communication_info.communication_info import get_communication_info
|
||||||
|
|
||||||
|
|
||||||
class PressNotification(Page):
|
class JcloudeNotification(Page):
|
||||||
# begin: auto-generated types
|
# begin: auto-generated types
|
||||||
# This code is auto-generated. Do not modify anything in this block.
|
# This code is auto-generated. Do not modify anything in this block.
|
||||||
|
|
||||||
|
|||||||
@ -17,7 +17,7 @@ from jcloude.jcloude.pagetype.release_group.test_release_group import (
|
|||||||
from jcloude.jcloude.pagetype.site.test_site import create_test_bench, create_test_site
|
from jcloude.jcloude.pagetype.site.test_site import create_test_bench, create_test_site
|
||||||
|
|
||||||
|
|
||||||
class TestPressNotification(JingrowTestCase):
|
class TestJcloudeNotification(JingrowTestCase):
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
super().setUp()
|
super().setUp()
|
||||||
|
|
||||||
|
|||||||
@ -13,7 +13,7 @@ DEFAULT_PERMISSIONS = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
class PressPermissionGroup(Page):
|
class JcloudePermissionGroup(Page):
|
||||||
# begin: auto-generated types
|
# begin: auto-generated types
|
||||||
# This code is auto-generated. Do not modify anything in this block.
|
# This code is auto-generated. Do not modify anything in this block.
|
||||||
|
|
||||||
@ -23,13 +23,13 @@ class PressPermissionGroup(Page):
|
|||||||
from jingrow.types import DF
|
from jingrow.types import DF
|
||||||
|
|
||||||
from jcloude.jcloude.pagetype.jcloude_permission_group_user.jcloude_permission_group_user import (
|
from jcloude.jcloude.pagetype.jcloude_permission_group_user.jcloude_permission_group_user import (
|
||||||
PressPermissionGroupUser,
|
JcloudePermissionGroupUser,
|
||||||
)
|
)
|
||||||
|
|
||||||
permissions: DF.JSON | None
|
permissions: DF.JSON | None
|
||||||
team: DF.Link
|
team: DF.Link
|
||||||
title: DF.Data
|
title: DF.Data
|
||||||
users: DF.Table[PressPermissionGroupUser]
|
users: DF.Table[JcloudePermissionGroupUser]
|
||||||
# end: auto-generated types
|
# end: auto-generated types
|
||||||
|
|
||||||
dashboard_fields: ClassVar = ["title", "users"]
|
dashboard_fields: ClassVar = ["title", "users"]
|
||||||
|
|||||||
@ -11,7 +11,7 @@ from jcloude.jcloude.pagetype.jcloude_permission_group.jcloude_permission_group
|
|||||||
from jcloude.jcloude.pagetype.team.test_team import create_test_team
|
from jcloude.jcloude.pagetype.team.test_team import create_test_team
|
||||||
|
|
||||||
|
|
||||||
class TestPressPermissionGroup(JingrowTestCase):
|
class TestJcloudePermissionGroup(JingrowTestCase):
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
super().setUp()
|
super().setUp()
|
||||||
|
|
||||||
|
|||||||
@ -5,7 +5,7 @@
|
|||||||
from jingrow.model.page import Page
|
from jingrow.model.page import Page
|
||||||
|
|
||||||
|
|
||||||
class PressPermissionGroupUser(Page):
|
class JcloudePermissionGroupUser(Page):
|
||||||
# begin: auto-generated types
|
# begin: auto-generated types
|
||||||
# This code is auto-generated. Do not modify anything in this block.
|
# This code is auto-generated. Do not modify anything in this block.
|
||||||
|
|
||||||
|
|||||||
@ -16,7 +16,7 @@ if TYPE_CHECKING:
|
|||||||
from jcloude.jcloude.pagetype.team.team import Team
|
from jcloude.jcloude.pagetype.team.team import Team
|
||||||
|
|
||||||
|
|
||||||
class PressRole(Page):
|
class JcloudeRole(Page):
|
||||||
# begin: auto-generated types
|
# begin: auto-generated types
|
||||||
# This code is auto-generated. Do not modify anything in this block.
|
# This code is auto-generated. Do not modify anything in this block.
|
||||||
|
|
||||||
@ -25,8 +25,8 @@ class PressRole(Page):
|
|||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from jingrow.types import DF
|
from jingrow.types import DF
|
||||||
|
|
||||||
from jcloude.jcloude.pagetype.jcloude_role_resource.jcloude_role_resource import PressRoleResource
|
from jcloude.jcloude.pagetype.jcloude_role_resource.jcloude_role_resource import JcloudeRoleResource
|
||||||
from jcloude.jcloude.pagetype.jcloude_role_user.jcloude_role_user import PressRoleUser
|
from jcloude.jcloude.pagetype.jcloude_role_user.jcloude_role_user import JcloudeRoleUser
|
||||||
|
|
||||||
admin_access: DF.Check
|
admin_access: DF.Check
|
||||||
allow_apps: DF.Check
|
allow_apps: DF.Check
|
||||||
@ -40,10 +40,10 @@ class PressRole(Page):
|
|||||||
allow_server_creation: DF.Check
|
allow_server_creation: DF.Check
|
||||||
allow_site_creation: DF.Check
|
allow_site_creation: DF.Check
|
||||||
allow_webhook_configuration: DF.Check
|
allow_webhook_configuration: DF.Check
|
||||||
resources: DF.Table[PressRoleResource]
|
resources: DF.Table[JcloudeRoleResource]
|
||||||
team: DF.Link
|
team: DF.Link
|
||||||
title: DF.Data
|
title: DF.Data
|
||||||
users: DF.Table[PressRoleUser]
|
users: DF.Table[JcloudeRoleUser]
|
||||||
# end: auto-generated types
|
# end: auto-generated types
|
||||||
|
|
||||||
dashboard_fields = (
|
dashboard_fields = (
|
||||||
|
|||||||
@ -6,5 +6,5 @@ import jingrow
|
|||||||
|
|
||||||
def execute():
|
def execute():
|
||||||
jingrow.db.sql(
|
jingrow.db.sql(
|
||||||
"UPDATE `tabPress Role` SET allow_billing = enable_billing, allow_apps = enable_apps"
|
"UPDATE `tabJcloude Role` SET allow_billing = enable_billing, allow_apps = enable_apps"
|
||||||
)
|
)
|
||||||
|
|||||||
@ -8,7 +8,7 @@ from jingrow.tests.utils import JingrowTestCase
|
|||||||
from jcloude.jcloude.pagetype.team.test_team import create_test_team
|
from jcloude.jcloude.pagetype.team.test_team import create_test_team
|
||||||
|
|
||||||
|
|
||||||
class TestPressRole(JingrowTestCase):
|
class TestJcloudeRole(JingrowTestCase):
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
jingrow.set_user("Administrator")
|
jingrow.set_user("Administrator")
|
||||||
jingrow.db.delete("Jcloude Role")
|
jingrow.db.delete("Jcloude Role")
|
||||||
|
|||||||
@ -8,7 +8,7 @@ from jingrow.model.page import Page
|
|||||||
from jcloude.api.client import dashboard_whitelist
|
from jcloude.api.client import dashboard_whitelist
|
||||||
|
|
||||||
|
|
||||||
class PressRolePermission(Page):
|
class JcloudeRolePermission(Page):
|
||||||
# begin: auto-generated types
|
# begin: auto-generated types
|
||||||
# This code is auto-generated. Do not modify anything in this block.
|
# This code is auto-generated. Do not modify anything in this block.
|
||||||
|
|
||||||
|
|||||||
@ -5,5 +5,5 @@
|
|||||||
from jingrow.tests.utils import JingrowTestCase
|
from jingrow.tests.utils import JingrowTestCase
|
||||||
|
|
||||||
|
|
||||||
class TestPressRolePermission(JingrowTestCase):
|
class TestJcloudeRolePermission(JingrowTestCase):
|
||||||
pass
|
pass
|
||||||
|
|||||||
@ -5,7 +5,7 @@
|
|||||||
from jingrow.model.page import Page
|
from jingrow.model.page import Page
|
||||||
|
|
||||||
|
|
||||||
class PressRoleResource(Page):
|
class JcloudeRoleResource(Page):
|
||||||
# begin: auto-generated types
|
# begin: auto-generated types
|
||||||
# This code is auto-generated. Do not modify anything in this block.
|
# This code is auto-generated. Do not modify anything in this block.
|
||||||
|
|
||||||
|
|||||||
@ -5,7 +5,7 @@
|
|||||||
from jingrow.model.page import Page
|
from jingrow.model.page import Page
|
||||||
|
|
||||||
|
|
||||||
class PressRoleUser(Page):
|
class JcloudeRoleUser(Page):
|
||||||
# begin: auto-generated types
|
# begin: auto-generated types
|
||||||
# This code is auto-generated. Do not modify anything in this block.
|
# This code is auto-generated. Do not modify anything in this block.
|
||||||
|
|
||||||
|
|||||||
@ -14,7 +14,7 @@ from jcloude.jcloude.pagetype.telegram_message.telegram_message import TelegramM
|
|||||||
from jcloude.telegram_utils import Telegram
|
from jcloude.telegram_utils import Telegram
|
||||||
|
|
||||||
|
|
||||||
class PressSettings(Page):
|
class JcloudeSettings(Page):
|
||||||
# begin: auto-generated types
|
# begin: auto-generated types
|
||||||
# This code is auto-generated. Do not modify anything in this block.
|
# This code is auto-generated. Do not modify anything in this block.
|
||||||
|
|
||||||
|
|||||||
@ -7,12 +7,12 @@ import typing
|
|||||||
import jingrow
|
import jingrow
|
||||||
|
|
||||||
if typing.TYPE_CHECKING:
|
if typing.TYPE_CHECKING:
|
||||||
from jcloude.jcloude.pagetype.jcloude_settings.jcloude_settings import PressSettings
|
from jcloude.jcloude.pagetype.jcloude_settings.jcloude_settings import JcloudeSettings
|
||||||
|
|
||||||
|
|
||||||
def execute():
|
def execute():
|
||||||
jingrow.reload_pagetype("Jcloude Settings")
|
jingrow.reload_pagetype("Jcloude Settings")
|
||||||
settings: PressSettings = jingrow.get_single("Jcloude Settings")
|
settings: JcloudeSettings = jingrow.get_single("Jcloude Settings")
|
||||||
|
|
||||||
if not settings.minimum_rebuild_memory:
|
if not settings.minimum_rebuild_memory:
|
||||||
settings.minimum_rebuild_memory = 2
|
settings.minimum_rebuild_memory = 2
|
||||||
|
|||||||
@ -46,5 +46,5 @@ def create_test_jcloude_settings():
|
|||||||
return settings
|
return settings
|
||||||
|
|
||||||
|
|
||||||
class TestPressSettings(JingrowTestCase):
|
class TestJcloudeSettings(JingrowTestCase):
|
||||||
pass
|
pass
|
||||||
|
|||||||
@ -5,7 +5,7 @@
|
|||||||
from jingrow.model.page import Page
|
from jingrow.model.page import Page
|
||||||
|
|
||||||
|
|
||||||
class PressTag(Page):
|
class JcloudeTag(Page):
|
||||||
# begin: auto-generated types
|
# begin: auto-generated types
|
||||||
# This code is auto-generated. Do not modify anything in this block.
|
# This code is auto-generated. Do not modify anything in this block.
|
||||||
|
|
||||||
|
|||||||
@ -21,5 +21,5 @@ def create_and_add_test_tag(name: str, pagetype: str, tag: str = "test_tag"):
|
|||||||
return test_tag
|
return test_tag
|
||||||
|
|
||||||
|
|
||||||
class TestPressTag(JingrowTestCase):
|
class TestJcloudeTag(JingrowTestCase):
|
||||||
pass
|
pass
|
||||||
|
|||||||
@ -8,7 +8,7 @@ from jingrow.model.page import Page
|
|||||||
ALLOWED_CONFIG_PERMS = ["global", "restricted"]
|
ALLOWED_CONFIG_PERMS = ["global", "restricted"]
|
||||||
|
|
||||||
|
|
||||||
class PressUserPermission(Page):
|
class JcloudeUserPermission(Page):
|
||||||
# begin: auto-generated types
|
# begin: auto-generated types
|
||||||
# This code is auto-generated. Do not modify anything in this block.
|
# This code is auto-generated. Do not modify anything in this block.
|
||||||
|
|
||||||
|
|||||||
@ -11,7 +11,7 @@ from jcloude.jcloude.pagetype.site.test_site import create_test_site
|
|||||||
from jcloude.jcloude.pagetype.team.test_team import create_test_team
|
from jcloude.jcloude.pagetype.team.test_team import create_test_team
|
||||||
|
|
||||||
|
|
||||||
class TestPressUserPermission(JingrowTestCase):
|
class TestJcloudeUserPermission(JingrowTestCase):
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
super().setUp()
|
super().setUp()
|
||||||
|
|
||||||
|
|||||||
@ -20,7 +20,7 @@ from jcloude.overrides import get_permission_query_conditions_for_pagetype
|
|||||||
from jcloude.utils import is_valid_hostname
|
from jcloude.utils import is_valid_hostname
|
||||||
|
|
||||||
|
|
||||||
class PressWebhook(Page):
|
class JcloudeWebhook(Page):
|
||||||
# begin: auto-generated types
|
# begin: auto-generated types
|
||||||
# This code is auto-generated. Do not modify anything in this block.
|
# This code is auto-generated. Do not modify anything in this block.
|
||||||
|
|
||||||
@ -30,12 +30,12 @@ class PressWebhook(Page):
|
|||||||
from jingrow.types import DF
|
from jingrow.types import DF
|
||||||
|
|
||||||
from jcloude.jcloude.pagetype.jcloude_webhook_selected_event.jcloude_webhook_selected_event import (
|
from jcloude.jcloude.pagetype.jcloude_webhook_selected_event.jcloude_webhook_selected_event import (
|
||||||
PressWebhookSelectedEvent,
|
JcloudeWebhookSelectedEvent,
|
||||||
)
|
)
|
||||||
|
|
||||||
enabled: DF.Check
|
enabled: DF.Check
|
||||||
endpoint: DF.Data
|
endpoint: DF.Data
|
||||||
events: DF.Table[PressWebhookSelectedEvent]
|
events: DF.Table[JcloudeWebhookSelectedEvent]
|
||||||
secret: DF.Data
|
secret: DF.Data
|
||||||
team: DF.Link
|
team: DF.Link
|
||||||
# end: auto-generated types
|
# end: auto-generated types
|
||||||
@ -164,7 +164,7 @@ class PressWebhook(Page):
|
|||||||
|
|
||||||
@dashboard_whitelist()
|
@dashboard_whitelist()
|
||||||
def delete(self):
|
def delete(self):
|
||||||
jingrow.db.sql("delete from `tabPress Webhook Attempt` where webhook = %s", (self.name,))
|
jingrow.db.sql("delete from `tabJcloude Webhook Attempt` where webhook = %s", (self.name,))
|
||||||
jingrow.delete_pg("Jcloude Webhook", self.name)
|
jingrow.delete_pg("Jcloude Webhook", self.name)
|
||||||
|
|
||||||
|
|
||||||
@ -176,7 +176,7 @@ def auto_disable_high_delivery_failure_webhooks():
|
|||||||
data = jingrow.db.sql(
|
data = jingrow.db.sql(
|
||||||
"""
|
"""
|
||||||
SELECT `endpoint`
|
SELECT `endpoint`
|
||||||
FROM `tabPress Webhook Attempt`
|
FROM `tabJcloude Webhook Attempt`
|
||||||
WHERE `creation` >= NOW() - INTERVAL 1 HOUR
|
WHERE `creation` >= NOW() - INTERVAL 1 HOUR
|
||||||
GROUP BY `endpoint`
|
GROUP BY `endpoint`
|
||||||
HAVING (COUNT(CASE WHEN `status` = 'Failed' THEN 1 END) / COUNT(*)) * 100 > 70;
|
HAVING (COUNT(CASE WHEN `status` = 'Failed' THEN 1 END) / COUNT(*)) * 100 > 70;
|
||||||
|
|||||||
@ -5,5 +5,5 @@
|
|||||||
from jingrow.tests.utils import JingrowTestCase
|
from jingrow.tests.utils import JingrowTestCase
|
||||||
|
|
||||||
|
|
||||||
class TestPressWebhook(JingrowTestCase):
|
class TestJcloudeWebhook(JingrowTestCase):
|
||||||
pass
|
pass
|
||||||
|
|||||||
@ -7,7 +7,7 @@ import jingrow
|
|||||||
from jingrow.model.page import Page
|
from jingrow.model.page import Page
|
||||||
|
|
||||||
|
|
||||||
class PressWebhookAttempt(Page):
|
class JcloudeWebhookAttempt(Page):
|
||||||
# begin: auto-generated types
|
# begin: auto-generated types
|
||||||
# This code is auto-generated. Do not modify anything in this block.
|
# This code is auto-generated. Do not modify anything in this block.
|
||||||
|
|
||||||
|
|||||||
@ -5,5 +5,5 @@
|
|||||||
from jingrow.tests.utils import JingrowTestCase
|
from jingrow.tests.utils import JingrowTestCase
|
||||||
|
|
||||||
|
|
||||||
class TestPressWebhookAttempt(JingrowTestCase):
|
class TestJcloudeWebhookAttempt(JingrowTestCase):
|
||||||
pass
|
pass
|
||||||
|
|||||||
@ -5,7 +5,7 @@
|
|||||||
from jingrow.model.page import Page
|
from jingrow.model.page import Page
|
||||||
|
|
||||||
|
|
||||||
class PressWebhookEvent(Page):
|
class JcloudeWebhookEvent(Page):
|
||||||
# begin: auto-generated types
|
# begin: auto-generated types
|
||||||
# This code is auto-generated. Do not modify anything in this block.
|
# This code is auto-generated. Do not modify anything in this block.
|
||||||
|
|
||||||
|
|||||||
@ -5,5 +5,5 @@
|
|||||||
from jingrow.tests.utils import JingrowTestCase
|
from jingrow.tests.utils import JingrowTestCase
|
||||||
|
|
||||||
|
|
||||||
class TestPressWebhookEvent(JingrowTestCase):
|
class TestJcloudeWebhookEvent(JingrowTestCase):
|
||||||
pass
|
pass
|
||||||
|
|||||||
@ -13,7 +13,7 @@ from jingrow.utils import add_to_date, now
|
|||||||
from jcloude.overrides import get_permission_query_conditions_for_pagetype
|
from jcloude.overrides import get_permission_query_conditions_for_pagetype
|
||||||
|
|
||||||
|
|
||||||
class PressWebhookLog(Page):
|
class JcloudeWebhookLog(Page):
|
||||||
# begin: auto-generated types
|
# begin: auto-generated types
|
||||||
# This code is auto-generated. Do not modify anything in this block.
|
# This code is auto-generated. Do not modify anything in this block.
|
||||||
|
|
||||||
@ -22,9 +22,9 @@ class PressWebhookLog(Page):
|
|||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from jingrow.types import DF
|
from jingrow.types import DF
|
||||||
|
|
||||||
from jcloude.jcloude.pagetype.jcloude_webhook_attempt.jcloude_webhook_attempt import PressWebhookAttempt
|
from jcloude.jcloude.pagetype.jcloude_webhook_attempt.jcloude_webhook_attempt import JcloudeWebhookAttempt
|
||||||
|
|
||||||
attempts: DF.Table[PressWebhookAttempt]
|
attempts: DF.Table[JcloudeWebhookAttempt]
|
||||||
event: DF.Link
|
event: DF.Link
|
||||||
next_retry_at: DF.Datetime | None
|
next_retry_at: DF.Datetime | None
|
||||||
request_payload: DF.JSON
|
request_payload: DF.JSON
|
||||||
@ -92,16 +92,16 @@ class PressWebhookLog(Page):
|
|||||||
|
|
||||||
def _process_webhook_call(self):
|
def _process_webhook_call(self):
|
||||||
try:
|
try:
|
||||||
PressWebhookSelectedEvent = jingrow.qb.PageType("Jcloude Webhook Selected Event")
|
JcloudeWebhookSelectedEvent = jingrow.qb.PageType("Jcloude Webhook Selected Event")
|
||||||
PressWebhook = jingrow.qb.PageType("Jcloude Webhook")
|
JcloudeWebhook = jingrow.qb.PageType("Jcloude Webhook")
|
||||||
query = (
|
query = (
|
||||||
jingrow.qb.from_(PressWebhookSelectedEvent)
|
jingrow.qb.from_(JcloudeWebhookSelectedEvent)
|
||||||
.select(PressWebhook.name, PressWebhook.endpoint, PressWebhook.secret)
|
.select(JcloudeWebhook.name, JcloudeWebhook.endpoint, JcloudeWebhook.secret)
|
||||||
.left_join(PressWebhook)
|
.left_join(JcloudeWebhook)
|
||||||
.on(PressWebhookSelectedEvent.parent == PressWebhook.name)
|
.on(JcloudeWebhookSelectedEvent.parent == JcloudeWebhook.name)
|
||||||
.where(PressWebhookSelectedEvent.event == self.event)
|
.where(JcloudeWebhookSelectedEvent.event == self.event)
|
||||||
.where(PressWebhook.team == self.team)
|
.where(JcloudeWebhook.team == self.team)
|
||||||
.where(PressWebhook.enabled == 1)
|
.where(JcloudeWebhook.enabled == 1)
|
||||||
)
|
)
|
||||||
webhooks = query.run(as_dict=True)
|
webhooks = query.run(as_dict=True)
|
||||||
payload = json.loads(self.request_payload)
|
payload = json.loads(self.request_payload)
|
||||||
|
|||||||
@ -5,5 +5,5 @@
|
|||||||
from jingrow.tests.utils import JingrowTestCase
|
from jingrow.tests.utils import JingrowTestCase
|
||||||
|
|
||||||
|
|
||||||
class TestPressWebhookLog(JingrowTestCase):
|
class TestJcloudeWebhookLog(JingrowTestCase):
|
||||||
pass
|
pass
|
||||||
|
|||||||
@ -5,7 +5,7 @@
|
|||||||
from jingrow.model.page import Page
|
from jingrow.model.page import Page
|
||||||
|
|
||||||
|
|
||||||
class PressWebhookSelectedEvent(Page):
|
class JcloudeWebhookSelectedEvent(Page):
|
||||||
# begin: auto-generated types
|
# begin: auto-generated types
|
||||||
# This code is auto-generated. Do not modify anything in this block.
|
# This code is auto-generated. Do not modify anything in this block.
|
||||||
|
|
||||||
|
|||||||
@ -53,7 +53,7 @@ if typing.TYPE_CHECKING:
|
|||||||
from jcloude.jcloude.pagetype.database_server.database_server import DatabaseServer
|
from jcloude.jcloude.pagetype.database_server.database_server import DatabaseServer
|
||||||
from jcloude.jcloude.pagetype.mariadb_variable.mariadb_variable import MariaDBVariable
|
from jcloude.jcloude.pagetype.mariadb_variable.mariadb_variable import MariaDBVariable
|
||||||
from jcloude.jcloude.pagetype.nfs_volume_detachment.nfs_volume_detachment import NFSVolumeDetachment
|
from jcloude.jcloude.pagetype.nfs_volume_detachment.nfs_volume_detachment import NFSVolumeDetachment
|
||||||
from jcloude.jcloude.pagetype.jcloude_job.jcloude_job import PressJob
|
from jcloude.jcloude.pagetype.jcloude_job.jcloude_job import JcloudeJob
|
||||||
from jcloude.jcloude.pagetype.release_group.release_group import ReleaseGroup
|
from jcloude.jcloude.pagetype.release_group.release_group import ReleaseGroup
|
||||||
from jcloude.jcloude.pagetype.server_mount.server_mount import ServerMount
|
from jcloude.jcloude.pagetype.server_mount.server_mount import ServerMount
|
||||||
from jcloude.jcloude.pagetype.server_plan.server_plan import ServerPlan
|
from jcloude.jcloude.pagetype.server_plan.server_plan import ServerPlan
|
||||||
@ -1152,7 +1152,7 @@ class BaseServer(Page, TagHelpers):
|
|||||||
def create_image(self):
|
def create_image(self):
|
||||||
self.run_jcloude_job("Create Server Snapshot")
|
self.run_jcloude_job("Create Server Snapshot")
|
||||||
|
|
||||||
def run_jcloude_job(self, job_name, arguments=None) -> PressJob:
|
def run_jcloude_job(self, job_name, arguments=None) -> JcloudeJob:
|
||||||
if arguments is None:
|
if arguments is None:
|
||||||
arguments = {}
|
arguments = {}
|
||||||
return jingrow.get_pg(
|
return jingrow.get_pg(
|
||||||
|
|||||||
@ -13,7 +13,7 @@ from time import time
|
|||||||
import jingrow
|
import jingrow
|
||||||
import pytz
|
import pytz
|
||||||
|
|
||||||
from jcloude.jcloude.pagetype.jcloude_settings.jcloude_settings import PressSettings
|
from jcloude.jcloude.pagetype.jcloude_settings.jcloude_settings import JcloudeSettings
|
||||||
from jcloude.jcloude.pagetype.remote_file.remote_file import delete_remote_backup_objects
|
from jcloude.jcloude.pagetype.remote_file.remote_file import delete_remote_backup_objects
|
||||||
from jcloude.jcloude.pagetype.site.site import Literal, Site
|
from jcloude.jcloude.pagetype.site.site import Literal, Site
|
||||||
from jcloude.jcloude.pagetype.site_backup.site_backup import SiteBackup
|
from jcloude.jcloude.pagetype.site_backup.site_backup import SiteBackup
|
||||||
@ -256,7 +256,7 @@ class ScheduledBackupJob:
|
|||||||
or 6
|
or 6
|
||||||
)
|
)
|
||||||
|
|
||||||
self.offsite_setup = PressSettings.is_offsite_setup()
|
self.offsite_setup = JcloudeSettings.is_offsite_setup()
|
||||||
self.server_time = datetime.now()
|
self.server_time = datetime.now()
|
||||||
self.sites = Site.get_sites_for_backup(self.interval, backup_type=self.backup_type)
|
self.sites = Site.get_sites_for_backup(self.interval, backup_type=self.backup_type)
|
||||||
if self.backup_type == "Logical":
|
if self.backup_type == "Logical":
|
||||||
|
|||||||
@ -383,14 +383,14 @@ class Team(Page):
|
|||||||
if member_to_remove:
|
if member_to_remove:
|
||||||
self.remove(member_to_remove)
|
self.remove(member_to_remove)
|
||||||
|
|
||||||
PressRole = jingrow.qb.PageType("Jcloude Role")
|
JcloudeRole = jingrow.qb.PageType("Jcloude Role")
|
||||||
PressRoleUser = jingrow.qb.PageType("Jcloude Role User")
|
JcloudeRoleUser = jingrow.qb.PageType("Jcloude Role User")
|
||||||
roles = (
|
roles = (
|
||||||
jingrow.qb.from_(PressRole)
|
jingrow.qb.from_(JcloudeRole)
|
||||||
.join(PressRoleUser)
|
.join(JcloudeRoleUser)
|
||||||
.on(PressRole.name == PressRoleUser.parent)
|
.on(JcloudeRole.name == JcloudeRoleUser.parent)
|
||||||
.where(PressRoleUser.user == member)
|
.where(JcloudeRoleUser.user == member)
|
||||||
.select(PressRole.name)
|
.select(JcloudeRole.name)
|
||||||
.run(as_dict=True, pluck="name")
|
.run(as_dict=True, pluck="name")
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -839,16 +839,16 @@ class Team(Page):
|
|||||||
"""
|
"""
|
||||||
Checks if the current user has admin access in the team via roles.
|
Checks if the current user has admin access in the team via roles.
|
||||||
"""
|
"""
|
||||||
PressRole = jingrow.qb.PageType("Jcloude Role")
|
JcloudeRole = jingrow.qb.PageType("Jcloude Role")
|
||||||
PressRoleUser = jingrow.qb.PageType("Jcloude Role User")
|
JcloudeRoleUser = jingrow.qb.PageType("Jcloude Role User")
|
||||||
return (
|
return (
|
||||||
jingrow.qb.from_(PressRoleUser)
|
jingrow.qb.from_(JcloudeRoleUser)
|
||||||
.left_join(PressRole)
|
.left_join(JcloudeRole)
|
||||||
.on(PressRole.name == PressRoleUser.parent)
|
.on(JcloudeRole.name == JcloudeRoleUser.parent)
|
||||||
.select(Count(PressRoleUser.name).as_("count"))
|
.select(Count(JcloudeRoleUser.name).as_("count"))
|
||||||
.where(PressRole.team == self.name)
|
.where(JcloudeRole.team == self.name)
|
||||||
.where(PressRoleUser.user == jingrow.session.user)
|
.where(JcloudeRoleUser.user == jingrow.session.user)
|
||||||
.where(PressRole.admin_access == 1)
|
.where(JcloudeRole.admin_access == 1)
|
||||||
.run(as_dict=1)
|
.run(as_dict=1)
|
||||||
.pop()
|
.pop()
|
||||||
.get("count", 0)
|
.get("count", 0)
|
||||||
@ -864,16 +864,16 @@ class Team(Page):
|
|||||||
def invite_team_member(self, email, roles=None):
|
def invite_team_member(self, email, roles=None):
|
||||||
from jingrow.utils.user import is_system_user
|
from jingrow.utils.user import is_system_user
|
||||||
|
|
||||||
PressRole = jingrow.qb.PageType("Jcloude Role")
|
JcloudeRole = jingrow.qb.PageType("Jcloude Role")
|
||||||
PressRoleUser = jingrow.qb.PageType("Jcloude Role User")
|
JcloudeRoleUser = jingrow.qb.PageType("Jcloude Role User")
|
||||||
|
|
||||||
has_admin_access = (
|
has_admin_access = (
|
||||||
jingrow.qb.from_(PressRole)
|
jingrow.qb.from_(JcloudeRole)
|
||||||
.select(PressRole.name)
|
.select(JcloudeRole.name)
|
||||||
.join(PressRoleUser)
|
.join(JcloudeRoleUser)
|
||||||
.on((PressRole.name == PressRoleUser.parent) & (PressRoleUser.user == jingrow.session.user))
|
.on((JcloudeRole.name == JcloudeRoleUser.parent) & (JcloudeRoleUser.user == jingrow.session.user))
|
||||||
.where(PressRole.team == self.name)
|
.where(JcloudeRole.team == self.name)
|
||||||
.where(PressRole.admin_access == 1)
|
.where(JcloudeRole.admin_access == 1)
|
||||||
)
|
)
|
||||||
|
|
||||||
if not is_system_user() and jingrow.session.user != self.user and not has_admin_access.run():
|
if not is_system_user() and jingrow.session.user != self.user and not has_admin_access.run():
|
||||||
|
|||||||
@ -52,7 +52,7 @@ func logError(format string, args ...interface{}) {
|
|||||||
// waitForUser pauses execution and waits for user to jcloude Enter
|
// waitForUser pauses execution and waits for user to jcloude Enter
|
||||||
// This ensures error messages are visible before program exits
|
// This ensures error messages are visible before program exits
|
||||||
func waitForUser() {
|
func waitForUser() {
|
||||||
fmt.Println("\nPress Enter to exit...")
|
fmt.Println("\nJcloude Enter to exit...")
|
||||||
fmt.Scanln()
|
fmt.Scanln()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -99,7 +99,7 @@ func (m *Monitor) logFindings() {
|
|||||||
latest.Disk.WriteLatencyMillis)
|
latest.Disk.WriteLatencyMillis)
|
||||||
fmt.Fprintf(m.logFile, " Queue Depth: %.2f\n", latest.Disk.QueueDepth)
|
fmt.Fprintf(m.logFile, " Queue Depth: %.2f\n", latest.Disk.QueueDepth)
|
||||||
|
|
||||||
fmt.Fprintf(m.logFile, "\nPSI (Pressure Stall Information):\n")
|
fmt.Fprintf(m.logFile, "\nPSI (Jcloudeure Stall Information):\n")
|
||||||
fmt.Fprintf(m.logFile, " I/O: Some=%.2f%% Full=%.2f%%\n",
|
fmt.Fprintf(m.logFile, " I/O: Some=%.2f%% Full=%.2f%%\n",
|
||||||
latest.PSI.IO_SomeAvg10, latest.PSI.IO_FullAvg10)
|
latest.PSI.IO_SomeAvg10, latest.PSI.IO_FullAvg10)
|
||||||
fmt.Fprintf(m.logFile, " Memory: Some=%.2f%% Full=%.2f%%\n",
|
fmt.Fprintf(m.logFile, " Memory: Some=%.2f%% Full=%.2f%%\n",
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user