etat de l'imprimante actualis + liste des codes dispos pour l'adherent

darcs-hash:20061110133521-f46e9-24bce8f22f9b7a14cba214e664084b3103e848d9.gz
This commit is contained in:
gdetrez 2006-11-10 14:35:21 +01:00
parent 20f3593951
commit e8391dfd40
3 changed files with 459 additions and 356 deletions

View file

@ -45,19 +45,62 @@ class root:
} }
index.exposed = True index.exposed = True
##########################
# devis
##########################
#
# methode qui affiche la template du devis
#
def devis(self):
return {
'template':'impression-devis',
'values':
{
'devis':cherrypy.session['impression'].devisDetaille(),
'total':cherrypy.session['impression'].prix(),
'nomFichier':cherrypy.session['impression'].fileName(),
},
'standalone':True,
}
devis.exposed=True
##########################
# AJAX
##########################
#
# methode qui renvoie la liste des codes de l'adherent
#
def codeList(self):
try:
listeBrute = crans.impression.digicode.list_code()
# liste de la forme :
# [(code, age, description),...]
listeBrute = [item[0] for item in listeBrute if item[2] == cherrypy.session['uid']]
return {'codes': listeBrute}
except Exception, e:
cherrypy.log('erreur lors de la creation de la liste de codes :' + str(e), 'IMPRESSION', 1)
return {'erreur':str(e)}
codeList.exposed= True
#
# methode qui indique quel fichier utiliser
#
def useFile(self, fileName): def useFile(self, fileName):
try: try:
filepath = os.path.join(os.path.join(FILE_UPLOAD_BASE_FOLDER, cherrypy.session['uid']+"/"), fileName) filepath = os.path.join(os.path.join(FILE_UPLOAD_BASE_FOLDER, cherrypy.session['uid']+"/"), fileName)
cherrypy.session['impression'] = crans.impression.impression(filepath, cherrypy.session['uid']) cherrypy.session['impression'] = crans.impression.impression(filepath, cherrypy.session['uid'])
return {'nbPages': cherrypy.session['impression'].pages()} return {'nbPages': cherrypy.session['impression'].pages()}
except Exception, e: except Exception, e:
cherrypy.log("useFile: %s" % str(e), 'IMPRESSION', 1) cherrypy.log("useFile (erreur): %s" % str(e), 'IMPRESSION', 1)
return {'erreur':str(e) } return {'erreur':str(e) }
useFile.exposed= True useFile.exposed= True
#
# methode pour changer les parametres
#
def changeSettings(self, copies=None, couleurs=None, recto_verso=None, agrafes=None, papier=None): def changeSettings(self, copies=None, couleurs=None, recto_verso=None, agrafes=None, papier=None):
try: try:
nouvPrix = cherrypy.session['impression'].changeSettings(papier=papier, couleurs=couleurs, agraphes=agrafes, recto_verso=recto_verso, copies=int(copies)) nouvPrix = cherrypy.session['impression'].changeSettings(papier=papier, couleurs=couleurs, agraphes=agrafes, recto_verso=recto_verso, copies=int(copies))
@ -68,6 +111,9 @@ class root:
changeSettings.exposed = True changeSettings.exposed = True
#
# methode pour lancer l'impression
#
def lancerImpression(self): def lancerImpression(self):
try: try:
cherrypy.session['impression'].imprime() cherrypy.session['impression'].imprime()
@ -76,16 +122,39 @@ class root:
except Exception, e: except Exception, e:
cherrypy.log("lancerImpression (erreur): %s" % str(e), 'IMPRESSION', 1) cherrypy.log("lancerImpression (erreur): %s" % str(e), 'IMPRESSION', 1)
return {"erreur":str(e)} return {"erreur":str(e)}
cherrypy.log("impression demandee " , 'IMPRESSION') return {'code':str(crans.impression.digicode.gen_code(cherrypy.session['uid'])) + "#"}
return {'code':str(crans.impression.digicode.gen_code("Impression intranet : " + cherrypy.session['uid'])) + "#"}
lancerImpression.exposed = True lancerImpression.exposed = True
#
# methode pour récupérer l'état de l'imprimante
#
def etatImprimante(self):
try:
try:
return {"printer_state" : "<br />".join(crans.impression.etat_imprimante.etat())
except Exception, e:
return {"printer_state" : 'Imprimante hors ligne'}
etatImprimante.exposed = True
##########################
# privees
##########################
#
# methode pour obtenir la liste des fichiers uploadés
#
def getUploadedFileListFor(self, adh): def getUploadedFileListFor(self, adh):
file_folder = os.path.join(FILE_UPLOAD_BASE_FOLDER, cherrypy.session['uid']+"/") file_folder = os.path.join(FILE_UPLOAD_BASE_FOLDER, cherrypy.session['uid']+"/")
if not os.path.isdir(file_folder): if not os.path.isdir(file_folder):
return [] return []
return os.listdir(file_folder) return os.listdir(file_folder)
#
# methode pour enregistrer un fichier
#
def savePDF(self, aFile): def savePDF(self, aFile):
_, tempFileName = tempfile.mkstemp() _, tempFileName = tempfile.mkstemp()
@ -110,22 +179,6 @@ class root:
return newFilePath return newFilePath
##########################
# devis
##########################
#
# methode qui affiche la template du devis
#
def devis(self):
return {
'template':'impression-devis',
'values':
{
'devis':cherrypy.session['impression'].devisDetaille(),
'total':cherrypy.session['impression'].prix(),
'nomFichier':cherrypy.session['impression'].fileName(),
},
'standalone':True,
}
devis.exposed=True

View file

@ -1,10 +1,10 @@
/* ************************************************************ /* ************************************************************
* Impression * Impression
************************************************************ ************************************************************
* Impression.settings : panneau de configuration * Impression.settings : panneau de configuration
* Impression.popup : popup * Impression.popup : popup
* Impression.AJAX : ajax * Impression.AJAX : ajax
*/ */
Impression = {}; Impression = {};
/***************************** /*****************************
@ -17,30 +17,30 @@ Impression.settings = {};
//// images : images used for previewing //// images : images used for previewing
// //
Impression.settings.images = [ Impression.settings.images = [
"portrait_couleurs_agraphediagonale.png", "portrait_couleurs_agraphediagonale.png",
"portrait_couleurs_pasdagraphes.png", "portrait_couleurs_pasdagraphes.png",
"portrait_couleurs_uneagraphe.png", "portrait_couleurs_uneagraphe.png",
"portrait_couleurs_Deuxagraphes.png", "portrait_couleurs_Deuxagraphes.png",
"portrait_couleurs_troisAgraphes.png", "portrait_couleurs_troisAgraphes.png",
"portrait_couleurs_stitching.png", "portrait_couleurs_stitching.png",
"portrait_nb_agraphediagonale.png", "portrait_nb_agraphediagonale.png",
"portrait_nb_pasdagraphes.png", "portrait_nb_pasdagraphes.png",
"portrait_nb_uneagraphe.png", "portrait_nb_uneagraphe.png",
"portrait_nb_Deuxagraphes.png", "portrait_nb_Deuxagraphes.png",
"portrait_nb_troisAgraphes.png", "portrait_nb_troisAgraphes.png",
"portrait_nb_stitching.png", "portrait_nb_stitching.png",
"portrait_transparent_couleurs.png", "portrait_transparent_couleurs.png",
"portrait_transparent_nb.png", "portrait_transparent_nb.png",
]; ];
Impression.settings.preloadImage = function(imageName) { Impression.settings.preloadImage = function(imageName) {
var image = new Image(); var image = new Image();
image.src = "/static/images/"+imageName; image.src = "/static/images/"+imageName;
} }
Impression.settings.preloadAllImages = function() { Impression.settings.preloadAllImages = function() {
log("Preloading images..."); log("Preloading images...");
map(this.preloadImage,this.images); map(this.preloadImage,this.images);
} }
// //
@ -63,10 +63,11 @@ Impression.settings.reset = function () {
Impression.settings.disableForm = function(bool) Impression.settings.disableForm = function(bool)
{ {
log("Set Disable Form : " + bool); log("Set Disable Form : " + bool);
var fields = this.theform.elements; for( var i=0; i< fields.length; i++) var fields = this.theform.elements;
{ for( var i=0; i< fields.length; i++)
{
this.setDisableField( fields[i], bool ); this.setDisableField( fields[i], bool );
} }
} }
// //
@ -105,21 +106,21 @@ Impression.settings.getCopies = function(field) {
// //
Impression.settings.setValue = function(afield, avalue) { Impression.settings.setValue = function(afield, avalue) {
afield.value = avalue; afield.value = avalue;
this.getValue(afield) this.getValue(afield);
} }
// //
//// setDisableField : set field disabled on/off //// setDisableField : set field disabled on/off
// //
Impression.settings.setDisableField = function( afield, isdisabled ) { Impression.settings.setDisableField = function( afield, isdisabled ) {
afield.disabled = isdisabled ; afield.disabled = isdisabled ;
} }
// //
//// disableField : set field disabled on //// disableField : set field disabled on
// //
Impression.settings.disableField = function(afield) { Impression.settings.disableField = function(afield) {
this.setDisableField(afield, true); this.setDisableField(afield, true);
} }
// //
@ -142,14 +143,15 @@ Impression.settings.update = function (field) {
// Contraintes // Contraintes
if ( if (
( this.papier != "A4" ) || ( this.papier != "A4" ) ||
( (this.disposition == "recto") && (this.nb_pages>50) ) || ( (this.disposition == "recto") && (this.nb_pages>50) ) ||
( (this.disposition == "rectoverso") && (this.nb_pages>100) ) ) { ( (this.disposition == "rectoverso") && (this.nb_pages>100) ) )
this.setValue(this.theform.agrafes, "pasdagraphes"); {
this.disableField(this.theform.agrafes); this.setValue(this.theform.agrafes, "pasdagraphes");
this.getValue(this.theform.agrafes); this.disableField(this.theform.agrafes);
} else { this.getValue(this.theform.agrafes);
this.setDisableField(this.theform.agrafes, false); } else {
} this.setDisableField(this.theform.agrafes, false);
}
if (this.papier == "A4tr") if (this.papier == "A4tr")
{ {
this.theform.disposition_recto.checked = true; this.theform.disposition_recto.checked = true;
@ -159,8 +161,8 @@ Impression.settings.update = function (field) {
} }
else else
{ {
this.setDisableField(this.theform.disposition_recto, false); this.setDisableField(this.theform.disposition_recto, false);
this.setDisableField(this.theform.disposition_recto_verso, false); this.setDisableField(this.theform.disposition_recto_verso, false);
} }
this.updatePreview(); this.updatePreview();
@ -210,22 +212,51 @@ Impression.popup.popupError = function(erreur) {
} }
Impression.popup.popupSolde = function(code) { Impression.popup.popupSolde = function(code) {
Popup.hide(); Popup.hide();
Popup.create({}, "Solde insuffisant", Popup.create({}, "Solde insuffisant",
DIV( DIV(
{"id":"printingPopupContent", "style":"background-image:url(/static/images/dialog-solde.png)"}, {"id":"printingPopupContent", "style":"background-image:url(/static/images/dialog-solde.png)"},
SPAN("pas assez de sous"), SPAN("pas assez de sous"),
A({"href":"https://wiki.crans.org/CransPratique/SoldeImpression", "class":"aide", "target":"_blank"}, "Comment recharger mon compte ? "), A({"href":"https://wiki.crans.org/CransPratique/SoldeImpression", "class":"aide", "target":"_blank"}, "Comment recharger mon compte ? "),
Popup.closeLink({"class":"aide", "style":"text-align:right;"}, "Fermer"))); Popup.closeLink({"class":"aide", "style":"text-align:right;"}, "Fermer")));
Popup.display();
}
Impression.popup.popupCodes = function(codeList) {
Popup.hide();
Popup.create({}, "Codes de mes impressions",
DIV(
{"id":"printingPopupContent", "style":"background-image:url(/static/images/dialog-printer.png)"},
SPAN("Mes codes"),
//UL({"size":"4", "style":"width:6em;; height:4em;padding:0;margin:0;list-style-type:none;overflow:auto;"}, map(function (code) {return LI({}, code);}, codeList)),
SELECT({"size":"4", "style":"width:100%;"}, map(function (code) {return LI({}, code);}, codeList)),
Popup.closeLink({"class":"aide", "style":"text-align:right;"}, "Fermer")));
Popup.display(); Popup.display();
} }
/*****************************
Impression.mesCodes
*****************************/
Impression.mesCodes = {};
Impression.mesCodes.getCodes = function ()
{
Impression.AJAX.call('codeList', this.displayCodes );
}
Impression.mesCodes.displayCodes = function (result) {
if (result.codes)
Impression.popup.popupCodes(result.codes);
else if (result.erreur)
logError('erreur distante (codeLlist) : ' + result.erreur);
else
logError('erreur bizarre (codeLlist) : ');
}
/***************************** /*****************************
Impression.AJAX Impression.AJAX
*****************************/ *****************************/
Impression.AJAX = {}; Impression.AJAX = {};
@ -250,7 +281,7 @@ Impression.AJAX.modifNbPages = function( nbpages )
} }
Impression.AJAX.call = function(page, callBack) { Impression.AJAX.call = function(page, callBack) {
logDebug("calling AJAX : " + page) logDebug("calling AJAX : " + page);
var e = loadJSONDoc(page); var e = loadJSONDoc(page);
e.addCallback(callBack); e.addCallback(callBack);
e.addErrback(this.errorHandler); e.addErrback(this.errorHandler);
@ -313,10 +344,10 @@ Impression.AJAX.lancerImpression = function(AJAXResp)
{ {
var url = "lancerImpression"; var url = "lancerImpression";
Impression.settings.disableForm(true); Impression.settings.disableForm(true);
this.call(url, this.etatImpression); this.call(url, this.finImpression);
} }
Impression.AJAX.etatImpression = function(AJAXResp) Impression.AJAX.finImpression = function(AJAXResp)
{ {
logDebug('AJAX terminated (lancerImpression)'); logDebug('AJAX terminated (lancerImpression)');
if (AJAXResp.erreur) { if (AJAXResp.erreur) {
@ -330,3 +361,21 @@ Impression.AJAX.etatImpression = function(AJAXResp)
Impression.popup.popupImpression(AJAXResp.code); Impression.popup.popupImpression(AJAXResp.code);
} }
} }
Impression.AJAX.getPrinterState = function()
{
var url = "etatImprimante";
Impression.AJAX.call(url, Impression.AJAX.displayPrinterState);
}
Impression.AJAX.displayPrinterState = function(AJAXResp)
{
logDebug('AJAX terminated (getPrinterState)');
if (AJAXResp.erreur) {
logWarning('Erreur distante (etatImprimante) : ' + AJAXResp.erreur);
} else {
replaceChildNodes("etatImprimanteIci", AJAXResp.printer_state)
}
}
setInterval(Impression.AJAX.getPrinterState, 30000);

View file

@ -57,9 +57,10 @@
<li><span style="font-weight:bold;">pages: </span><span id="fileNbPages"></span></li> <li><span style="font-weight:bold;">pages: </span><span id="fileNbPages"></span></li>
#end if #end if
<li id="actionEtatImprimante"><span style="font-weight:bold;">&Eacute;tat <li id="actionEtatImprimante" onclick="Impression.AJAX.getPrinterState();"><span style="font-weight:bold;">&Eacute;tat
imprimante:</span><br /><span> $etatImprimante </span></li> imprimante:</span><br /><span id="etatImprimanteIci"> $etatImprimante </span></li>
<li id="actionNouvelleImpression"><a href="index">Nouvelle impression</a></li> <li id="actionNouvelleImpression"><a href="index">Nouvelle impression</a></li>
<li id="actionMesCodes"><a href="#" onclick="Impression.mesCodes.getCodes(); return false;">Mes codes</a></li>
<!-- <li><a href="historique">Historique</a></li> --> <!-- <li><a href="historique">Historique</a></li> -->
</ul> </ul>