Conjunto de mudanças 6471 no repositório publico
- Timestamp:
- 09/06/2012 16:43:29 (9 anos atrás)
- Localização:
- PortalInterlegis/produtos/il.portalinterlegis/src/il/portalinterlegis
- Arquivos:
-
- 1 editado
- 2 movidos
Legenda:
- Não Modificado
- Adicionado
- Removido
-
PortalInterlegis/produtos/il.portalinterlegis/src/il/portalinterlegis/browser/boxes.py
r6467 r6471 1 1 from Products.CMFCore.interfaces import IFolderish 2 2 from five import grok 3 from persistent.dict import PersistentDict 3 from persistent.dict import PersistentDict 4 4 from z3c.form import form, field, datamanager 5 5 from z3c.form.interfaces import IDataManager … … 8 8 from zope.interface import implements 9 9 from zope.schema.interfaces import IField 10 10 from zope.interface import Interface 11 11 12 12 class PersistentDictionaryField(datamanager.DictionaryField): … … 15 15 provideAdapter(PersistentDictionaryField) 16 16 17 ALL_BOXES_KEY = 'il.portalinterlegis.boxes' 18 def _build_box(box_schema, number): 17 class BoxManager(object): 19 18 20 form_label = getattr(box_schema, 'form_label', None) \ 21 or u'Edite os valore desta caixa' 22 23 # the combination (form.EditForm, grok.View) 24 # is from https://mail.zope.org/pipermail/grok-dev/2008-July/005999.html 25 # (plone.directives.form.EditForm did not work well) 26 class BoxEditForm(form.EditForm, grok.View): 27 grok.context(IFolderish) 28 grok.name(_box_name_for_url(box_schema, number)) 29 label = form_label 30 fields = field.Fields(box_schema) 31 32 def getContent(self): 33 return box_content(self.context, box_schema, number) 34 35 globals()['BoxEditForm_%s' % _box_key(box_schema, number)] = BoxEditForm 36 return BoxEditForm 19 ALL_BOXES_KEY = 'il.portalinterlegis.boxes' 37 20 38 def box_content(context, box_schema, number):39 annotations = IAnnotations(context)40 boxes = _get_persistent_dict(annotations, ALL_BOXES_KEY)41 return _get_persistent_dict(boxes, _box_key(box_schema, number))21 def __init__(self, schema, label=None): 22 self.schema = schema 23 #TODO: improve this text 24 self.form_label = label or u'Edite os valore desta caixa' 42 25 43 def _get_persistent_dict(dictionary, key): 26 def build_form(self, number): 27 28 # the combination (form.EditForm, grok.View) 29 # is from https://mail.zope.org/pipermail/grok-dev/2008-July/005999.html 30 # (plone.directives.form.EditForm did not work well) 31 class BoxEditForm(form.EditForm, grok.View): 32 grok.context(IFolderish) 33 grok.name(self._box_name_for_url(number)) 34 label = self.form_label 35 fields = field.Fields(self.schema) 36 37 def getContent(form_self): 38 return self.box_content(form_self.context, number) 39 40 globals()['BoxEditForm_%s' % self._box_key(number)] = BoxEditForm 41 return BoxEditForm 42 43 def build_n_forms(self, max_number): 44 for number in range(1, max_number+1): 45 self.build_form(number) 46 47 def box_content(self, context, number): # maybe this method should be private 48 annotations = IAnnotations(context) 49 boxes = get_or_create_persistent_dict(annotations, BoxManager.ALL_BOXES_KEY) 50 return get_or_create_persistent_dict(boxes, self._box_key(number)) 51 52 def _box_key(self, number): 53 return '%s_%s' % (self.schema.__name__, number) 54 55 def _box_name_for_url(self, number): 56 return 'box_%s' % self._box_key(number) 57 58 59 def get_or_create_persistent_dict(dictionary, key): 44 60 value = dictionary.get(key, None) 45 61 if not value: … … 47 63 return value 48 64 49 def _box_key(box_schema, number): 50 return '%s_%s' % (box_schema.__name__, number) 65 ################################################################ 66 from interfaces import ISimpleBox 51 67 52 def _box_name_for_url(box_schema, number): 53 return 'box_%s' % _box_key(box_schema, number) 54 55 def build_n_boxes(box_schema, max_number): 56 for number in range(1, max_number+1): 57 _build_box(box_schema, number) 58 59 ################################################################ 60 from interfaces import ISimpleBox 61 62 for box_schema in [ISimpleBox]: 63 build_n_boxes(box_schema, 2) 68 # initialize all the boxes 69 for s in [ISimpleBox,]: 70 BoxManager(s).build_n_forms(10) -
PortalInterlegis/produtos/il.portalinterlegis/src/il/portalinterlegis/tests/testintegration.py
r6470 r6471 3 3 import unittest2 as unittest 4 4 from Products.CMFCore.utils import getToolByName 5 from fixtures import IL_PORTALINTERLEGIS_INTEGRATION_TESTING 5 6 from plone.testing.z2 import Browser 7 from zExceptions import NotFound 6 8 7 from fixtures import IL_PORTALINTERLEGIS_INTEGRATION_TESTING 8 from il.portalinterlegis.browser.boxes import _box_name_for_url, box_content 9 from il.portalinterlegis.browser.boxes import BoxManager 9 10 from il.portalinterlegis.browser.interfaces import \ 10 11 IComunidadeLegislativa, IInformacao, ICapacitacao, ITecnologia, IComunicacao, \ 11 12 ISimpleBox 12 import zExceptions 13 13 14 14 15 class TestIntegracao(unittest.TestCase): … … 19 20 self.portal = self.layer['portal'] 20 21 self.qi_tool = getToolByName(self.portal, 'portal_quickinstaller') 21 22 22 23 def browser(self, path=None): 23 24 browser = Browser(self.app) 24 25 browser.handleErrors = False 25 26 browser.open(self.url(path)) 26 return browser 27 return browser 27 28 28 29 def dom(self, browser): 29 30 return lxml.html.fromstring(browser.contents) 30 31 31 32 def url(self, path=None): 32 33 base = self.portal.absolute_url() … … 37 38 38 39 def test_product_is_installed(self): 39 """ Validate that our products GS profile has been run and the product 40 """ Validate that our products GS profile has been run and the product 40 41 installed 41 42 """ … … 57 58 58 59 def test_homes_marcadas_e_com_layout_home(self): 59 for id, marker in [('comunidade-legislativa', IComunidadeLegislativa), 60 ('informacao', IInformacao), 61 ('capacitacao', ICapacitacao), 60 for id, marker in [('comunidade-legislativa', IComunidadeLegislativa), 61 ('informacao', IInformacao), 62 ('capacitacao', ICapacitacao), 62 63 ('tecnologia', ITecnologia), 63 ('comunicacao', IComunicacao), 64 ('comunicacao', IComunicacao), 64 65 ]: 65 66 obj = self.portal[id] … … 68 69 69 70 def test_box_content_is_empty_before_visiting_form(self): 70 self.assertEqual({}, box_content(self.portal, ISimpleBox, 1))71 self.assertEqual({}, BoxManager(ISimpleBox).box_content(self.portal, 1)) 71 72 72 73 def test_using_box_form_creates_box_content(self): 73 box_schema = ISimpleBox74 74 context = self.portal 75 boxmanager = BoxManager(ISimpleBox) 75 76 76 77 def use_box_form(title, subtitle, text, num): 77 browser = self.browser( _box_name_for_url(box_schema,num))78 browser = self.browser(boxmanager._box_name_for_url(num)) 78 79 browser.getControl(name='form.widgets.title').value = title 79 80 browser.getControl(name='form.widgets.subtitle').value = subtitle … … 84 85 use_box_form('TIT_2', 'SUBTIT_2', 'TEXT_2', 2) 85 86 self.assertEqual({'title': 'TIT_1', 'subtitle': 'SUBTIT_1', 'text': 'TEXT_1'}, 86 box _content(context, box_schema, 1))87 boxmanager.box_content(context, 1)) 87 88 self.assertEqual({'title': 'TIT_2', 'subtitle': 'SUBTIT_2', 'text': 'TEXT_2'}, 88 box _content(context, box_schema, 2))89 89 boxmanager.box_content(context, 2)) 90 90 91 def test_box_forms_numbers_begin_from_1_not_zero(self): 91 with self.assertRaises( zExceptions.NotFound):92 browser = self.browser( _box_name_for_url(ISimpleBox,0))92 with self.assertRaises(NotFound): 93 browser = self.browser(BoxManager(ISimpleBox)._box_name_for_url(0)) 93 94 94 95 def test_box_forms_are_limited(self): 95 with self.assertRaises( zExceptions.NotFound):96 browser = self.browser( _box_name_for_url(ISimpleBox,1000000))96 with self.assertRaises(NotFound): 97 browser = self.browser(BoxManager(ISimpleBox)._box_name_for_url(1000000)) 97 98 98 99 def test_box_form_cannot_be_created_after_initialization(self): 100 BoxManager(ISimpleBox).build_form(99) # try to build a box form in an arbitrary moment 101 with self.assertRaises(NotFound): 102 browser = self.browser(BoxManager(ISimpleBox)._box_name_for_url(99)) 103
Note: Veja
TracChangeset
para ajuda no uso do visualizador de conjunto de mudanças.