def message(self): params = self.request.form dataInici = None dataFi = None if 'dataInici' in params: dataInici = params['dataInici'] dataInici = self.context.toLocalizedTime(dataInici) if 'dataFi' in params: dataFi = params['dataFi'] dataFi = self.context.toLocalizedTime(dataFi) if dataInici and dataFi: return _( "El termini per realitzar sol·licituds per aquesta prestació és del $dataInici al ${dataFi}.", mapping={ "dataFi": dataFi, "dataInici": dataInici }) elif dataInici and not dataFi: return _( "El termini per realitzar sol·licituds per aquesta prestació comença el ${dataInici}.", mapping={"dataInici": dataInici}) elif dataFi: return _( "El termini per realitzar sol·licituds per aquesta prestació va finalitzar el ${dataFi}.", mapping={"dataFi": dataFi}) return _('No es poden realitzar sol·licituds per aquesta prestació.')
class IGN6UrlHelperForm(Interface): """Define the fields for the link builder form""" equipResolutor = schema.TextLine( title=_(u"Equip resolutor"), description=_(u"Equip encarregat de resoldre el tiquet."), required=False ) producte = schema.TextLine( title=_(u"Codi del producte/servei"), description=_(u"Identificador del producte/servei al gestor."), required=False ) subservei = schema.TextLine( title=_(u"Codi del subservei"), description=_(u"Identificador del subservei al gestor."), required=False ) dataInici = schema.Date( title=_(u"Data d'inici"), description=_(u"Data en la que es podrà comenaçar a sol·licitar el servei."), required=False ) dataFi = schema.Date( title=_(u"Data fi"), description=_(u"Data del darrer dia que es podrà sol·licitar el servei."), required=False )
class HelperAltaForm(form.Form, SOABrowserView): fields = field.Fields(IGN6UrlHelperForm) label = _(u"Nou enllaç d'alta de tiquet al GN6") description = _( u"Utilitza els camps per generar un nou enllaç que permeti crear un tiquet predefint al gestor de serveis." ) ignoreContext = True def updateWidgets(self): # Comprovem que l'usuari té permisos d'edició a la carpeta arrel form.Form.updateWidgets(self) if not self.havePermissionAtRoot(): self._error(_('No tens permissos per accedir aquest recurs')) self._redirect() @button.buttonAndHandler(_(u"Crea l'enllaç")) def creaLink(self, action): data, errors = self.extractData() if errors: self.status = self.formErrorsMessage return params = '' sep = '' for key in data: if data[key] is not None: params += sep + key + "=" + str(data[key]) sep = '&' desti = 'gn6-helper-alta-view?' + params self.request.response.redirect(desti)
def message(self): params = self.request.form dataInici = None dataFi = None if 'dataInici' in params: dataInici = params['dataInici'] dataInici = self.context.toLocalizedTime(dataInici) if 'dataFi' in params: dataFi = params['dataFi'] dataFi = self.context.toLocalizedTime(dataFi) if dataInici and dataFi: return _("El termini per realitzar sol·licituds per aquesta prestació és del $dataInici al ${dataFi}.", mapping={"dataFi": dataFi, "dataInici": dataInici}) elif dataInici and not dataFi: return _("El termini per realitzar sol·licituds per aquesta prestació comença el ${dataInici}.", mapping={"dataInici": dataInici}) elif dataFi: return _("El termini per realitzar sol·licituds per aquesta prestació va finalitzar el ${dataFi}.", mapping={"dataFi": dataFi}) return _('No es poden realitzar sol·licituds per aquesta prestació.')
class IGN6DadesAltaForm(IGN6UrlHelperForm): """Define the fields where the user inputs the contents for a new tiquet""" assumpte = schema.TextLine( title=_(u"Assumpte"), description=_(u"Descripció curta de la raó de la sol·licitud."), ) descripcio = schema.Text( title=_(u"Descripció"), description=_(u"Descripció detallada de la raó de la sol·licitud.") ) annexe = schema.Bytes( title=_(u'Annexe'), description=_(u"Fitxer que s'afegirà com annexe a la sol·licitud. Podreu annexar més arxius, un cop creat el tiquet, des del gestor e-serveiscbl."), required=False ) redirect = schema.Text( title=_(u"Redirect"), description=_(u"Url a la que es retornarà en cas d'èxit.") )
def updateWidgets(self): # Comprovem que l'usuari té permisos d'edició a la carpeta arrel form.Form.updateWidgets(self) if not self.havePermissionAtRoot(): self._error(_('No tens permissos per accedir aquest recurs')) self._redirect()
class DadesAltaForm(form.Form, AltaTiquet): #Routa de la pàgina de servei no disponible (mirar configure.zml) NO_DISPONIBLE = '/gn6-no-disponible' fields = field.Fields(IGN6DadesAltaForm) # Aquet formulari no té titol (label) label = _(u"Creació d'una nova sol·licitud") # TODO millora: desar el nom del gestor en una property description = _( u"Omple els camps amb la informació de la sol·licitud. A partir d'aquesta és crearà un nou tiquet al gestor e-serveiscbl" ) ignoreContext = True def _getDateFromImputOrToday(self, id): """ Obte el paremetre id de la petició i el tracta com una data separada per '-', tal com la retorna z3c.form. Si no troba el parametre et retornar el valor per defecte z3c """ if id in self.request.form: dts = self.request.form[id].split('-') data = date(int(dts[0]), int(dts[1]), int(dts[2])) else: data = date.today() return data def _getUriNoDisponible(self): uri = self.context.portal_url() + self.NO_DISPONIBLE # Volem filtrar els parametres de la petició i obtenir només les dates param_list = ['dataInici', 'dataFi'] params = [] for param in param_list: if param in self.request.form: params.append(param + '=' + self.request.form[param]) # Unim els parametres de la llista amb & params = '&'.join(params) # Si hi havia algun parametre els afegim a la uri if params != '': uri += '?' + params return uri def updateWidgets(self): """ Ocultar camps a l'usuari final """ # L'usuari esta identificat? if not self._get_user(): came_from = self.request.getURL() self.request.response.redirect(self.context.portal_url() + '/login?came_from=' + came_from) return # Validació del periode dataInici = self._getDateFromImputOrToday('dataInici') dataFi = self._getDateFromImputOrToday('dataFi') if dataInici > date.today() or dataFi < date.today(): # Redirigim a la pàgina no disponible self.request.response.redirect(self._getUriNoDisponible()) return form.Form.updateWidgets(self) # Amagem alguns camps self.widgets['dataInici'].mode = interfaces.HIDDEN_MODE self.widgets['dataFi'].mode = interfaces.HIDDEN_MODE del self.widgets['dataInici'] del self.widgets['dataFi'] link_fields = ['equipResolutor', 'producte', 'subservei'] for a in link_fields: if a in self.request.form: self.widgets[a].value = self.request.form[a] self.widgets[a].mode = interfaces.HIDDEN_MODE self.widgets['redirect'].mode = interfaces.HIDDEN_MODE if self.widgets['redirect'].value == '': self.widgets['redirect'].value = self._get_redirect() @button.buttonAndHandler(_(u"Envia")) def envia(self, action): data, errors = self.extractData() if errors: self.status = self.formErrorsMessage return annexe = None # Comprovem si hi ha cap annexe if data['annexe'] is not None: # Obtenim el nom del fitxer i el contingut annexe = { 'name': util.extractFileName(self, 'form-widgets-annexe'), 'data': data.pop('annexe') } # Cridem a l'alta result = self.alta(data, annexe) # Procesem resultats self.status = result['message'] if result['code'] == self.OK: self.context.plone_utils.addPortalMessage(result['message'], 'info') self._redirect() return ''