Beispiel #1
0
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)
Beispiel #2
0
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)
Beispiel #3
0
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)
Beispiel #4
0
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)
Beispiel #5
0
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)
Beispiel #6
0
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)
Beispiel #7
0
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)
Beispiel #8
0
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)
Beispiel #9
0
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)
Beispiel #10
0
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)
Beispiel #11
0
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
Beispiel #12
0
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)
Beispiel #13
0
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)
Beispiel #14
0
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)
Beispiel #15
0
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)
Beispiel #16
0
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()
Beispiel #17
0
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)
Beispiel #18
0
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)
Beispiel #19
0
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()
Beispiel #20
0
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\
Beispiel #21
0
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)
Beispiel #22
0
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)
Beispiel #23
0
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)