diff -r 058bb3dc685f -r 0b59724cb3f2 devtools/cwtwill.py --- a/devtools/cwtwill.py Mon Jan 04 18:40:30 2016 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,127 +0,0 @@ -# copyright 2003-2010 LOGILAB S.A. (Paris, FRANCE), all rights reserved. -# contact http://www.logilab.fr/ -- mailto:contact@logilab.fr -# -# This file is part of CubicWeb. -# -# CubicWeb is free software: you can redistribute it and/or modify it under the -# terms of the GNU Lesser General Public License as published by the Free -# Software Foundation, either version 2.1 of the License, or (at your option) -# any later version. -# -# CubicWeb is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS -# FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more -# details. -# -# You should have received a copy of the GNU Lesser General Public License along -# with CubicWeb. If not, see . -"""cubicweb extensions for twill - -""" - -import re -from urllib import quote - -from twill import commands as twc - -# convenience / consistency renaming -has_text = twc.find -hasnt_text = twc.notfind - - -# specific commands -_LINK = re.compile('(.*?)', re.I | re.S) - -def has_link(text, url=''): - browser = twc.get_browser() - html = browser.get_html() - if html: - for match in _LINK.finditer(html): - linkurl = match.group(1) - linktext = match.group(2) - if linktext == text: - # if url is specified linkurl must match - if url and linkurl != url: - continue - return - raise AssertionError('link %s (%s) not found' % (text, url)) - - -def view(rql, vid=''): - """ - >> view 'Project P' - - apply to 's rset - """ - if vid: - twc.go('view?rql=%s&vid=%s' % (quote(rql), vid)) - else: - twc.go('view?rql=%s' % quote(rql)) - -def create(etype): - """ - >> create Project - - go to 's creation page - """ - twc.go('view?etype=%s&vid=creation' % etype) - -def edit(rql): - """ - >> edit "Project P WHERE P eid 123" - - calls edition view for - """ - twc.go('view?rql=%s&vid=edition' % quote(rql)) - - - - -def setvalue(formname, fieldname, value): - """ - >> setvalue entityForm name pylint - - sets the field's value in the form - should either be the form's index, the form's name - or the form's id - """ - browser = twc.get_browser() - form = browser.get_form(formname) - if form is None: - # try to find if one of the forms has as id - for index, form in enumerate(browser._browser.forms()): - # forms in cubicweb don't always have a name - if form.attrs.get('id') == formname: - # browser.get_form_field knows how to deal with form index - formname = str(index+1) - break - else: - raise ValueError('could not find form named <%s>' % formname) - eid = browser.get_form_field(form, 'eid').value - twc.formvalue(formname, '%s:%s' % (fieldname, eid), value) - - -def submitform(formname, submit_button=None): - """ - >> submitform entityForm - - Submit the form named entityForm. This is useful when the form is pre-filed - and we only want to click on submit. - (The original submit command chooses the form to submit according to the last - formvalue instruction) - """ - browser = twc.get_browser() - form = browser.get_form(formname) - if form is None: - # try to find if one of the forms has as id - for form in browser._browser.forms(): - # forms in cubicweb don't always have a name - if form.attrs.get('id') == formname: - break - else: - raise ValueError('could not find form named <%s>' % formname) - browser._browser.form = form - browser.submit(submit_button) - - -# missing actions: delete, copy, changeview