def __format_additionals(additional): """ helper function to "reformat" linked objects as named dict @param additional: Array of additional items @return: dict of additional objects """ formated_additional = { 'contacts' : {}, 'hosts' : {}, 'registrars' : {} } if additional : for item in additional : if isinstance(item, objects.Contact) : formater.filterDisclosed(item) formated_additional['contacts'][item.roid] = item elif isinstance(item, objects.Host) : formated_additional['hosts'][item.name] = item elif isinstance(item, objects.Registrar) : formated_additional['registrars'][item.roid] = item return formated_additional
def format_contact(contact): """ format object of type contact add type as '!type' key and filters all internal id data @param contact: Contact object to format @return: formated contact as dict """ formater.filterDisclosed(contact) x = objects.objref.todict(contact) x['!type'] = 'Contact' formater.filterROID(x) return x
def format(result): """ function to format given Result object to HTML iterate over given Result object and format objects. @param result: Result object @return: Flask Response Object of converted Result object """ out = header() for item in result.items : if isinstance(item, objects.Domain) : out += format_domain(item, result.additional) elif isinstance(item, objects.Contact) : formater.filterDisclosed(item) out += format_contact(item, result.additional) elif isinstance(item, objects.Host) : out += format_host(item, result.additional) elif isinstance(item, objects.Registrar) : out += format_registrar(item, result.additional) else : raise formater.Error('Unknown object given: ' + str(item)) out += LF out += LF for item in result.additional : if isinstance(item, objects.Domain) : out += format_domain(item, result.additional) elif isinstance(item, objects.Contact) : formater.filterDisclosed(item) out += format_contact(item, result.additional) elif isinstance(item, objects.Host) : out += format_host(item, result.additional) elif isinstance(item, objects.Registrar) : out += format_registrar(item, result.additional) else : raise formater.Error('Unknown object given: ' + str(item)) out += LF resp = flask.make_response(out, 200) resp.headers['Content-Type'] = 'text/plain' return resp
def format(result): """ function to format given Result object to HTML iterate over given Result object and preformat objects. render to HTML by jinja2 @param result: Result object @return: Flask Response Object of converted Result object """ domains = [] contacts = [] hosts = [] registrars = [] for item in result.items : if isinstance(item, objects.Domain) : domains.append(format_domain(item)) elif isinstance(item, objects.Contact) : formater.filterDisclosed(item) contacts.append(item) elif isinstance(item, objects.Host) : hosts.append(item) elif isinstance(item, objects.Registrar) : registrars.append(item) else : raise formater.Error('Unknown object given: ' + str(item)) formated_additional = __format_additionals(result.additional) out = render_template('view.html', domains = domains, contacts = contacts, hosts = hosts, registrars = registrars, additional = formated_additional) resp = flask.make_response(out, 200) resp.headers['Content-Type'] = 'text/html' return resp
def format_contact(d, contact, parent): """ format object of type contact add additional contact:object node to given parent @param d: Frame object @param contact: Contact object @param parent: parent node in Frame object """ formater.filterDisclosed(contact) contactEl = d._addElement('contact:object', parent) contactEl.setAttribute('xmlns:contact', 'urn:ietf:params:xml:ns:rwsContact-1.0') contactEl.setAttribute('href', '/domain/' + contact.roid) d._addElement('contact:id', contactEl, contact.roid) for status in contact.status : statusEl = d._addElement('contact:status', contactEl) statusEl.setAttribute('s', status) for postalInfo in contact.postalInfo : postalInfoEl = d._addElement('contact:postalInfo', contactEl) postalInfoEl.setAttribute('type', postalInfo.type) if 'name' not in postalInfo.disclose and postalInfo.name : d._addElement('contact:name', postalInfoEl, postalInfo.name) if 'org' not in postalInfo.disclose and postalInfo.org : d._addElement('contact:org', postalInfoEl, postalInfo.org) if 'addr' not in postalInfo.disclose : addrEl = d._addElement('contact:addr', postalInfoEl) if 'street' not in postalInfo.disclose : for street in postalInfo.addr.street : d._addElement('contact:street', addrEl, street) if 'city' not in postalInfo.disclose : d._addElement('contact:city', addrEl, postalInfo.addr.city) if 'sp' not in postalInfo.disclose : d._addElement('contact:sp', addrEl, postalInfo.addr.sp) if 'pc' not in postalInfo.disclose : d._addElement('contact:pc', addrEl, postalInfo.addr.pc) if 'cc' not in postalInfo.disclose : d._addElement('contact:cc', addrEl, postalInfo.addr.cc) if not addrEl.hasChildNodes() : addrEl.unlink() if not postalInfoEl.hasChildNodes() : postalInfoEl.unlink() if 'voice' not in contact.disclose and contact.voice : voiceEl = d._addElement('contact:voice', contactEl, contact.voice.number) if contact.voice.extension: voiceEl.setAttribute('x', contact.voice.extension) if 'fax' not in contact.disclose and contact.fax : faxEl = d._addElement('contact:fax', contactEl, contact.fax.number) if contact.fax.extension: faxEl.setAttribute('x', contact.fax.extension) if 'email' not in contact.disclose and contact.email : d._addElement('contact:email', contactEl, contact.email) for registrar in contact.registrar : registrarEl = d._addElement('contact:registrar', contactEl, registrar.roid) registrarEl.setAttribute('type', registrar.type) registrarEl.setAttribute('href', '/registrar/' + registrar.roid) if contact.crDate : d._addElement('contact:crDate', contactEl, contact.crDate) if contact.upDate : d._addElement('contact:upDate', contactEl, contact.upDate) if contact.trDate : d._addElement('contact:trDate', contactEl, contact.trDate)