1
0
mirror of https://github.com/altlinux/admc.git synced 2025-02-13 05:57:40 +03:00

change how policy f-ns use buddy console

change args to list of consoles
remove nullptr checks for buddy console
This commit is contained in:
Dmitry Degtyarev 2022-07-08 13:05:30 +04:00
parent b23929a989
commit 3dadd70b25
4 changed files with 68 additions and 80 deletions

View File

@ -31,7 +31,9 @@
FoundPolicyImpl::FoundPolicyImpl(ConsoleWidget *console_arg)
: ConsoleImpl(console_arg) {
buddy_console = nullptr;
console_list = {
console,
};
add_link_action = new QAction(tr("Add link..."), this);
edit_action = new QAction(tr("Edit..."), this);
@ -44,8 +46,11 @@ FoundPolicyImpl::FoundPolicyImpl(ConsoleWidget *console_arg)
this, &FoundPolicyImpl::on_edit);
}
void FoundPolicyImpl::set_buddy_console(ConsoleWidget *buddy_console_arg) {
buddy_console = buddy_console_arg;
void FoundPolicyImpl::set_buddy_console(ConsoleWidget *buddy_console) {
console_list = {
console,
buddy_console
};
}
QList<QAction *> FoundPolicyImpl::get_all_custom_actions() const {
@ -87,27 +92,27 @@ void FoundPolicyImpl::rename(const QList<QModelIndex> &index_list) {
UNUSED_ARG(index_list);
PolicyResultsWidget *policy_results = nullptr;
console_policy_rename(console, buddy_console, policy_results, ItemType_FoundPolicy, FoundPolicyRole_DN);
console_policy_rename(console_list, policy_results, ItemType_FoundPolicy, FoundPolicyRole_DN);
}
void FoundPolicyImpl::delete_action(const QList<QModelIndex> &index_list) {
UNUSED_ARG(index_list);
PolicyResultsWidget *policy_results = nullptr;
console_policy_delete(console, buddy_console, policy_results, ItemType_FoundPolicy, FoundPolicyRole_DN);
console_policy_delete(console_list, policy_results, ItemType_FoundPolicy, FoundPolicyRole_DN);
}
void FoundPolicyImpl::properties(const QList<QModelIndex> &index_list) {
UNUSED_ARG(index_list);
PolicyResultsWidget *policy_results = nullptr;
console_policy_properties(console, buddy_console, policy_results, ItemType_FoundPolicy, FoundPolicyRole_DN);
console_policy_properties(console_list, policy_results, ItemType_FoundPolicy, FoundPolicyRole_DN);
}
void FoundPolicyImpl::on_add_link() {
PolicyResultsWidget *policy_results = nullptr;
console_policy_add_link(console, buddy_console, policy_results, ItemType_FoundPolicy, FoundPolicyRole_DN);
console_policy_add_link(console_list, policy_results, ItemType_FoundPolicy, FoundPolicyRole_DN);
}
void FoundPolicyImpl::on_edit() {

View File

@ -57,7 +57,7 @@ private slots:
void on_edit();
private:
ConsoleWidget *buddy_console;
QList<ConsoleWidget *> console_list;
QAction *add_link_action;
QAction *edit_action;
};

View File

@ -41,9 +41,9 @@
#include <QStandardItem>
#include <QMessageBox>
void policy_add_links(ConsoleWidget *console, ConsoleWidget *buddy_console, PolicyResultsWidget *policy_results, const QList<QString> &policy_list, const QList<QString> &ou_list);
void policy_add_links(const QList<ConsoleWidget *> &console_list, PolicyResultsWidget *policy_results, const QList<QString> &policy_list, const QList<QString> &ou_list);
void console_policy_update_policy_results(ConsoleWidget *console, PolicyResultsWidget *policy_results);
void console_policy_remove_link(ConsoleWidget *console, ConsoleWidget *buddy_console, PolicyResultsWidget *policy_results, const int item_type, const int dn_role, const QString &ou_dn);
void console_policy_remove_link(const QList<ConsoleWidget *> &console_list, PolicyResultsWidget *policy_results, const int item_type, const int dn_role, const QString &ou_dn);
PolicyImpl::PolicyImpl(ConsoleWidget *console_arg)
: ConsoleImpl(console_arg) {
@ -81,8 +81,7 @@ void PolicyImpl::drop(const QList<QPersistentModelIndex> &dropped_list, const QS
const QList<QModelIndex> dropped_list_normal = normal_index_list(dropped_list);
const QList<QString> ou_list = index_list_to_dn_list(dropped_list_normal, PolicyOURole_DN);
ConsoleWidget *buddy_console = nullptr;
policy_add_links(console, buddy_console, policy_results, policy_list, ou_list);
policy_add_links({console}, policy_results, policy_list, ou_list);
}
void PolicyImpl::selected_as_scope(const QModelIndex &index) {
@ -168,8 +167,7 @@ QSet<StandardAction> PolicyImpl::get_standard_actions(const QModelIndex &index,
void PolicyImpl::rename(const QList<QModelIndex> &index_list) {
UNUSED_ARG(index_list);
ConsoleWidget *buddy_console = nullptr;
console_policy_rename(console, buddy_console, policy_results, ItemType_Policy, PolicyRole_DN);
console_policy_rename({console}, policy_results, ItemType_Policy, PolicyRole_DN);
}
void PolicyImpl::delete_action(const QList<QModelIndex> &index_list) {
@ -182,11 +180,9 @@ void PolicyImpl::delete_action(const QList<QModelIndex> &index_list) {
if (parent_is_ou) {
const QString ou_dn = parent_index.data(PolicyOURole_DN).toString();
ConsoleWidget *buddy_console = nullptr;
console_policy_remove_link(console, buddy_console, policy_results, ItemType_Policy, PolicyRole_DN, ou_dn);
console_policy_remove_link({console}, policy_results, ItemType_Policy, PolicyRole_DN, ou_dn);
} else {
ConsoleWidget *buddy_console = nullptr;
console_policy_delete(console, buddy_console, policy_results, ItemType_Policy, PolicyRole_DN);
console_policy_delete({console}, policy_results, ItemType_Policy, PolicyRole_DN);
}
}
@ -199,13 +195,11 @@ void PolicyImpl::refresh(const QList<QModelIndex> &index_list) {
void PolicyImpl::properties(const QList<QModelIndex> &index_list) {
UNUSED_ARG(index_list);
ConsoleWidget *buddy_console = nullptr;
console_policy_properties(console, buddy_console, policy_results, ItemType_Policy, PolicyRole_DN);
console_policy_properties({console}, policy_results, ItemType_Policy, PolicyRole_DN);
}
void PolicyImpl::on_add_link() {
ConsoleWidget *buddy_console = nullptr;
console_policy_add_link(console, buddy_console, policy_results, ItemType_Policy, PolicyRole_DN);
console_policy_add_link({console}, policy_results, ItemType_Policy, PolicyRole_DN);
}
void PolicyImpl::on_edit() {
@ -294,23 +288,23 @@ void console_policy_edit(ConsoleWidget *console, const int item_type, const int
process->start(QIODevice::ReadOnly);
}
void console_policy_rename(ConsoleWidget *console, ConsoleWidget *buddy_console, PolicyResultsWidget *policy_results, const int item_type, const int dn_role) {
void console_policy_rename(const QList<ConsoleWidget *> &console_list, PolicyResultsWidget *policy_results, const int item_type, const int dn_role) {
AdInterface ad;
if (ad_failed(ad, console)) {
if (ad_failed(ad, console_list[0])) {
return;
}
const QString dn = get_selected_target_dn(console, item_type, dn_role);
const QString dn = get_selected_target_dn(console_list[0], item_type, dn_role);
auto dialog = new RenamePolicyDialog(ad, dn, console);
auto dialog = new RenamePolicyDialog(ad, dn, console_list[0]);
dialog->open();
QObject::connect(
dialog, &QDialog::accepted,
console,
[console, buddy_console, policy_results, dn]() {
console_list[0],
[console_list, policy_results, dn]() {
AdInterface ad_inner;
if (ad_failed(ad_inner, console)) {
if (ad_failed(ad_inner, console_list[0])) {
return;
}
@ -347,42 +341,40 @@ void console_policy_rename(ConsoleWidget *console, ConsoleWidget *buddy_console,
console_policy_update_policy_results(target_console, policy_results);
};
apply_changes(console);
if (buddy_console != nullptr) {
apply_changes(buddy_console);
for (ConsoleWidget *target_console : console_list) {
apply_changes(target_console);
}
});
}
void console_policy_add_link(ConsoleWidget *console, ConsoleWidget *buddy_console, PolicyResultsWidget *policy_results, const int item_type, const int dn_role) {
auto dialog = new SelectObjectDialog({CLASS_OU}, SelectObjectDialogMultiSelection_Yes, console);
void console_policy_add_link(const QList<ConsoleWidget *> &console_list, PolicyResultsWidget *policy_results, const int item_type, const int dn_role) {
auto dialog = new SelectObjectDialog({CLASS_OU}, SelectObjectDialogMultiSelection_Yes, console_list[0]);
dialog->setWindowTitle(QCoreApplication::translate("PolicyImpl", "Add Link"));
dialog->open();
QObject::connect(
dialog, &SelectObjectDialog::accepted,
console,
[console, buddy_console, policy_results, dialog, item_type, dn_role]() {
const QList<QString> gpo_list = get_selected_dn_list(console, item_type, dn_role);
console_list[0],
[console_list, policy_results, dialog, item_type, dn_role]() {
const QList<QString> gpo_list = get_selected_dn_list(console_list[0], item_type, dn_role);
const QList<QString> ou_list = dialog->get_selected();
policy_add_links(console, buddy_console, policy_results, gpo_list, ou_list);
policy_add_links(console_list, policy_results, gpo_list, ou_list);
});
}
void console_policy_remove_link(ConsoleWidget *console, ConsoleWidget *buddy_console, PolicyResultsWidget *policy_results, const int item_type, const int dn_role, const QString &ou_dn) {
const QList<QString> dn_list = get_selected_dn_list(console, item_type, dn_role);
void console_policy_remove_link(const QList<ConsoleWidget *> &console_list, PolicyResultsWidget *policy_results, const int item_type, const int dn_role, const QString &ou_dn) {
const QList<QString> dn_list = get_selected_dn_list(console_list[0], item_type, dn_role);
const QString confirmation_text = QCoreApplication::translate("PolicyImpl", "Are you sure you want to unlink this policy from the OU? Note that the actual policy object won't be deleted.");
const bool confirmed = confirmation_dialog(confirmation_text, console);
const bool confirmed = confirmation_dialog(confirmation_text, console_list[0]);
if (!confirmed) {
return;
}
AdInterface ad;
if (ad_failed(ad, console)) {
if (ad_failed(ad, console_list[0])) {
return;
}
@ -430,29 +422,27 @@ void console_policy_remove_link(ConsoleWidget *console, ConsoleWidget *buddy_con
console_policy_update_policy_results(target_console, policy_results);
};
apply_changes(console);
if (buddy_console != nullptr) {
apply_changes(buddy_console);
for (ConsoleWidget *target_console : console_list) {
apply_changes(target_console);
}
}
hide_busy_indicator();
g_status->display_ad_messages(ad, console);
g_status->display_ad_messages(ad, console_list[0]);
}
void console_policy_delete(ConsoleWidget *console, ConsoleWidget *buddy_console, PolicyResultsWidget *policy_results, const int item_type, const int dn_role) {
const QList<QString> dn_list = get_selected_dn_list(console, item_type, dn_role);
void console_policy_delete(const QList<ConsoleWidget *> &console_list, PolicyResultsWidget *policy_results, const int item_type, const int dn_role) {
const QList<QString> dn_list = get_selected_dn_list(console_list[0], item_type, dn_role);
const QString confirmation_text = QCoreApplication::translate("PolicyImpl", "Are you sure you want to delete this policy and all of it's links?");
const bool confirmed = confirmation_dialog(confirmation_text, console);
const bool confirmed = confirmation_dialog(confirmation_text, console_list[0]);
if (!confirmed) {
return;
}
AdInterface ad;
if (ad_failed(ad, console)) {
if (ad_failed(ad, console_list[0])) {
return;
}
@ -510,32 +500,29 @@ void console_policy_delete(ConsoleWidget *console, ConsoleWidget *buddy_console,
console_policy_update_policy_results(target_console, policy_results);
};
apply_changes(console);
if (buddy_console != nullptr) {
apply_changes(buddy_console);
for (ConsoleWidget *target_console : console_list) {
apply_changes(target_console);
}
hide_busy_indicator();
g_status->display_ad_messages(ad, console);
g_status->display_ad_messages(ad, console_list[0]);
}
void console_policy_properties(ConsoleWidget *console, ConsoleWidget *buddy_console, PolicyResultsWidget *policy_results, const int item_type, const int dn_role) {
void console_policy_properties(const QList<ConsoleWidget *> &console_list, PolicyResultsWidget *policy_results, const int item_type, const int dn_role) {
AdInterface ad;
if (ad_failed(ad, console)) {
if (ad_failed(ad, console_list[0])) {
return;
}
// const QModelIndex index = index_list[0];
const QString dn = get_selected_target_dn(console, item_type, dn_role);
const QString dn = get_selected_target_dn(console_list[0], item_type, dn_role);
bool dialog_is_new;
PropertiesDialog *dialog = PropertiesDialog::open_for_target(ad, dn, &dialog_is_new);
auto on_propeties_applied = [console, buddy_console, policy_results, dn]() {
auto on_propeties_applied = [console_list, policy_results, dn]() {
AdInterface ad_inner;
if (ad_failed(ad_inner, console)) {
if (ad_failed(ad_inner, console_list[0])) {
return;
}
@ -567,23 +554,21 @@ void console_policy_properties(ConsoleWidget *console, ConsoleWidget *buddy_cons
console_policy_update_policy_results(target_console, policy_results);
};
apply_changes(console);
if (buddy_console != nullptr) {
apply_changes(buddy_console);
for (ConsoleWidget *target_console : console_list) {
apply_changes(target_console);
}
};
if (dialog_is_new) {
QObject::connect(
dialog, &PropertiesDialog::applied,
console, on_propeties_applied);
console_list[0], on_propeties_applied);
}
}
void policy_add_links(ConsoleWidget *console, ConsoleWidget *buddy_console, PolicyResultsWidget *policy_results, const QList<QString> &policy_list, const QList<QString> &ou_list) {
void policy_add_links(const QList<ConsoleWidget *> &console_list, PolicyResultsWidget *policy_results, const QList<QString> &policy_list, const QList<QString> &ou_list) {
AdInterface ad;
if (ad_failed(ad, console)) {
if (ad_failed(ad, console_list[0])) {
return;
}
@ -648,17 +633,15 @@ void policy_add_links(ConsoleWidget *console, ConsoleWidget *buddy_console, Poli
}
};
apply_changes(console);
if (buddy_console != nullptr) {
apply_changes(buddy_console);
for (ConsoleWidget *target_console : console_list) {
apply_changes(target_console);
}
console_policy_update_policy_results(console, policy_results);
console_policy_update_policy_results(console_list[0], policy_results);
hide_busy_indicator();
g_status->display_ad_messages(ad, console);
g_status->display_ad_messages(ad, console_list[0]);
}
// Update policy results widget if it's currently displayed

View File

@ -82,9 +82,9 @@ void console_policy_load(const QList<QStandardItem *> &row, const AdObject &obje
void console_policy_load_item(QStandardItem *item, const AdObject &object);
QList<QString> console_policy_search_attributes();
void console_policy_edit(ConsoleWidget *console, const int item_type, const int dn_role);
void console_policy_rename(ConsoleWidget *console, ConsoleWidget *buddy_console, PolicyResultsWidget *policy_results, const int item_type, const int dn_role);
void console_policy_add_link(ConsoleWidget *console, ConsoleWidget *buddy_console, PolicyResultsWidget *policy_results, const int item_type, const int dn_role);
void console_policy_delete(ConsoleWidget *console, ConsoleWidget *buddy_console, PolicyResultsWidget *policy_results, const int item_type, const int dn_role);
void console_policy_properties(ConsoleWidget *console, ConsoleWidget *buddy_console, PolicyResultsWidget *policy_results, const int item_type, const int dn_role);
void console_policy_rename(const QList<ConsoleWidget *> &console_list, PolicyResultsWidget *policy_results, const int item_type, const int dn_role);
void console_policy_add_link(const QList<ConsoleWidget *> &console_list, PolicyResultsWidget *policy_results, const int item_type, const int dn_role);
void console_policy_delete(const QList<ConsoleWidget *> &console_list, PolicyResultsWidget *policy_results, const int item_type, const int dn_role);
void console_policy_properties(const QList<ConsoleWidget *> &console_list, PolicyResultsWidget *policy_results, const int item_type, const int dn_role);
#endif /* POLICY_IMPL_H */