class CareerFormViewlet(api.Viewlet): api.context(IATNewsItem) api.viewletmanager(IBelowContentBody) def available(self): if self.context.getReferences('rel_careerform'): return True return False def update(self): if self.available(): ref = self.context.getReferences('rel_careerform')[0] kennziffer = getattr(self.context, 'kennziffer', '') pin = getattr(self.context, 'pin', '') mail = getattr(self.context, 'email', '') pin = hashlib.sha224(pin).hexdigest() self.linkurl = "%s?kennziffer=%s&pin=%s&stellentitel=%s/%s&mykennziffer=%s&empfaenger=%s" % (ref.absolute_url(), kennziffer, pin, self.context.title, kennziffer, kennziffer, mail) bewerbungsfrist = getattr(self.context, 'bewerbungsfrist') if bewerbungsfrist: self.bewerbungsfrist = bewerbungsfrist.strftime('%d.%m.%Y') else: self.bewerbungsfrist = '' self.ansprechperson = getattr(self.context, 'ansprechperson') self.telefon = getattr(self.context, 'telefon')
class ResultHautpflege(api.Page): api.context(Interface) def update(self): self.hautpflegemittel = [] sessiondata = getSessionData(self.request) brains = ploneapi.content.find(UID = sessiondata['hautpflege']) for i in brains: entry = {} obj = i.getObject() entry['title'] = obj.title entry['url'] = obj.absolute_url() entry['uid'] = obj.UID() entry['image'] = '' if obj.bild: entry['image'] = '<img src="%s/@@images/bild/thumb">' % obj.absolute_url() entry['anwendungsbereich'] = ','.join([anwendungVocabulary.getTerm(i).title for i in obj.anwendungsbereich]) 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 self.hautpflegemittel.append(entry)
class DelVerifyUser(api.Page): api.context(Interface) def render(self): key = self.request.get('code') if not key: return u"<h2>Unberechtigter Zugriff</h2><p>Sie sind nicht für den Aufruf dieser Seite berechtigt.</p>" data = readMongoUserForDel(key) if not data: return u"<h2>Fehler</h2><p>Beim Lesen Ihrer Daten ist ein Fehler aufgetreten, bitte versuchen Sie es zu einem späteren Zeitpunkt erneut.</p>" sapapi = sapshopapi.getAPI() retcode = sapapi.deleteUserVerify(**data) if retcode.EX_RETURN == 0: url = ploneapi.portal.get().absolute_url() + '/medienportal' cookie = {} key = setSessionData(self.request, cookie) message = u"Wir haben in Ihrem Auftrag die Löschung Ihres Benutzerkontos erfolgreich ausgeführt." 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'Bei der Löschung des Benutzerkontos ist ein Fehler aufgetreten. (%s)' % retcode.EX_MESSAGE ploneapi.portal.show_message(message=message, request=self.request, type='error') return self.response.redirect(url)
class SummaryViewlet(api.Viewlet): api.context(IDocument) api.viewletmanager(IBelowContent) def render(self): cleaned = cleanhtml(self.context.text.raw) return "<div> %s </div>" % summarize(cleaned)
class EdiPrintView(api.Page): api.context(Interface) def formatList(self, field_value): html = '<ul>' for i in field_value: html += '<li>%s</li>' % i html += '</ul>' return html def render(self): html = '' schema = getUtility(IDexterityFTI, name=self.context.portal_type).lookupSchema() for name, field in getFieldsInOrder(schema): if name not in ['title', 'description']: html += '<h1>%s</h1>' % field.title field_value = getattr(self.context, name) if field_value: #fragt das Feld im aktuellen Context ab if isinstance(field, RichText): if field_value.output: html += field_value.output if isinstance(field, TextLine): html += '<p>%s</p>' % field_value if isinstance(field, List): if isinstance(field.value_type, TextLine): html += self.formatList(field_value) return html
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 HSImport(api.Page): api.context(Interface) def update(self): book = xlrd.open_workbook("/tmp/Listen_Branche_DP.xls") sh = book.sheet_by_index(2) for rx in range(1, sh.nrows): print sh.row(rx)[0].value entry = {} obj = ploneapi.content.create(type='Hautschutzmittel', title=sh.row(rx)[0].value, container=self.context) obj.gefaehrdung = [ 'id_chemisch', ] kategorie = [] if u'wechsel' in sh.row(rx)[2].value: kategorie.append('id_wechselnd') if u'wasserunl' in sh.row(rx)[2].value: kategorie.append('id_nichtwasserloeslich') if u'wasserl' in sh.row(rx)[2].value: kategorie.append('id_wasserloeslich') obj.kategorie = kategorie obj.inhaltsstoffe = [ x.strip() for x in sh.row(rx)[3].value.split(',') ] obj.konservierungsmittel = [ x.strip() for x in sh.row(rx)[4].value.split(',') ] obj.bemerkungen = sh.row(rx)[5].value transaction.commit() def render(self): return "Fertig"
class getWartung(api.View): api.context(Interface) def render(self): alsoProvides(self.request, IDisableCSRFProtection) ret = {u'wartung': u'es ist ein Fehler aufgetreten'} if not ploneapi.user.is_anonymous(): user = ploneapi.user.get_current() if user: roles = ploneapi.user.get_roles(user=user) if not 'Manager' in roles: self.request.response.status = 403 return u"403:Forbidden" else: self.request.response.status = 401 return u"401:Unauthorized" registry = getUtility(IRegistry) wartung = registry[ 'bgetem.medienshop.settings.IMedienportalSettings.wartung'] if not wartung: wartung = False ret = {'wartung': wartung} payload = jsonlib2.write(ret) return payload
class NotFound(api.View): api.context(zExceptions.NotFound) api.name("index.html") def render(self): self.request.response.status = 404 return u"404:Not Found"
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 HerstellerOrdnerView(api.Page): api.context(IHerstellerOrdner) def update(self): fc = self.context.getFolderContents( contentFilter={'sort_on': 'sortable_title'}) objlist = [] for i in fc: entry = {} obj = i.getObject() entry["backrefs"] = createPullDownSnippet( back_references(obj, 'hersteller')) entry["title"] = obj.title entry["anschrift"] = createAddressSnippet(obj.anschrift1, obj.anschrift2, obj.anschrift3, obj.land, obj.telefon, obj.telefax) entry["anschrift2"] = obj.anschrift2 entry["anschrift3"] = obj.anschrift3 entry["url"] = obj.absolute_url() entry["homepage"] = obj.homepage entry["email"] = obj.email if entry["backrefs"]: objlist.append(entry) self.objlist = objlist
class VueCart(grok.View): api.context(Interface) @property def portal(self): return getToolByName(self.context, 'portal_url').getPortalObject() def getShopUrl(self): return self.context.absolute_url_path() 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 def update(self): # Lesen des Cookies aus der Session self.dev_vue_url = get_vue_url() cookie = getCartCookie(self.request) self.cart = json.dumps(cookie) print self.cart
class ResultHautschutz(api.Page): api.context(Interface) def update(self): self.hautschutzmittel = [] sessiondata = getSessionData(self.request) pcat = getToolByName(self.context, 'portal_catalog') brains = pcat(UID = sessiondata['hautschutz']) for i in brains: entry = {} obj = i.getObject() entry['title'] = obj.title entry['url'] = obj.absolute_url() entry['uid'] = obj.UID() entry['image'] = '' if obj.bild: entry['image'] = '<img src="%s/@@images/bild/thumb">' % obj.absolute_url() entry['cat'] = hskategorieVocabulary.getTerm(obj.kategorie[0]).title 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 self.hautschutzmittel.append(entry)
class Kompaktarchiv(Page): api.context(Interface) grok.layer(IAnonymousLayer) def update(self): folders = [ u'dezember-2016', u'november-2016', u'oktober-2016', u'september-2016', ] archiv = [] for i in folders: portal = ploneapi.portal.get() obj = getattr(portal, i) magazin = {} if obj: magazin['title'] = obj.description magazin['url'] = obj.absolute_url( ) + '/index.html/kompakttitelview' magazin['imgurl'] = obj.absolute_url( ) + '/medien-dieser-ausgabe/titelbild/@@images/image/thumb' print magazin['imgurl'] titelobj = getattr(obj, u'titelstory') magazin['storytitle'] = titelobj.title archiv.append(magazin) self.archiv = archiv
class Bildrechte(Page): api.context(Interface) grok.layer(IAnonymousLayer) @property def portal_catalog(self): return getToolByName(self.context, 'portal_catalog') def getImageBrains(self): folderid = self.context.aq_parent.id path = '/magazin/%s/medien-dieser-ausgabe' % folderid return self.portal_catalog(path=path, portal_type='Image') def update(self): brains = self.getImageBrains() self.bildrechte = [] bildrechte = [] for i in brains: entry = {} obj = i.getObject() if obj.Rights(): entry['title'] = obj.Description() entry['url'] = obj.absolute_url() + '/@@images/image/thumb' entry['rights'] = obj.Rights() if not obj.id == u'titelbild': bildrechte.append(entry) bildrechte.sort() self.bildrechte = bildrechte
class ShopRedaktion(api.Page): api.context(Interface) def update(self): self.artikelliste = [] self.anzeige = 'Alle Artikel' if not self.request.get('medium'): allarts = ploneapi.content.find(portal_type='Artikel', sort_on='Artikelnummer') else: allarts = ploneapi.content.find( portal_type='Artikel', Medienart=self.request.get('medium'), sort_on='Artikelnummer') self.anzeige = bgetemmedienart.getTerm( self.request.get('medium')).title self.artikelzahl = len(allarts) for i in allarts: entry = {} obj = i.getObject() entry['artikelnummer'] = obj.artikelnummer entry['title'] = obj.title entry['url'] = obj.absolute_url() entry['warengruppe'] = u'' entry['bestand'] = obj.bestand if obj.medienart: try: entry['warengruppe'] = bgetemmedienart.getTerm( obj.medienart).title except: entry['warengruppe'] = obj.medienart entry['workflow'] = i.review_state entry['warenkorb'] = obj.absolute_url( ) + '/@@tocard?redirect=' + self.context.absolute_url() self.artikelliste.append(entry)
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 ListHautpflegemittel(api.Page): api.context(Interface) def update(self): brains = ploneapi.content.find(portal_type="Hautpflegemittel", sort_on="sortable_title") self.hautpflegemittel = [] for i in brains: entry = {} obj = i.getObject() entry['title'] = obj.title entry['url'] = obj.absolute_url() entry['uid'] = obj.UID() entry['image'] = '' if obj.bild: entry['image'] = '<img src="%s/@@images/bild/thumb">' % obj.absolute_url() entry['anwendungsbereich'] = ','.join([anwendungVocabulary.getTerm(i).title for i in obj.anwendungsbereich]) 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 self.hautpflegemittel.append(entry)
class IsExternalLogin(api.View): api.context(Interface) def render(self): if "https://inwi-rue.bghw.de" in self.request.getURL(): return True return False
class SchutzhandschuhFilter(api.Viewlet): api.context(Interface) api.viewletmanager(IBelowContentTitle) def available(self): if ISchutzhandschuhOrdner.providedBy(self.context): return True return False def getHersteller(self): fc = self.context.getFolderContents() produkthersteller = [] for i in fc: if i.portal_type in [ 'Schutzhandschuh', 'Hautreinigungsmittel', 'Hautpflegemittel', 'Hautschutzmittel', 'Desinfektionsmittel' ]: obj = i.getObject() if obj.hersteller: if (obj.hersteller.to_object.UID(), obj.hersteller.to_object.title ) not in produkthersteller: produkthersteller.append( (obj.hersteller.to_object.UID(), obj.hersteller.to_object.title)) sorted_produkthersteller = sorted(produkthersteller, key=lambda tup: tup[1]) return sorted_produkthersteller def update(self): self.hersteller = self.getHersteller()
class FAQTestView(api.Page): api.context(Interface) def update(self): pcat = getToolByName(self.context, 'portal_catalog') brains = pcat(portal_type='Document', path="/praevention/oft-gestellte-fragen", sort_on='sortable_title', sort_order='ascending') objectlist = [] for i in brains: entry = {} myobj = i.getObject() url = myobj.absolute_url() entry['url'] = myobj.Title() mywebcodes = myobj.refwebcodes if not mywebcodes: mywebcodes = [] entrylist = [] for i in mywebcodes: newbrains = pcat(Webcode=i, review_state="published") if newbrains: entrylist.append(i) myobj.refwebcodes = entrylist transaction.commit() entry['codes'] = entrylist objectlist.append(entry) self.objectlist = objectlist
class RowCountView(api.Page): api.context(Interface) def zerleghtml(self, field): html = field.raw return len(html2text.html2text(html)) def update(self): pcat = getToolByName(self.context, 'portal_catalog') self.praevdocs = 0 self.praevdoc_chars = 0 self.glossars = 0 self.glossars_chars = 0 self.folders = 0 self.folders_chars = 0 self.docs = 0 self.docs_chars = 0 brains = pcat(portal_type = 'bgetem.praevention.dokupraevention') for i in brains: self.praevdocs += 1 obj = i.getObject() self.praevdoc_chars += len(obj.title.encode('utf-8')) if obj.ueberschrift: self.praevdoc_chars += len(obj.ueberschrift.encode('utf-8')) self.praevdoc_chars += len(obj.description.encode('utf-8')) if obj.haupttext: self.praevdoc_chars += self.zerleghtml(obj.haupttext) if obj.details: self.praevdoc_chars += self.zerleghtml(obj.details) if obj.zusatzinfos: self.praevdoc_chars += self.zerleghtml(obj.details) brains = pcat(portal_type = 'Folder') for i in brains: self.folders += 1 obj = i.getObject() self.folders_chars += len(obj.title.encode('utf-8')) self.folders_chars += len(obj.description.encode('utf-8')) if obj.text: self.folders_chars += self.zerleghtml(obj.text) brains = pcat(portal_type = 'Document') for i in brains: self.docs += 1 obj = i.getObject() self.docs_chars += len(obj.title.encode('utf-8')) self.docs_chars += len(obj.description.encode('utf-8')) if obj.text: self.docs_chars += self.zerleghtml(obj.text) brains = pcat(portal_type = 'PloneGlossaryDefinition') for i in brains: self.glossars += 1 obj = i.getObject() self.glossars_chars += len(obj.title.encode('utf-8')) self.glossars_chars += len(obj.description.encode('utf-8')) self.glossars_chars += len(html2text.html2text(obj.getDefinition().decode('utf-8'))) self.praevdoc_rows = self.praevdoc_chars/55 self.glossars_rows = self.glossars_chars/55 self.folders_rows = self.folders_chars/55 self.docs_rows = self.docs_chars/55 self.rowsum = self.praevdoc_rows + self.glossars_rows + self.folders_rows + self.docs_rows
class ListDesinfektionsmittel(api.Page): api.context(Interface) def update(self): brains = ploneapi.content.find(portal_type="Desinfektionsmittel", sort_on="sortable_title") self.desinfektionsmittel = [] for i in brains: entry = {} obj = i.getObject() entry['title'] = obj.title entry['url'] = obj.absolute_url() entry['uid'] = obj.UID() entry['image'] = '' if obj.bild: entry[ 'image'] = '<img src="%s/@@images/bild/thumb">' % obj.absolute_url( ) entry['anwendungsbereich'] = desinf_anwendung.getTerm( obj.anwendungsbereich).title 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 self.desinfektionsmittel.append(entry)
class MyTestView(api.Page): api.context(Interface) def update(self): pcat = getToolByName(self.context, 'portal_catalog') brains = pcat(portal_type='PloneGlossaryDefinition', sort_on='sortable_title', sort_order='ascending') objectlist = [] for i in brains: entry = {} myobj = i.getObject() url = myobj.absolute_url() entry['url'] = myobj.Title() myfield = myobj.getField('refwebcodes') mywebcodes = myfield.get(myobj) entrylist = [] for i in mywebcodes: newbrains = pcat(Webcode=i, review_state="published") if newbrains: entrylist.append(i) if not entrylist: suchbegriff = myobj.Title().replace('(','') suchbegriff = suchbegriff.replace(')','') suchbegriff = suchbegriff.split(' ') brains = pcat.searchResults(portal_type=["Folder", "bgetem.praevention.dokupraevention" ], SearchableText=suchbegriff) for i in brains: obj = i.getObject() entrylist.append(obj.webcode) myfield.set(myobj, entrylist) transaction.commit() entry['codes'] = entrylist objectlist.append(entry) self.objectlist = objectlist
class ResultDesinfektion(api.Page): api.context(Interface) def update(self): self.desinfektionsmittel = [] sessiondata = getSessionData(self.request) brains = ploneapi.content.find(UID=sessiondata['desinfektion']) for i in brains: entry = {} obj = i.getObject() entry['title'] = obj.title entry['url'] = obj.absolute_url() entry['uid'] = obj.UID() entry['image'] = '' if obj.bild: entry[ 'image'] = '<img src="%s/@@images/bild/thumb">' % obj.absolute_url( ) entry['anwendungsbereich'] = desinf_anwendung.getTerm( obj.anwendungsbereich).title 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 self.desinfektionsmittel.append(entry)
class MedienChecker(api.Page): api.context(Interface) def render(self): allarts = ploneapi.content.find(portal_type='Artikel', sort_on='Artikelnummer') artlist = [] message = u'<h2>Für folgende Artikel wurden Werte des Medienkonzepts zugeordnet:</h2>' message += u'<table class="table table-bordered"><thead><th>#</th><th>Bestellnummer</th><th>Medienkonzept</th></thead><tbody>' lfd = 1 for i in allarts: obj = i.getObject() if obj.medienkonzept: message += '<tr><td>%s</td><td><a href="%s">%s</a></td><td>%s</td></tr>' % ( lfd, obj.absolute_url(), obj.artikelnummer, obj.medienkonzept) lfd += 1 message += u'</tbody></table>' message += u'<h2>Für folgende Artikel wurden bislang noch keine Werte des Medienkonzepts zugeordnet:</h2>' message += u'<table class="table table-bordered"><thead><th>#</th><th>Bestellnummer</th><th>Titel</th></thead><tbody>' lfd = 1 for i in allarts: obj = i.getObject() if not obj.medienkonzept: message += '<tr><td>%s</td><td><a href="%s">%s</a></td><td>%s</td></tr>' % ( lfd, obj.absolute_url(), obj.artikelnummer, obj.title) lfd += 1 message += u'</tbody></table>' return message
class ZielgruppenChecker(api.Page): api.context(Interface) def render(self): allarts = ploneapi.content.find(portal_type='Artikel', sort_on='Artikelnummer') artlist = [] message = u'<h2>Für folgende Artikel wurden Zielgruppen zugeordnet:</h2>' message += u'<table class="table table-bordered"><thead><th>#</th><th>Bestellnummer</th><th>Zielgruppen</th></thead><tbody>' lfd = 1 for i in allarts: obj = i.getObject() if obj.zielgruppen: submessage = '<ul>' for k in obj.zielgruppen: submessage += '<li>%s</li>' % bgetemzielgruppen.getTerm( k).title submessage += '</ul>' message += '<tr><td>%s</td><td><a href="%s">%s</a></td><td>%s</td></tr>' % ( lfd, obj.absolute_url(), obj.artikelnummer, submessage) lfd += 1 message += u'</tbody></table>' message += u'<h2>Für folgende Artikel wurden bislang noch keine Zielgruppen zugeordnet:</h2>' message += u'<table class="table table-bordered"><thead><th>#</th><th>Bestellnummer</th><th>Titel</th></thead><tbody>' lfd = 1 for i in allarts: obj = i.getObject() if not obj.zielgruppen: message += '<tr><td>%s</td><td><a href="%s">%s</a></td><td>%s</td></tr>' % ( lfd, obj.absolute_url(), obj.artikelnummer, obj.title) lfd += 1 message += u'</tbody></table>' return message
class ImageChecker(api.Page): api.context(Interface) def render(self): allarts = ploneapi.content.find(portal_type='Artikel', sort_on='Artikelnummer') artlist = [] message = u'<h2>Für folgende Artikel wurden Bilder zugeordnet:</h2>' message += u'<table class="table table-bordered"><thead><th>#</th><th>Bestellnummer</th><th>Dateiname</th><th>Dateigroesse</th></thead><tbody>' lfd = 1 for i in allarts: obj = i.getObject() if obj.titelbild: message += '<tr><td>%s</td><td><a href="%s">%s</a></td><td>%s</td><td>%s</td></tr>' % ( lfd, obj.absolute_url(), obj.artikelnummer, obj.titelbild.filename, obj.titelbild.size) lfd += 1 message += u'</tbody></table>' message += u'<h2>Für folgende Artikel wurden bislang keine Bilder zugeordnet:</h2>' message += u'<table class="table table-bordered"><thead><th>#</th><th>Bestellnummer</th><th>Titel</th></thead><tbody>' lfd = 1 for i in allarts: obj = i.getObject() if not obj.titelbild: message += '<tr><td>%s</td><td><a href="%s">%s</a></td><td>%s</td></tr>' % ( lfd, obj.absolute_url(), obj.artikelnummer, obj.title) lfd += 1 message += u'</tbody></table>' return message
class LearningView(api.Page): api.context(Interface) def mydiff(self, html_1, html_2): diff_html = "" theDiffs = difflib.ndiff(html_1.splitlines(), html_2.splitlines()) for eachDiff in theDiffs: if (eachDiff[0] == "-"): diff_html += "<del>%s</del>" % eachDiff[1:].strip() elif (eachDiff[0] == "+"): diff_html += "<ins>%s</ins>" % eachDiff[1:].strip() return diff_html def update(self): testhtml = '<html></html>' orightml = '<html></html>' muster = ploneapi.content.find(Webcode=self.context.muster) if muster: doc = muster[0].getObject() orightml = doc.text.raw if self.context.text: testhtml = self.context.text.raw compare = pagediff(testhtml, orightml) soup = BeautifulSoup(compare, 'html.parser') dels = soup.find_all('del') inss = soup.find_all('ins') self.htmldiffs = [] for i, k in zip(dels, inss): self.htmldiffs.append((i, k)) self.comments = [] if not self.htmldiffs: commentdict = {'table': u'Bitte schauen Sie sich die Tabellenkonfiguration an.', 'thead': u'Bitte schauen Sie sich die Konfiguration der Kopfzeile an.', 'th': u'Bitte schauen Sie sich die Konfiguration der Kopfzellen an.'} elements = {} elements['table'] = False elements['thead'] = False elements['th'] = False compare = self.mydiff(testhtml, orightml) soup = BeautifulSoup(compare, 'html.parser') dels = soup.find_all('del') inss = soup.find_all('ins') diffs = dels + inss for i in diffs: if 'table' in str(i): elements['table'] = True if 'thead' in str(i): elements['thead'] = True if 'th' in str(i): elements['th'] = True for i in elements: if elements[i]: self.comments.append(commentdict[i])
class MedienImport(api.Page): api.context(Interface) def readAllArticle(self): allarts = ploneapi.content.find(portal_type='Artikel', sort_on='Artikelnummer') normids = [] for i in allarts: obj = i.getObject() artikelnummer = obj.artikelnummer art = artikelnummer.lower().strip() art = art.replace(' ', '') art = art.replace('-', '') art = art.replace('_', '') normids.append((art, artikelnummer)) return normids def update(self): normids = self.readAllArticle() book = xlrd.open_workbook(basepath + "/medienkonzept.xls") sh = book.sheet_by_index(0) goodlist = [] falselist = [] notfound = [] doublelist = [] for rx in range(1, sh.nrows): excelartikel = sh.row(rx)[0].value if excelartikel: normartikel = excelartikel.lower().strip() normartikel = normartikel.replace(' ', '') normartikel = normartikel.replace('-', '') normartikel = normartikel.replace('_', '') checklist = [] for normid in normids: if normid[0] == normartikel: values = [] for i in range(1, 4): if sh.row(rx)[i].value.strip().lower() == u'x': values.append(mediendict.get(i)) brains = ploneapi.content.find(portal_type='Artikel', Artikelnummer=normid[1]) if len(brains) == 1: brain = brains[0] obj = brain.getObject() print obj.artikelnummer, values if self.request.get('action'): if values: obj.medienkonzept = values[0] import transaction transaction.savepoint(optimistic=True) goodlist.append(excelartikel) for rx in range(1, sh.nrows): excelartikel = sh.row(rx)[0].value if excelartikel and excelartikel not in goodlist: falselist.append((rx + 1, excelartikel)) self.dataset = sh.nrows - 1 self.goodlistcount = len(goodlist) self.falselistcount = len(falselist) self.falselist = falselist