mirror of
https://github.com/ElvishArtisan/rivendell.git
synced 2025-05-19 06:32:34 +02:00
2021-09-13 Fred Gleason <fredg@paravelsystems.com>
* Added an 'RDGroups::create()' static method. * Added an 'RDGroups::remove()' static method. Signed-off-by: Fred Gleason <fredg@paravelsystems.com>
This commit is contained in:
parent
b6f343df9b
commit
2666c2998e
@ -22424,3 +22424,6 @@
|
||||
2021-09-13 Fred Gleason <fredg@paravelsystems.com>
|
||||
* Fixed a regression in 'RDCartFilter' that caused a SQL error to be
|
||||
thrown during initialization.
|
||||
2021-09-13 Fred Gleason <fredg@paravelsystems.com>
|
||||
* Added an 'RDGroups::create()' static method.
|
||||
* Added an 'RDGroups::remove()' static method.
|
||||
|
109
lib/rdgroup.cpp
109
lib/rdgroup.cpp
@ -392,6 +392,115 @@ QString RDGroup::xml() const
|
||||
}
|
||||
|
||||
|
||||
bool RDGroup::create(const QString &name,bool allow_all_users,
|
||||
bool allow_all_services,QString *err_msg)
|
||||
{
|
||||
QString sql;
|
||||
RDSqlQuery *q=NULL;
|
||||
|
||||
if(name.length()>10) {
|
||||
*err_msg=QObject::tr("Name too long (ten characters max)");
|
||||
return false;
|
||||
}
|
||||
if(name.isEmpty()||(name.toLower()==QObject::tr("all").toLower())) {
|
||||
*err_msg=QObject::tr("Invalid group name");
|
||||
return false;
|
||||
}
|
||||
sql=QString("select ")+
|
||||
"`NAME` "+
|
||||
"from `GROUPS` where "+
|
||||
"`NAME`='"+RDEscapeString(name)+"'";
|
||||
q=new RDSqlQuery(sql);
|
||||
if(q->first()) {
|
||||
*err_msg=QObject::tr("group already exists");
|
||||
delete q;
|
||||
return false;
|
||||
}
|
||||
delete q;
|
||||
sql=QString("insert into `GROUPS` set ")+
|
||||
"`NAME`='"+RDEscapeString(name)+"'";
|
||||
if(!RDSqlQuery::apply(sql)) {
|
||||
*err_msg=QObject::tr("unable to create database record");
|
||||
return false;
|
||||
}
|
||||
|
||||
//
|
||||
// Create Default Users Perms
|
||||
//
|
||||
if(allow_all_users) {
|
||||
sql="select `LOGIN_NAME` from `USERS`";
|
||||
q=new RDSqlQuery(sql);
|
||||
while(q->next()) {
|
||||
sql=QString("insert into `USER_PERMS` set ")+
|
||||
"`USER_NAME`='"+RDEscapeString(q->value(0).toString())+"',"+
|
||||
"`GROUP_NAME`='"+RDEscapeString(name)+"'";
|
||||
RDSqlQuery::apply(sql);
|
||||
}
|
||||
delete q;
|
||||
}
|
||||
|
||||
//
|
||||
// Create Default Service Perms
|
||||
//
|
||||
if(allow_all_services) {
|
||||
sql="select `NAME` from `SERVICES`";
|
||||
q=new RDSqlQuery(sql);
|
||||
while(q->next()) {
|
||||
sql=QString("insert into `AUDIO_PERMS` set ")+
|
||||
"`SERVICE_NAME`='"+RDEscapeString(q->value(0).toString())+"',"+
|
||||
"`GROUP_NAME`='"+RDEscapeString(name)+"'";
|
||||
RDSqlQuery::apply(sql);
|
||||
}
|
||||
delete q;
|
||||
}
|
||||
|
||||
*err_msg=QObject::tr("OK");
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
bool RDGroup::remove(const QString &name,QString *err_msg)
|
||||
{
|
||||
QString sql;
|
||||
RDSqlQuery *q=NULL;
|
||||
|
||||
//
|
||||
// Check for carts using group
|
||||
//
|
||||
sql=QString("select ")+
|
||||
"`NUMBER` "+ // 00
|
||||
"from `CART` where "+
|
||||
"`GROUP_NAME`='"+RDEscapeString(name)+"'";
|
||||
q=new RDSqlQuery(sql);
|
||||
if(q->first()) {
|
||||
*err_msg=QObject::tr("group name in use");
|
||||
delete q;
|
||||
return false;
|
||||
}
|
||||
|
||||
sql=QString("delete from `USER_PERMS` where ")+
|
||||
"`GROUP_NAME`='"+RDEscapeString(name)+"'";
|
||||
RDSqlQuery::apply(sql);
|
||||
|
||||
sql=QString("delete from `AUDIO_PERMS` where ")+
|
||||
"`GROUP_NAME`='"+RDEscapeString(name)+"'";
|
||||
RDSqlQuery::apply(sql);
|
||||
|
||||
sql=QString("delete from `GROUPS` where ")+
|
||||
"`NAME`='"+RDEscapeString(name)+"'";
|
||||
RDSqlQuery::apply(sql);
|
||||
|
||||
sql=QString("delete from `REPLICATOR_MAP` where ")+
|
||||
"`GROUP_NAME`='"+RDEscapeString(name)+"'";
|
||||
RDSqlQuery::apply(sql);
|
||||
|
||||
*err_msg=QObject::tr("OK");
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
unsigned RDGroup::GetNextFreeCart(unsigned startcart) const
|
||||
{
|
||||
QString sql;
|
||||
|
@ -62,7 +62,10 @@ class RDGroup
|
||||
RDCart::Type type,int quan) const;
|
||||
bool cartNumberValid(unsigned cartnum) const;
|
||||
QString xml() const;
|
||||
|
||||
static bool create(const QString &name,bool allow_all_users,
|
||||
bool allow_all_services,QString *err_msg);
|
||||
static bool remove(const QString &name,QString *err_msg);
|
||||
|
||||
private:
|
||||
unsigned GetNextFreeCart(unsigned startcart) const;
|
||||
bool ReserveCart(const QString &station_name,RDCart::Type type,
|
||||
|
@ -127,72 +127,27 @@ QSizePolicy AddGroup::sizePolicy() const
|
||||
|
||||
void AddGroup::okData()
|
||||
{
|
||||
RDSqlQuery *q;
|
||||
RDSqlQuery *q1;
|
||||
QString sql;
|
||||
QString err_msg;
|
||||
|
||||
if(group_name_edit->text().isEmpty()) {
|
||||
QMessageBox::warning(this,tr("Invalid Name"),tr("You must give the group a name!"));
|
||||
return;
|
||||
}
|
||||
|
||||
sql=QString("insert into `GROUPS` set ")+
|
||||
"`NAME`='"+RDEscapeString(group_name_edit->text())+"'";
|
||||
|
||||
q=new RDSqlQuery(sql);
|
||||
if(!q->isActive()) {
|
||||
QMessageBox::warning(this,tr("Group Exists"),tr("Group Already Exists!"),
|
||||
1,0,0);
|
||||
delete q;
|
||||
if(!RDGroup::create(group_name_edit->text(),group_users_box->isChecked(),
|
||||
group_svcs_box->isChecked(),&err_msg)) {
|
||||
QMessageBox::warning(this,"RDAdmin - "+tr("Error"),
|
||||
tr("Error creating group!")+"\n"+
|
||||
"["+err_msg+"]");
|
||||
return;
|
||||
}
|
||||
delete q;
|
||||
|
||||
//
|
||||
// Create Default Users Perms
|
||||
//
|
||||
if(group_users_box->isChecked()) {
|
||||
sql="select `LOGIN_NAME` from `USERS`";
|
||||
q=new RDSqlQuery(sql);
|
||||
while(q->next()) {
|
||||
sql=QString("insert into `USER_PERMS` set ")+
|
||||
"`USER_NAME`='"+RDEscapeString(q->value(0).toString())+"',"+
|
||||
"`GROUP_NAME`='"+RDEscapeString(group_name_edit->text())+"'";
|
||||
RDSqlQuery::apply(sql);
|
||||
}
|
||||
delete q;
|
||||
}
|
||||
|
||||
//
|
||||
// Create Default Service Perms
|
||||
//
|
||||
if(group_svcs_box->isChecked()) {
|
||||
sql="select `NAME` from `SERVICES`";
|
||||
q=new RDSqlQuery(sql);
|
||||
while(q->next()) {
|
||||
sql=QString("insert into `AUDIO_PERMS` set ")+
|
||||
"`SERVICE_NAME`='"+RDEscapeString(q->value(0).toString())+"',"+
|
||||
"`GROUP_NAME`='"+RDEscapeString(group_name_edit->text())+"'";
|
||||
q1=new RDSqlQuery(sql);
|
||||
delete q1;
|
||||
}
|
||||
delete q;
|
||||
}
|
||||
}
|
||||
|
||||
EditGroup *group=new EditGroup(group_name_edit->text(),this);
|
||||
if(group->exec()<0) {
|
||||
sql=QString("delete from `USER_PERMS` where ")+
|
||||
"`GROUP_NAME`='"+RDEscapeString(group_name_edit->text())+"'";
|
||||
q=new RDSqlQuery(sql);
|
||||
delete q;
|
||||
sql=QString("delete from `AUDIO_PERMS` where ")+
|
||||
"`GROUP_NAME`='"+RDEscapeString(group_name_edit->text())+"'";
|
||||
q=new RDSqlQuery(sql);
|
||||
delete q;
|
||||
sql=QString("delete from `GROUPS` where ")+
|
||||
"`NAME`='"+RDEscapeString(group_name_edit->text())+"'";
|
||||
q=new RDSqlQuery(sql);
|
||||
delete q;
|
||||
if(!group->exec()) {
|
||||
if(!RDGroup::remove(group_name_edit->text(),&err_msg)) {
|
||||
QMessageBox::warning(this,"RDAdmin - "+tr("Error"),
|
||||
tr("Error removing stale database record!")+"\n"+
|
||||
"["+err_msg+"]");
|
||||
}
|
||||
delete group;
|
||||
done(false);
|
||||
return;
|
||||
|
@ -134,7 +134,6 @@ void ListGroups::addData()
|
||||
return;
|
||||
}
|
||||
delete add_group;
|
||||
add_group=NULL;
|
||||
QModelIndex index=list_groups_model->addGroup(grpname);
|
||||
if(index.isValid()) {
|
||||
list_groups_view->selectRow(index.row());
|
||||
@ -187,13 +186,13 @@ void ListGroups::deleteData()
|
||||
RDSqlQuery *q=NULL;
|
||||
QString warning;
|
||||
int carts=0;
|
||||
QString err_msg;
|
||||
QModelIndexList rows=list_groups_view->selectionModel()->selectedRows();
|
||||
|
||||
if(rows.size()!=1) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
QString grpname=list_groups_model->groupName(rows.first());
|
||||
if(grpname.isEmpty()) {
|
||||
return;
|
||||
@ -229,33 +228,13 @@ void ListGroups::deleteData()
|
||||
}
|
||||
delete q;
|
||||
|
||||
//
|
||||
// Delete Member Audio Perms
|
||||
//
|
||||
sql=QString("delete from `AUDIO_PERMS` where ")+
|
||||
"`GROUP_NAME`='"+RDEscapeString(grpname)+"'";
|
||||
RDSqlQuery::apply(sql);
|
||||
|
||||
//
|
||||
// Delete Member User Perms
|
||||
//
|
||||
sql=QString("delete from `USER_PERMS` where ")+
|
||||
"`GROUP_NAME`='"+RDEscapeString(grpname)+"'";
|
||||
RDSqlQuery::apply(sql);
|
||||
|
||||
//
|
||||
// Delete Replicator Map Records
|
||||
//
|
||||
sql=QString("delete from `REPLICATOR_MAP` where ")+
|
||||
"`GROUP_NAME`='"+RDEscapeString(grpname)+"'";
|
||||
RDSqlQuery::apply(sql);
|
||||
|
||||
//
|
||||
// Delete from Group List
|
||||
//
|
||||
sql=QString("delete from `GROUPS` where ")+
|
||||
"`NAME`='"+RDEscapeString(grpname)+"'";
|
||||
RDSqlQuery::apply(sql);
|
||||
if(!RDGroup::remove(grpname,&err_msg)) {
|
||||
QMessageBox::warning(this,"RDAdmin - "+tr("Error"),
|
||||
tr("Unable to remove group!")+"\n"+
|
||||
"["+err_msg+"]");
|
||||
return;
|
||||
}
|
||||
|
||||
list_groups_model->removeGroup(grpname);
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user