mirror of
https://github.com/ElvishArtisan/rivendell.git
synced 2026-01-12 07:35:55 +01:00
2017-01-13 Fred Gleason <fredg@paravelsystems.com>
* Implemented automatic cart/cut creation as part of the 'Import' web method.
This commit is contained in:
@@ -15510,3 +15510,6 @@
|
|||||||
2017-01-13 Fred Gleason <fredg@paravelsystems.com>
|
2017-01-13 Fred Gleason <fredg@paravelsystems.com>
|
||||||
* Fixed a bug in 'lib/rduser.cpp' that caused the
|
* Fixed a bug in 'lib/rduser.cpp' that caused the
|
||||||
'RDUser::groupAuthorized()' to return false positive results.
|
'RDUser::groupAuthorized()' to return false positive results.
|
||||||
|
2017-01-13 Fred Gleason <fredg@paravelsystems.com>
|
||||||
|
* Implemented automatic cart/cut creation as part of the 'Import'
|
||||||
|
web method.
|
||||||
|
|||||||
@@ -1658,6 +1658,13 @@
|
|||||||
<para>
|
<para>
|
||||||
NOTE: The method must be called with 'multipart/form-data' encoding.
|
NOTE: The method must be called with 'multipart/form-data' encoding.
|
||||||
</para>
|
</para>
|
||||||
|
<para>
|
||||||
|
If the CREATE field is set to '1', a valid GROUP_NAME specified and both
|
||||||
|
CART_NUMBER and CUT_NUMBER fields are set to zero, the system will
|
||||||
|
attempt to create a new cart/cut in the specified group. If successful,
|
||||||
|
the cart and cut numbers will be returned as part of the RDWebResult
|
||||||
|
return.
|
||||||
|
</para>
|
||||||
<table xml:id="ex.import
|
<table xml:id="ex.import
|
||||||
" frame="all">
|
" frame="all">
|
||||||
<title>Import Call Fields</title>
|
<title>Import Call Fields</title>
|
||||||
|
|||||||
@@ -62,8 +62,10 @@ RDCut::RDCut(const QString &name,bool create,QSqlDatabase *db)
|
|||||||
sscanf((const char *)name+7,"%u",&cut_number);
|
sscanf((const char *)name+7,"%u",&cut_number);
|
||||||
sscanf((const char *)name.left(6),"%u",&cart_number);
|
sscanf((const char *)name.left(6),"%u",&cart_number);
|
||||||
if(create) {
|
if(create) {
|
||||||
sql=QString().sprintf("insert into CUTS set CUT_NAME=\"%s\",CART_NUMBER=%u",
|
sql=QString("insert into CUTS set ")+
|
||||||
(const char *)cut_name,cart_number);
|
"CUT_NAME=\""+RDEscapeString(cut_name)+"\","+
|
||||||
|
QString().sprintf("CART_NUMBER=%u,",cart_number)+
|
||||||
|
QString().sprintf("DESCRIPTION=\"Cut %03d\"",cut_number);
|
||||||
q=new RDSqlQuery(sql,cut_db);
|
q=new RDSqlQuery(sql,cut_db);
|
||||||
delete q;
|
delete q;
|
||||||
}
|
}
|
||||||
@@ -81,8 +83,10 @@ RDCut::RDCut(unsigned cartnum,int cutnum,bool create,QSqlDatabase *db)
|
|||||||
cut_signal=new QSignal();
|
cut_signal=new QSignal();
|
||||||
|
|
||||||
if(create) {
|
if(create) {
|
||||||
sql=QString().sprintf("insert into CUTS set CUT_NAME=\"%s\",CART_NUMBER=%u",
|
sql=QString("insert into CUTS set ")+
|
||||||
(const char *)cut_name,cartnum);
|
"CUT_NAME=\""+RDEscapeString(cut_name)+"\","+
|
||||||
|
QString().sprintf("CART_NUMBER=%u,",cartnum)+
|
||||||
|
QString().sprintf("DESCRIPTION=\"Cut %03d\"",cutnum);
|
||||||
q=new RDSqlQuery(sql,cut_db);
|
q=new RDSqlQuery(sql,cut_db);
|
||||||
delete q;
|
delete q;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -69,7 +69,7 @@ void Xport::Import()
|
|||||||
}
|
}
|
||||||
int create=0;
|
int create=0;
|
||||||
if(!xport_post->getValue("CREATE",&create)) {
|
if(!xport_post->getValue("CREATE",&create)) {
|
||||||
create=-1;
|
create=0;
|
||||||
}
|
}
|
||||||
QString group_name;
|
QString group_name;
|
||||||
xport_post->getValue("GROUP_NAME",&group_name);
|
xport_post->getValue("GROUP_NAME",&group_name);
|
||||||
@@ -77,14 +77,6 @@ void Xport::Import()
|
|||||||
if(!xport_post->getValue("FILENAME",&filename)) {
|
if(!xport_post->getValue("FILENAME",&filename)) {
|
||||||
XmlExit("Missing FILENAME",400);
|
XmlExit("Missing FILENAME",400);
|
||||||
}
|
}
|
||||||
/*
|
|
||||||
if(!RDCart::exists(cartnum)) {
|
|
||||||
XmlExit("No such cart",404);
|
|
||||||
}
|
|
||||||
if(!RDCut::exists(cartnum,cutnum)) {
|
|
||||||
XmlExit("No such cut",404);
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
if(!xport_post->isFile("FILENAME")) {
|
if(!xport_post->isFile("FILENAME")) {
|
||||||
XmlExit("Missing file data",400);
|
XmlExit("Missing file data",400);
|
||||||
}
|
}
|
||||||
@@ -100,7 +92,7 @@ void Xport::Import()
|
|||||||
else {
|
else {
|
||||||
if(create) {
|
if(create) {
|
||||||
if(!xport_user->groupAuthorized(group_name)) {
|
if(!xport_user->groupAuthorized(group_name)) {
|
||||||
XmlExit("No such cart",404);
|
XmlExit("No such group",404);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
@@ -117,38 +109,31 @@ void Xport::Import()
|
|||||||
//
|
//
|
||||||
// Load Configuration
|
// Load Configuration
|
||||||
//
|
//
|
||||||
RDCart *cart=new RDCart(cartnum);
|
RDCart *cart=NULL;
|
||||||
if(!RDCart::exists(cartnum)) {
|
|
||||||
if(create) {
|
|
||||||
if(group_name.isEmpty()) {
|
|
||||||
XmlExit("Missing GROUP_NAME",400);
|
|
||||||
}
|
|
||||||
RDGroup *group=new RDGroup(group_name);
|
|
||||||
if(!group->exists()) {
|
|
||||||
XmlExit("No such group",404);
|
|
||||||
}
|
|
||||||
if(!group->cartNumberValid(cartnum)) {
|
|
||||||
XmlExit("Cart number out of range for group",401);
|
|
||||||
}
|
|
||||||
cart->create(group_name,RDCart::Audio);
|
|
||||||
delete group;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
XmlExit("No such cart",404);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
RDCut *cut=NULL;
|
RDCut *cut=NULL;
|
||||||
if(RDCut::exists(cartnum,cutnum)) {
|
if(cartnum==0) {
|
||||||
cut=new RDCut(cartnum,cutnum);
|
RDGroup *group=new RDGroup(group_name);
|
||||||
|
if(!group->exists()) {
|
||||||
|
XmlExit("No such group",404);
|
||||||
|
}
|
||||||
|
if((cartnum=group->nextFreeCart())==0) {
|
||||||
|
XmlExit("No available carts for specified group",404);
|
||||||
|
}
|
||||||
|
cart=new RDCart(cartnum);
|
||||||
|
cart->create(group_name,RDCart::Audio);
|
||||||
|
cutnum=1;
|
||||||
|
cut=new RDCut(cartnum,cutnum,true);
|
||||||
|
delete group;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
if(create) {
|
cart=new RDCart(cartnum);
|
||||||
cut=new RDCut(cartnum,cutnum,true);
|
cut=new RDCut(cartnum,cutnum);
|
||||||
cut->setDescription(QString().sprintf("Cut %03d",cutnum));
|
}
|
||||||
}
|
if(!RDCart::exists(cartnum)) {
|
||||||
else {
|
XmlExit("No such cart",404);
|
||||||
XmlExit("No such cut",404);
|
}
|
||||||
}
|
if(!RDCut::exists(cartnum,cutnum)) {
|
||||||
|
XmlExit("No such cut",404);
|
||||||
}
|
}
|
||||||
RDLibraryConf *conf=new RDLibraryConf(xport_config->stationName(),0);
|
RDLibraryConf *conf=new RDLibraryConf(xport_config->stationName(),0);
|
||||||
RDSettings *settings=new RDSettings();
|
RDSettings *settings=new RDSettings();
|
||||||
@@ -226,5 +211,17 @@ void Xport::Import()
|
|||||||
delete conf;
|
delete conf;
|
||||||
delete cut;
|
delete cut;
|
||||||
delete cart;
|
delete cart;
|
||||||
|
if(resp_code==200) {
|
||||||
|
printf("Content-type: application/xml\n");
|
||||||
|
printf("Status: %d\n",resp_code);
|
||||||
|
printf("\n");
|
||||||
|
printf("<RDWebResult>\r\n");
|
||||||
|
printf(" <ResponseCode>%d</ResponseCode>\r\n",resp_code);
|
||||||
|
printf(" <ErrorString>OK</ErrorString>\r\n");
|
||||||
|
printf(" <CartNumber>%d</CartNumber>\r\n",cartnum);
|
||||||
|
printf(" <CutNumber>%d</CutNumber>\r\n",cutnum);
|
||||||
|
printf("</RDWebResult>\r\n");
|
||||||
|
exit(0);
|
||||||
|
}
|
||||||
XmlExit(RDAudioConvert::errorText(conv_err),resp_code,conv_err);
|
XmlExit(RDAudioConvert::errorText(conv_err),resp_code,conv_err);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user