class medienBestellung(api.Form): """Form fuer die Bestellung""" api.context(Interface) fields = api.Fields(IBestellung) fields['bestellung'].allowOrdering = False fields['bestellung'].mode = "vue_input_widget" grok.implements(IArtikelListe) for field in fields: field.prefix = '' prefix = '' @property def portal(self): return getToolByName(self.context, 'portal_url').getPortalObject() def update(self): #Lesen des Cookies aus der Session cookie = getCartCookie(self.request) #Loeschen von Artikeln in der Session wenn im Formular geloescht wird if self.request.form.get('bestellung.remove'): requestkeys = self.request.keys() for i in requestkeys: if i.startswith('bestellung.checked'): fieldid = i.split('.')[-1] delart = self.request.get( 'bestellung.field.%s.field.artikel' % fieldid) del cookie[delart] setCartCookie(cookie, self.request) if not cookie: return self.request.response.redirect( self.context.absolute_url()) #Default - Belegung des Formularfeldes Bestellung mydefault = [] for i in cookie: mydefault.append( Order(artikel=i, bestellnummer=cookie[i]['bestellung'], beschreibung=cookie[i]['artikel'], anzahl=cookie[i]['menge'])) self.fields.get('bestellung').defaultValue = mydefault @api.action('Mit der Bestellung fortfahren') def handle_send(self): data, errors = self.extractData() if errors: # print "GOT ERRORS " + str(errors) return bestellcookie = {} for i in data.get('bestellung'): artdict = {} artdict['artikel'] = i.beschreibung artdict['bestellung'] = i.bestellnummer artdict['menge'] = i.anzahl bestellcookie[i.artikel] = artdict setCartCookie(bestellcookie, self.request) url = self.context.absolute_url() + '/loginform' self.response.redirect(url)
class AddGs(api.Form): api.context(Interface) fields = api.Fields(IGefahrstoffe) ignoreRequest = False ignoreContent = False def update(self): self.formurl = self.context.absolute_url() + '/addgs' @api.action('speichern') def handle_search(self): data, errors = self.extractData() if errors: ploneapi.portal.show_message( message='Bitte korrigieren Sie die angezeigten Fehler.', request=self.request, type="error") return url = self.context.absolute_url( ) + '/gsadder?gefahrstoff=%s&zeit=%s' % (data.get('gefahrstoff'), data.get('zeit')) return self.redirect(url) url = self.context.absolute_url() return self.redirect(url) @api.action('abbrechen') def handel_cancel(self): url = self.context.absolute_url() return self.redirect(url)
class ChangePassword(api.Form): api.context(Interface) fields = api.Fields(IChangePassword) dataValidators = [NewSamePasswordValidator] def update(self): self.formurl = ploneapi.portal.get().absolute_url( ) + '/medienportal/changepassword' @api.action(u'Passwort ändern') def change_pw(self): data, errors = self.extractData() if errors: return del data['new_password2'] data['email'] = getSessionData(self.request).get('email', '') sapapi = sapshopapi.getAPI() retcode = sapapi.updatePassword(**data) if retcode.EX_RETURN == 0: url = ploneapi.portal.get().absolute_url() + '/medienportal' message = u'Ihr Passwort wurde erfolgreich geändert.' ploneapi.portal.show_message(message=message, request=self.request, type='info') return self.response.redirect(url) else: url = ploneapi.portal.get().absolute_url( ) + '/medienportal/changepassword' message = u'Fehler beim Ändern Ihres Passwortes. (%s)' % retcode.EX_MESSAGE ploneapi.portal.show_message(message=message, request=self.request, type='error') return self.response.redirect(url)
class BiologieForm(api.Form): api.context(Interface) fields = api.Fields(IBiologieform) fields['gefahrstoffe'].allowOrdering = False #dataValidators = [ChemieBiologieValidator] #Weitere Gefährdungen bei dieser Tätigkeit ignoreRequest = False ignoreContent = False def update(self): self.panelclassone = 'panel-collapse collapse' self.panelclasstwo = 'panel-collapse collapse' if self.request.get('form.field.gefahrstoffe.add') or self.request.get( 'form.field.gefahrstoffe.remove'): self.panelclassone = 'panel-collapse collapse in' self.formtitle = u"Tätigkeit mit biologischen Gefährdungen" self.formdescription = u"" sessiondata = getSessionData(self.request) if sessiondata: if sessiondata.get('taetigkeit'): taetigkeit = sessiondata.get('taetigkeit') self.formtitle = taetigkeit.get('title') self.formdescription = taetigkeit.get('description') if sessiondata.get('cbsuche'): formdata = sessiondata.get('cbsuche') if formdata.get('gefahrstoffe') or formdata.get( 'thermisch') or formdata.get('mechanik'): self.panelclassone = 'panel-collapse collapse in' if formdata.get('handschuhlaenge') != u'alle' or formdata.get( 'materialdicke') != 'alle': self.panelclasstwo = 'panel-collapse collapse in' self.setContentData(DictDataManager( sessiondata.get('cbsuche'))) self.formurl = self.context.absolute_url() + '/biologieform' @api.action('Weiter') def handle_search(self): data, errors = self.extractData() if errors: ploneapi.portal.show_message( message='Bitte korrigieren Sie die angezeigten Fehler.', request=self.request, type="error") return sessiondata = getSessionData(self.request) sessiondata['cbsuche'] = data sessiondata['searchform'] = 'biologieform' sessionid = setSessionData(self.request, sessiondata) url = self.context.absolute_url() + '/chemieergebnisse' return self.response.redirect(url) @api.action('Abbrechen') def handel_cancel(self): url = ploneapi.portal.get().absolute_url() return self.redirect(url)
class ChangeAnschrift(api.Form): api.context(Interface) fields = api.Fields(IChangeAnschrift) ignoreContent = False dataValidators = [ChangeVersandValidator, AnredeValidator] def update(self): if not hasattr(self, 'collapse'): self.collapse = "panel-collapse collapse" self.userdata = getSessionData(self.request) formdata = changeformdata(self.userdata) self.formurl = ploneapi.portal.get().absolute_url( ) + '/medienportal/changeanschrift' self.homeurl = ploneapi.portal.get().absolute_url() + '/medienportal' self.weiterurl = ploneapi.portal.get().absolute_url( ) + '/medienportal/checkorder' self.card = getCartCookie(self.request) self.setContentData(DictDataManager(formdata)) @api.action(u'Kontaktdaten ändern') def change_anschrift(self): data, errors = self.extractData() if errors: message = u'Bitte beachten Sie die angezeigen Fehler' ploneapi.portal.show_message(message=message, request=self.request, type='error') self.collapse = "panel-collapse collapse in" return data['ort'] = data.pop('meinort') data['email'] = self.userdata.get('email') data['mitnr'] = self.userdata.get('item')[0].get('MITNR') sapapi = sapshopapi.getAPI() retcode = sapapi.updateUser(**data) if retcode.EX_RETURN == 0: mongodata = formatdata(sapapi.getUser(data.get('email'))) mongodata['email'] = data.get('email') key = setSessionData(self.request, mongodata) url = ploneapi.portal.get().absolute_url() + '/medienportal' message = u'Ihre Adressdaten wurden erfolgreich geändert.' ploneapi.portal.show_message(message=message, request=self.request, type='info') return self.response.redirect(url) else: url = ploneapi.portal.get().absolute_url() + '/medienportal' message = u'Fehler beim Ändern Ihrer Adressdaten (%s)' % retcode.EX_MESSAGE ploneapi.portal.show_message(message=message, request=self.request, type='info') return self.response.redirect(url)
class DeleteUserForm(api.Form): api.context(Interface) fields = api.Fields(IDeleteUser) def update(self): self.formurl = ploneapi.portal.get().absolute_url( ) + '/medienportal/deleteuserform' @api.action(u'Auftrag absenden') def del_user(self): data, errors = self.extractData() if errors: return email = getSessionData(self.request).get('email', '') sapapi = sapshopapi.getAPI() retcode = sapapi.deleteUser(email) if retcode.EX_RETURN == 0: url = ploneapi.portal.get().absolute_url() + '/medienportal' if True: code = retcode.EX_DELCODE validkey = saveMongoUserForDel(email, code) msgbody = createDelMessage(data, validkey) ploneapi.portal.send_email( recipient=email, sender=u"*****@*****.**", subject= u"Ihre Auftrag zur Löschung eines Benutzers aus dem Medienportal der BG ETEM.", body=msgbody, ) else: message = u'Leider ist beim Auftrag zur Löschung Ihres Benutzerkontos ein Fehler aufgetreten. Bitte versuchen Sie es zu\ einem späteren Zeitpunkt noch einmal' ploneapi.portal.show_message(message=message, request=self.request, type='error') return self.response.redirect(url) cookie = {} key = setSessionData(self.request, cookie) message = u'Wir haben Ihnen soeben eine Nachricht zur Bestätigung Ihrer E-Mail-Adresse gesendet. Bitte prüfen Sie\ ihr E-Mail-Postfach. Ihr Benutzerkonto kann erst gelöscht werden, wenn Sie auf den in der E-Mail\ enthaltenen Link klicken. Wir bitten um Ihr Verständnis, dass es gelegentlich beim Versand der Bestätigungsmail\ prozessbedingt zu Verzögerungen von bis zu einer Stunde kommen kann.' ploneapi.portal.show_message(message=message, request=self.request, type='info') return self.response.redirect(url) @api.action('Abbrechen') def cancel_user(self): url = ploneapi.portal.get().absolute_url() + '/medienportal' return self.response.redirect(url)
class ChangePasswordForm(api.Form): api.context(IBenutzer) fields = api.Fields(IChangePassword) def checkowner(self): userid = ploneapi.user.get_current().getId() if userid == self.context.user_id: return True if self.context.aq_inner.aq_parent.getOwner().getId() == userid: return True if self.context.aq_inner.aq_parent.Creator() == userid: if "Editor" in ploneapi.user.get_roles(username=userid, obj=self.context): return True if userid in self.context.aq_inner.aq_parent.Contributors(): if "Editor" in ploneapi.user.get_roles(username=userid, obj=self.context): return True return False def update(self): message = u"Sie haben keine Berechtigung zum Ändern des Kennwortes." if not self.checkowner(): ploneapi.portal.show_message(message=message, request=self.request, type="error") url = ploneapi.portal.get().absolute_url() return self.redirect(url) self.formurl = self.context.absolute_url() + '/changepasswordform' @api.action("Neues Password speichern") def save_password(self): data, errors = self.extractData() if errors: ploneapi.portal.show_message( message='Bitte korrigieren Sie die angezeigten Fehler.', request=self.request, type="error") return message = u"Ihr Passwort wurde erfolgreich geändert." self.context.password = data.get('password') ploneapi.portal.show_message(message=message, request=self.request, type="info") url = ploneapi.portal.get().absolute_url() return self.redirect(url) @api.action('Abbrechen') def handel_cancel(self): url = ploneapi.portal.get().absolute_url() return self.redirect(url)
class DownloadBewerbungen(api.Form): api.context(IBewerbungenDownload) fields = api.Fields(IBewerbungen) @api.action('Download') def handle_download(self): data, errors = self.extractData() if errors: return data['handling'] = 'download' baseurl = ploneapi.portal.get().absolute_url() params = urllib.urlencode(data) url = '%s/readdata?%s' % (baseurl, params) return self.response.redirect(url)
class ResetPassword(api.Form): api.context(Interface) fields = api.Fields(IForgotPassword) def update(self): self.formurl = ploneapi.portal.get().absolute_url( ) + '/medienportal/resetpassword' @api.action(u'Passwort zurücksetzen') def reset_pw(self): data, errors = self.extractData() if errors: return usermail = data.get('email') sapapi = sapshopapi.getAPI() retcode = sapapi.resetPassword(usermail) if retcode.EX_RETURN == 0: url = ploneapi.portal.get().absolute_url() + '/medienportal' if True: code = retcode.EX_PASSKEY validkey = saveMongoUserForPwReset(usermail, code) ploneapi.portal.send_email( recipient=usermail, sender=u"*****@*****.**", subject=u"Zurücksetzen des Passworts auf bgetem.de", body=createResetMessage(validkey), ) message = u'Wir haben Ihnen eine E-Mail geschickt. Bitte prüfen Sie Ihr E-Mail-Postfach.' ploneapi.portal.show_message(message=message, request=self.request, type='info') return self.response.redirect(url) else: message = u'Leider ist beim Zurücksetzen Ihres Passwortes ein Fehler aufgetreten. Bitte versuchen Sie es zu\ einem späteren Zeitpunkt noch einmal.' ploneapi.portal.show_message(message=message, request=self.request, type='error') return self.response.redirect(url) else: url = ploneapi.portal.get().absolute_url() + '/medienportal' message = u'Fehler beim Zurücksetzen Ihres Passwortes. (%s)' % retcode.EX_MESSAGE ploneapi.portal.show_message(message=message, request=self.request, type='error') return self.response.redirect(url)
class CreateValidPw(api.Form): api.context(Interface) fields = api.Fields(ICreateValidPw) dataValidators = [SamePasswordValidator] def update(self): self.url = ploneapi.portal.get().absolute_url() + '/medienportal' self.formurl = ploneapi.portal.get().absolute_url( ) + '/medienportal/createvalidpw' if self.request.get('code'): setSessionData(self.request, {'resetkey': self.request.get('code')}) @api.action(u'Neues Passwort speichern') def change_pw(self): data, errors = self.extractData() if errors: return mycookie = getSessionData(self.request) resetkey = mycookie.get('resetkey') mongodata = readMongoUserForPwReset(resetkey) if not mongodata: message = u"Fehler beim Lesen Ihrer Daten! Bitte versuchen Sie es zu einem späteren Zeitpunkt erneut." ploneapi.portal.show_message(message=message, request=self.request, type='error') return self.response.redirect(url) newdata = {} newdata['email'] = mongodata.get('email') newdata['old_password'] = mongodata.get('pwcode') newdata['new_password'] = data.get('passwort') sapapi = sapshopapi.getAPI() retcode = sapapi.updatePassword(**newdata) if retcode.EX_RETURN == 0: url = ploneapi.portal.get().absolute_url() + '/medienportal' message = u'Ihr Passwort wurde erfolgreich gespeichert. Sie können sich nun mit dem neuen Passwort anmelden.' ploneapi.portal.show_message(message=message, request=self.request, type='info') return self.response.redirect(url) else: url = ploneapi.portal.get().absolute_url() + '/medienportal' message = u'Fehler beim Speichern Ihres Passwortes. (%s)' % retcode.EX_MESSAGE ploneapi.portal.show_message(message=message, request=self.request, type='error') return self.response.redirect(url)
class GetUser(api.Form): api.context(Interface) fields = api.Fields(ISearchUser) @api.action('Suchen') def search_user(self): data, errors = self.extractData() if errors: return sapapi = sapshopapi.getAPI() if '@' in data.get('email'): print 'SAP-Daten' userdata = sapapi.getUser(data.get('email')) else: print 'Mongo-Daten' userdata = getMongoUser(data.get('email')) print userdata
class MechanikForm(api.Form): api.context(Interface) fields = api.Fields(IMechanikform) ignoreRequest = False ignoreContent = False def update(self): self.formtitle = u"Tätigkeit mit mechanischen Gefährdungen" self.formdescription = u"" sessiondata = getSessionData(self.request) if sessiondata: if sessiondata.get('taetigkeit'): taetigkeit = sessiondata.get('taetigkeit') self.formtitle = taetigkeit.get('title') self.formdescription = taetigkeit.get('description') if sessiondata.get('mechaniksuche'): mechdata = sessiondata.get('mechaniksuche') mydict = {} for i in mechdata: if i in ['abrieb', 'riss', 'stick']: mydict[i] = rankmapping(mechdata[i]) elif i == 'schnittcoup': mydict[i] = rankmapping2(mechdata[i]) elif i == 'schnittiso': mydict[i] = rankmapping3(mechdata[i]) self.setContentData(DictDataManager(mydict)) self.formurl = self.context.absolute_url() + '/mechanikform' @api.action('Suchen') def handle_search(self): data, errors = self.extractData() if errors: ploneapi.portal.show_message( message='Bitte korrigieren Sie die angezeigten Fehler.', request=self.request, type="error") return params = urllib.urlencode(data) url = self.context.absolute_url() + '/mechanikergebnisse?' + params return self.response.redirect(url) @api.action('Abbrechen') def handel_cancel(self): url = ploneapi.portal.get().absolute_url() return self.redirect(url)
class HSFinden(api.Form): api.context(Interface) fields = api.Fields(IHSfinden) fields['gefahrstoffe'].allowOrdering = False ignoreRequest = False ignoreContent = False def update(self): self.formtitle = u"Tätigkeit mit chemischen Gefährdungen" self.formdescription = u"" sessiondata = getSessionData(self.request) if sessiondata: if sessiondata.get('taetigkeit'): taetigkeit = sessiondata.get('taetigkeit') self.formtitle = taetigkeit.get('title') self.formdescription = taetigkeit.get('description') if sessiondata.get('cbsuche'): if sessiondata.get('hhplan') == True: url = self.context.absolute_url() + '/hautschutzmittel' return self.response.redirect(url) self.setContentData(DictDataManager( sessiondata.get('cbsuche'))) self.formurl = self.context.absolute_url() + '/hsfinden' @api.action('Weiter') def handle_search(self): data, errors = self.extractData() if errors: ploneapi.portal.show_message( message='Bitte korrigieren Sie die angezeigten Fehler.', request=self.request, type="error") return sessiondata = getSessionData(self.request) sessiondata['chemiesuche'] = data sessionid = setSessionData(self.request, sessiondata) url = self.context.absolute_url() + '/hautschutzmittel' return self.response.redirect(url) @api.action('Abbrechen') def handel_cancel(self): url = ploneapi.portal.get().absolute_url() return self.redirect(url)
class TaetigkeitForm(api.Form): api.context(Interface) fields = api.Fields(ITaetigkeitform) ignoreRequest = False ignoreContent = False def update(self): sessiondata = getSessionData(self.request) taetigkeit = sessiondata.get('taetigkeit') self.setContentData(DictDataManager(taetigkeit)) self.formurl = self.context.absolute_url() + '/taetigkeitform' @api.action('Weiter') def handle_search(self): data, errors = self.extractData() if errors: ploneapi.portal.show_message( message='Bitte korrigieren Sie die angezeigten Fehler.', request=self.request, type="error") return sessiondata = getSessionData(self.request) taetigkeit = sessiondata.get('taetigkeit') taetigkeit['title'] = data.get('title') taetigkeit['beschreibung'] = data.get('beschreibung') taetigkeit['gefaehrdung'] = data.get('gefaehrdung') sessiondata['taetigkeit'] = taetigkeit sessiondata['hhplan'] = True sessionid = setSessionData(self.request, sessiondata) gefaehrdung = data.get('gefaehrdung') if gefaehrdung == u'c': form = '/chemieform' elif gefaehrdung == u'b': form = '/biologieform' elif gefaehrdung == u'm': form = '/mechanikform' url = self.context.absolute_url() + form return self.response.redirect(url) @api.action('Abbrechen') def handel_cancel(self): url = ploneapi.portal.get().absolute_url() return self.redirect(url)
class LoginForm(api.Form): api.context(Interface) fields = api.Fields(ILogin) def update(self): self.registerurl = ploneapi.portal.get().absolute_url( ) + '/medienportal/createuser' self.formurl = ploneapi.portal.get().absolute_url( ) + '/medienportal/loginform' #Redirect if user is already logged in if getSessionData(self.request): if getSessionData(self.request).get('email'): url = ploneapi.portal.get().absolute_url( ) + '/medienportal/changeanschrift' return self.response.redirect(url) @api.action('Anmelden') def get_user(self): data, errors = self.extractData() if errors: return sapapi = sapshopapi.getAPI() retcode = sapapi.getPassword(data.get('email'), data.get('passwort')) if retcode: mongodata = formatdata(sapapi.getUser(data.get('email'))) mongodata['email'] = data.get('email') #mongodata['passwort'] = data.get('passwort') key = setSessionData(self.request, mongodata) url = self.context.absolute_url() + '/changeanschrift' return self.response.redirect(url) message = u'Benutzername oder Kennwort falsch' ploneapi.portal.show_message(message=message, request=self.request, type='error') return @api.action('Passwort vergessen') def go_passwort(self): url = self.context.absolute_url() + '/resetpassword' return self.response.redirect(url)
class PartnerSuche(api.Form): api.context(Interface) fields = api.Fields(IPartnerSearch) @property def portal_catalog(self): return getToolByName(self.context, 'portal_catalog') @api.action('Suchen') def handle_send(self): data, errors = self.extractData() if errors: return versichertencoordinates = getlatlong(data.get('ort')) pcat = self.portal_catalog brains = pcat(portal_type="Partner") myobj = brains[0].getObject() partner = '%s %s %s' % (myobj.strhnr, myobj.plz, myobj.ort) partnercoordinates = getlatlong(partner) distance = getdistance(partnercoordinates, versichertencoordinates) print distance import pdb pdb.set_trace()
class NewPassword(api.Form): api.context(Interface) fields = api.Fields(INewPassword) dataValidators = [SamePasswordValidator] def update(self): self.formurl = ploneapi.portal.get().absolute_url( ) + '/medienportal/newpassword' self.oldpw = self.request.get('code') @api.action(u'Neues Passwort speichern') def change_pw(self): data, errors = self.extractData() if errors: return newdata = {} newdata['email'] = data.get('email') newdata['old_password'] = self.oldpw newdata['new_password'] = data.get('passwort') sapapi = sapshopapi.getAPI() retcode = sapapi.updatePassword(**newdata) if retcode.EX_RETURN == 0: url = ploneapi.portal.get().absolute_url() + '/medienportal' message = u'Ihr Passwort wurde erfolgreich gespeichert. Sie können sich nun mit dem neuen Passwort anmelden.' ploneapi.portal.show_message(message=message, request=self.request, type='info') return self.response.redirect(url) else: url = ploneapi.portal.get().absolute_url() + '/medienportal' message = u'Fehler beim Speichern Ihres Passwortes. (%s)' % retcode.EX_MESSAGE ploneapi.portal.show_message(message=message, request=self.request, type='error') return self.response.redirect(url)
class Hautschutzplan(api.Form): api.context(Interface) fields = api.Fields(IHautschutzplan) ignoreRequest = False ignoreContent = False def formatMittel(self, products): pcat = getToolByName(self.context, 'portal_catalog') brains = pcat(UID=products) mittel = [] for i in brains: entry = {} obj = i.getObject() entry['title'] = obj.title entry['url'] = obj.absolute_url() hersteller = '' herstellerurl = '' if obj.hersteller: if obj.hersteller.to_object: hersteller = obj.hersteller.to_object.title herstellerurl = obj.hersteller.to_object.absolute_url() entry['hersteller'] = hersteller entry['herstellerurl'] = herstellerurl mittel.append(entry) return mittel def update(self): self.formtitle = u"Hand- und Hautschutzplan" self.formdescription = u"" sessiondata = getSessionData(self.request) if sessiondata: if sessiondata.get('hautschutzplan'): self.setContentData(DictDataManager(sessiondata.get('hautschutzplan'))) self.taetigkeit = '' self.beschreibung = '' if sessiondata.get('taetigkeit'): taetigkeit = sessiondata.get('taetigkeit') self.taetigkeit = taetigkeit.get('title') self.beschreibung = taetigkeit.get('description') self.hautschutz = self.formatMittel(sessiondata.get('hautschutz')) self.schutzhandschuhe = self.formatMittel(sessiondata.get('schutzhandschuhe')) self.desinfektion = self.formatMittel(sessiondata.get('desinfektion')) self.hautreinigung = self.formatMittel(sessiondata.get('hautreinigung')) self.hautpflege = self.formatMittel(sessiondata.get('hautpflege')) self.formurl = self.context.absolute_url() + '/hautschutzplan' @api.action('Daten Speichern') def handle_search(self): data, errors = self.extractData() if errors: ploneapi.portal.show_message(message='Bitte korrigieren Sie die angezeigten Fehler.', request=self.request, type="error") return sessiondata = getSessionData(self.request) sessiondata['hautschutzplan'] = data sessionid = setSessionData(self.request, sessiondata) url = self.context.absolute_url() + '/hautschutzplan' return self.response.redirect(url) @api.action('PDF-Dokument ansehen') def handel_cancel(self): data, errors = self.extractData() if errors: ploneapi.portal.show_message(message='Bitte korrigieren Sie die angezeigten Fehler.', request=self.request, type="error") return sessiondata = getSessionData(self.request) sessiondata['hautschutzplan'] = data sessionid = setSessionData(self.request, sessiondata) url = self.context.absolute_url() + '/@@pdfview' return self.redirect(url)
class PartnerSearch(api.Form): api.context(Interface) label = u'Suche in der Partnerdatenbank' fields = api.Fields(IPartnerSearch) fields['plz'].htmlAttributes['maxlength'] = 5 fields['plz'].htmlAttributes['size'] = 6 ignoreContent = False def update(self): #self.portal_type = '' self.message = '' self.headimage = '' if self.context.image: self.headimage = "%s/@@images/image/large" % self.context.absolute_url( ) self.formurl = self.context.absolute_url() self.altformurl = self.context.absolute_url() + '/partnerwordsearch' if not hasattr(self, 'partners'): self.partners = [] def createKontaktinfos(self, obj): kontaktinfos = [] oldkontakt = [(u'telefon', u'Telefon'), (u'telefax', u'Telefax'), (u'mobil', u'Mobil'), (u'email', u'E-Mail')] for value, title in oldkontakt: if getattr(obj, value, ''): wert = getattr(obj, value) if value == 'email': wert = '<a href="mailto:%s">%s</a>' % (wert, wert) kontaktinfos.append((getGlyph(value), title, wert, '')) if obj.kontaktinformationen: for i in obj.kontaktinformationen: wert = i.get('kontaktadresse') if i.get('kontaktart') == 'email': wert = '<a href="mailto:%s">%s</a>' % (wert, wert) if i.get('kontaktart') != 'www': kontaktinfos.append( (getGlyph(i.get('kontaktart')), kontaktarten.getTerm(i.get('kontaktart')).title, wert, i.get('bemerkung'))) return kontaktinfos @api.action('Suchen') def handle_search(self): data, errors = self.extractData() if errors: return brains = ploneapi.content.find(portal_typ='Partner', art=data.get('art')) self.partners = [] adresse = "%s, Deutschland" % data.get('plz') if data.get('strhnr'): adresse = "%s, %s, Deutschland" % (data.get('strhnr'), data.get('plz')) location = geolocator.geocode(adresse, timeout=10) geolocations = [] if location: location = (location.latitude, location.longitude) geolocation = { "title": "Adresse Kunde", "lon": location[1], "lat": location[0], "color": '#555555' } geolocations = [geolocation] session = ISession(self.request) for i in brains: entry = {} partner = (i.latitude, i.longitude) distance = great_circle(location, partner).km if data.get('umkreis') != 'alle': if distance <= data.get('umkreis'): obj = i.getObject() entry['title'] = obj.title entry['id'] = obj.UID() entry['url'] = obj.absolute_url() entry['plz'] = obj.plz entry['ort'] = obj.ort entry['kontakt'] = self.createKontaktinfos(obj) entry['distance'] = distance entry['printdistance'] = int(round(distance)) entry['zusatzinfos'] = obj.zusatzinfos self.partners.append(entry) geolocation = { "title": obj.title, "lon": i.longitude, "lat": i.latitude, "color": '#004994' } geolocations.append(geolocation) else: obj = i.getObject() entry['title'] = obj.title entry['id'] = obj.UID() entry['url'] = obj.absolute_url() entry['plz'] = obj.plz entry['ort'] = obj.ort entry['kontakt'] = self.createKontaktinfos(obj) entry['distance'] = distance entry['printdistance'] = int(round(distance)) entry['zusatzinfos'] = obj.zusatzinfos self.partners.append(entry) geolocation = { "title": obj.title, "lon": i.longitude, "lat": i.latitude, "color": '#004994' } geolocations.append(geolocation) if self.partners: self.partners = sorted(self.partners, key=itemgetter('distance')) else: self.message = u'Leider konnten für Ihre Angaben keine Netzwerkpartner gefunden werden. Bitte ändern Sie gegebenenfalls Ihre Angaben\ und versuchen es dann erneut.' #ploneapi.portal.show_message(self.message, self.request, type="error") #return self.response.redirect(self.formurl) session['geodata'] = geolocations session.save()
class PartnerWordSearch(api.Form): api.context(Interface) label = u'Suche in der Partnerdatenbank' fields = api.Fields(IPartnerWordSearch) ignoreContent = False def update(self): self.message = '' self.headimage = '' if self.context.image: self.headimage = "%s/@@images/image/large" % self.context.absolute_url( ) self.formurl = self.context.absolute_url() + '/partnerwordsearch' self.altformurl = self.context.absolute_url() if not hasattr(self, 'partners'): self.partners = [] def createKontaktinfos(self, obj): kontaktinfos = [] oldkontakt = [(u'telefon', u'Telefon'), (u'telefax', u'Telefax'), (u'mobil', u'Mobil'), (u'email', u'E-Mail')] for value, title in oldkontakt: if getattr(obj, value, ''): wert = getattr(obj, value) if value == 'email': wert = '<a href="mailto:%s">%s</a>' % (wert, wert) kontaktinfos.append((getGlyph(value), title, wert, '')) if obj.kontaktinformationen: for i in obj.kontaktinformationen: wert = i.get('kontaktadresse') if i.get('kontaktart') == 'email': wert = '<a href="mailto:%s">%s</a>' % (wert, wert) if i.get('kontaktart') != 'www': kontaktinfos.append( (getGlyph(i.get('kontaktart')), kontaktarten.getTerm(i.get('kontaktart')).title, wert, i.get('bemerkung'))) return kontaktinfos @api.action('Suchen') def handle_search(self): data, errors = self.extractData() if errors: return if not data.get('art'): brains = ploneapi.content.find(portal_typ='Partner', partnersuche=data.get('begriff') + "*") else: brains = ploneapi.content.find(portal_typ='Partner', partnersuche=data.get('begriff') + "*", art=data.get('art')) self.partners = [] for i in brains: entry = {} obj = i.getObject() entry['title'] = obj.title entry['id'] = obj.UID() entry['url'] = obj.absolute_url() entry['plz'] = obj.plz entry['ort'] = obj.ort entry['kontakt'] = self.createKontaktinfos(obj) partnerarten = [] for k in obj.art: partnerarten.append(spezialgebiete.getTerm(k).title) entry['partnerarten'] = ', '.join(partnerarten) self.partners.append(entry) if self.partners: self.partners = sorted(self.partners, key=itemgetter('plz')) else: self.message = u'Leider konnten für Ihre Angaben keine Netzwerkpartner gefunden werden. Bitte ändern Sie gegebenenfalls Ihre Angaben und\
class TaetigkeitShortForm(api.Form): api.context(Interface) fields = api.Fields(ITaetigkeitform) ignoreRequest = False ignoreContent = False def update(self): formdict = {} formdict['description'] = self.context.description formdict['title'] = self.context.title formdict['beschreibung'] = self.context.text formdict['gefaehrdung'] = self.context.gefaehrdung self.setContentData(DictDataManager(formdict)) self.formurl = self.context.absolute_url() + '/taetigkeitshortform' @api.action('Weiter') def handle_search(self): data, errors = self.extractData() if errors: ploneapi.portal.show_message( message='Bitte korrigieren Sie die angezeigten Fehler.', request=self.request, type="error") return sessiondata = getSessionData(self.request) taetigkeit = sessiondata.get('taetigkeit') taetigkeit['title'] = data.get('title') taetigkeit['description'] = data.get('description') taetigkeit['beschreibung'] = data.get('beschreibung') taetigkeit['gefaehrdung'] = data.get('gefaehrdung') sessiondata['taetigkeit'] = taetigkeit if self.context.gefaehrdung == u'c': chemiesuche = {} gefahrstoffe = [] gefahrstoffschutz = self.context.gefahrstoffschutz for i in gefahrstoffschutz: gefahrstoffe.append(i.get('gefahrstoff')) chemiesuche['gefahrstoffe'] = gefahrstoffe chemiesuche['biologie'] = self.context.biologie chemiesuche['mechanik'] = self.context.mechanik chemiesuche['thermisch'] = self.context.thermisch sessiondata['chemiesuche'] = chemiesuche if self.context.gefaehrdung == u'm': mechaniksuche = {} mechaniksuche['abrieb'] = self.context.abrieb mechaniksuche['schnittcoup'] = self.context.schnitt mechaniksuche['riss'] = self.context.riss mechaniksuche['stick'] = self.context.stick if hasattr(self.context, 'schnittiso'): mechaniksuche['schnittiso'] = self.context.schnittiso else: if self.context.schnitt != u'nicht_relevant': mechaniksuche['schnittiso'] = u'nicht_relevant' else: mechaniksuche['schnittiso'] = u'nicht_relevant' mechaniksuche['stoss'] = self.context.stoss sessiondata['mechaniksuche'] = mechaniksuche sessiondata['hhplan'] = True sessionid = setSessionData(self.request, sessiondata) gefaehrdung = self.context.gefaehrdung if gefaehrdung == u'c': form = '/chemieform' elif gefaehrdung == u'm': form = '/mechanikform' url = self.context.absolute_url() + form return self.response.redirect(url) @api.action('Abbrechen') def handel_cancel(self): url = ploneapi.portal.get().absolute_url() return self.redirect(url)
class CheckOrder(api.Form): api.context(Interface) fields = api.Fields(ICheckOrder) def update(self): self.formurl = ploneapi.portal.get().absolute_url( ) + '/medienportal/checkorder' self.userdata = getSessionData(self.request) self.verif = False if self.userdata.get('item')[0].get('MITNR'): self.verif = self.userdata.get('item')[0].get('VERIF') self.mnr = self.userdata.get('item')[0].get('MITNR') checker = self.checkBestand() if not checker: message = u'Bei Ihrer Bestellung ist leider ein Fehler aufgetreten. Bitte beachten Sie die aktualisierten Mengen bei den rot markierten\ Artikeln.' ploneapi.portal.show_message(message=message, request=self.request, type='error') def checkBestand(self): check = True carddata = getCartCookie(self.request) self.artlist = [] self.gesamt = decimal.Decimal(0.0) self.gesamt_mem = decimal.Decimal(0.0) for i in carddata: art = {} artikel = ploneapi.content.find(UID=i)[0].getObject() artikel._v_article = None art['style'] = 'color:black;' if artikel.bestand < int(carddata[i].get('menge')): check = False orderdata = carddata[i] orderdata['menge'] = int(artikel.bestand) carddata[i] = orderdata art['style'] = 'color:red;' art['menge'] = carddata[i].get('menge') art['matnr'] = carddata[i].get('bestellung') art['titel'] = carddata[i].get('artikel') art['preis'] = formatMoney( decimal.Decimal(art['menge']) * artikel.preis) self.gesamt += decimal.Decimal(art['menge']) * artikel.preis if art['menge'] <= artikel.freimenge: self.gesamt_mem = self.gesamt_mem art['preis_mem'] = formatMoney(decimal.Decimal(0.0)) else: self.gesamt_mem = (decimal.Decimal(art['menge']) - artikel.freimenge) * artikel.preis_mem art['preis_mem'] = formatMoney( (decimal.Decimal(art['menge']) - artikel.freimenge) * artikel.preis_mem) self.artlist.append(art) self.gesamt += decimal.Decimal(3.5) self.gesamt = formatMoney(self.gesamt) self.gesamt_mem = formatMoney(self.gesamt_mem) if check == False: card = setCartCookie(carddata, self.request) return check def is_user(self): ret = 'anon' userdata = getSessionData(self.request) if userdata.get('email'): if userdata.get('item')[0].get('MITNR'): if userdata.get('item')[0].get('VERIF'): ret = 'mitglied' else: if userdata.get('item')[0].get('VERIF'): ret = 'notmitglied' return ret @api.action('Verbindlich bestellen') def order(self): data, errors = self.extractData() if self.verif and len(errors) == 2: errors = None if errors: return sapapi = sapshopapi.getAPI() checker = self.checkBestand() if not checker: url = ploneapi.portal.get().absolute_url() + '/checkorder' message = u'Bei Ihrer Bestellung ist leider ein Fehler aufgetreten. Bitte beachten Sie die aktualisierten Mengen bei den rot markierten\ Artikeln.' ploneapi.portal.show_message(message=message, request=self.request, type='error') return bestellung = sapapi.createOrder(self.userdata.get('email'), self.artlist) if bestellung.EX_RETURN == 0: self.bestellnummer = bestellung.EX_VBELN self.userdata['bestellnummer'] = self.bestellnummer key = setSessionData(self.request, self.userdata) mime_msg = MIMEMultipart('related') mime_msg['Subject'] = u"Ihre Bestellung auf bgetem.de" mime_msg['From'] = u"*****@*****.**" mime_msg['To'] = self.userdata.get('email') mime_msg.preamble = 'This is a multi-part message in MIME format.' msgAlternative = MIMEMultipart('alternative') mime_msg.attach(msgAlternative) htmltext = createOrderMessage(self.userdata, self.verif, self.mnr, self.artlist, self.gesamt_mem, self.gesamt, self.bestellnummer) msg_txt = MIMEText(htmltext, _subtype='html', _charset='utf-8') msgAlternative.attach(msg_txt) mail_host = ploneapi.portal.get_tool(name='MailHost') mail_host.send(mime_msg.as_string()) #message = u'Vielen Dank, Ihre Bestellung ist bei uns eingegangen. Sie erhalten eine Bestätigung per E-Mail.' #ploneapi.portal.show_message(message=message, request=self.request, type='info') try: carddata = getCartCookie(self.request) for i in carddata: artikel = ploneapi.content.find(UID=i)[0].getObject() artikel._v_article = None session = ISession(self.request) del session['cart'] session.save() except: print u'Problem beim Delete Session' url = ploneapi.portal.get().absolute_url( ) + '/medienportal/orderconfirm' return self.response.redirect(url) else: message = u'Bei Ihrer Bestellung ist leider ein Fehler aufgetreten. Bitte versuchen Sie es später noch einmal. (%s)' % bestellung.EX_MESSAGE ploneapi.portal.show_message(message=message, request=self.request, type='error') return self.response.redirect(self.formurl)
class CreateUser(api.Form): api.context(Interface) fields = api.Fields(IUser) fields['name1'].htmlAttributes['maxlength'] = 40 fields['name2'].htmlAttributes['maxlength'] = 40 fields['name3'].htmlAttributes['maxlength'] = 40 fields['name4'].htmlAttributes['maxlength'] = 40 fields['strasse'].htmlAttributes['maxlength'] = 35 fields['plz'].htmlAttributes['maxlength'] = 10 fields['mitnr'].htmlAttributes['maxlength'] = 8 fields['telefon'].htmlAttributes['maxlength'] = 20 fields['meinort'].htmlAttributes['maxlength'] = 25 fields['name1_v'].htmlAttributes['maxlength'] = 40 fields['name2_v'].htmlAttributes['maxlength'] = 40 fields['name3_v'].htmlAttributes['maxlength'] = 40 fields['name4_v'].htmlAttributes['maxlength'] = 40 fields['strasse_v'].htmlAttributes['maxlength'] = 35 fields['plz_v'].htmlAttributes['maxlength'] = 10 fields['ort_v'].htmlAttributes['maxlength'] = 25 dataValidators = [SamePasswordValidator, VersandValidator, AnredeValidator] def update(self): self.formurl = ploneapi.portal.get().absolute_url( ) + '/medienportal/createuser' @api.action('Speichern') def create_user(self): data, errors = self.extractData() if errors: message = u'Bitte beachten Sie die angezeigen Fehler' ploneapi.portal.show_message(message=message, request=self.request, type='error') return data['ort'] = data.pop('meinort') url = ploneapi.portal.get().absolute_url() + '/medienportal' sapapi = sapshopapi.getAPI() userdata = sapapi.getUser(data.get('email')) if userdata: message = u'Leider ist bei der Registrierung ein Fehler aufgetreten: Die eingegebene E-Mail-Adresse ist bereits\ bei uns registriert. Falls Sie Ihr Passwort vergessen haben, verwenden Sie bitte die Funktion "Passwort vergessen".' ploneapi.portal.show_message(message=message, request=self.request, type='error') return self.response.redirect(url) try: validkey = saveMongoUser(data) ploneapi.portal.send_email( recipient=data.get('email'), sender=u"*****@*****.**", subject=u"Ihre Registrierung für das Medienportal der BG ETEM.", body=createBodyMessage(data, validkey), ) except: message = u'Leider ist beim Anlegen Ihres Benutzerkontos ein Fehler aufgetreten. Bitte versuchen Sie es zu\ einem späteren Zeitpunkt noch einmal' ploneapi.portal.show_message(message=message, request=self.request, type='error') return self.response.redirect(url) message = u'Wir haben Ihnen soeben eine Nachricht zur Bestätigung Ihrer E-Mail-Adresse gesendet. Bitte prüfen Sie\ ihr E-Mail-Postfach. Ihr Benutzerkonto kann erst aktiviert werden, wenn Sie auf den in der E-Mail\ enthaltenen Link klicken. Wir bitten um Ihr Verständnis, dass es gelegentlich beim Versand der Bestätigungsmail\ prozessbedingt zu Verzögerungen von bis zu einer Stunde kommen kann.' ploneapi.portal.show_message(message=message, request=self.request, type='info') return self.response.redirect(url) @api.action('Abbrechen') def cancel_user(self): url = ploneapi.portal.get().absolute_url() + '/medienportal' return self.response.redirect(url)