Conjunto de mudanças 6495 no repositório publico
- Timestamp:
- 14/06/2012 00:15:12 (9 anos atrás)
- Localização:
- PortalInterlegis/produtos/il.portalinterlegis/trunk
- Arquivos:
-
- 10 adicionados
- 5 editados
- 3 movidos
Legenda:
- Não Modificado
- Adicionado
- Removido
-
PortalInterlegis/produtos/il.portalinterlegis/trunk/setup.py
r6493 r6495 35 35 'plone.formwidget.contenttree', 36 36 'plone.formwidget.autocomplete', 37 'Jinja2', # This one is not neurotic about missing values. We need this. 37 38 ], 38 39 extras_require={'test': ['plone.app.testing', 'mock']}, -
PortalInterlegis/produtos/il.portalinterlegis/trunk/src/il/portalinterlegis/browser/boxes/manager.py
r6494 r6495 5 5 from five import grok 6 6 from five.grok.components import ZopeTwoPageTemplate 7 from jinja2 import Environment, PackageLoader 7 8 from persistent.dict import PersistentDict 8 9 from plone.autoform.form import AutoExtensibleForm … … 14 15 from zope.schema.interfaces import IField 15 16 16 from interfaces import template_dict,box_schemas17 from interfaces import box_schemas 17 18 18 19 … … 22 23 provideAdapter(PersistentDictionaryField) 23 24 25 templates = Environment(loader=PackageLoader(__name__)) 24 26 25 27 class BoxManager(object): … … 69 71 70 72 def html(self, context, number): 71 return self._schema_template() % NiceDictGetter(72 73 template = templates.get_template(self.schema.__name__.lower() + '.html') 74 return template.render(self.box_content(context, number)) 73 75 74 76 def _box_key(self, number): … … 78 80 return 'box_%s' % self._box_key(number) 79 81 80 def _schema_template(self):81 return template_dict[self.schema]82 82 83 83 def get_or_create_persistent_dict(dictionary, key): … … 86 86 dictionary[key] = value = PersistentDict() 87 87 return value 88 89 class NiceDictGetter(object):90 """Dictionary getter with a default empty string for unknown keys.91 """92 def __init__(self, wrapped):93 self.wrapped = wrapped94 95 def __getitem__(self, key):96 value = self.wrapped.get(key, None)97 return (value is None) and '---' or value98 88 99 89 # ROWS -
PortalInterlegis/produtos/il.portalinterlegis/trunk/src/il/portalinterlegis/browser/homes.py
r6487 r6495 2 2 from five import grok 3 3 4 from boxes import GridView4 from boxes.manager import GridView 5 5 from interfaces import \ 6 IComunidadeLegislativa, IInformacao, ICapacitacao, ITecnologia, IComunicacao, \ 6 IComunidadeLegislativa, IInformacao, ICapacitacao, ITecnologia, IComunicacao 7 from boxes.interfaces import \ 7 8 ISimpleBox, ICarousel, ICalendar, ITabsPilares, IAcompanheOInterlegis, IHighlight 8 9 -
PortalInterlegis/produtos/il.portalinterlegis/trunk/src/il/portalinterlegis/browser/interfaces.py
r6493 r6495 1 1 # -*- coding: utf-8 -*- 2 from plone.app.z3cform.wysiwyg import WysiwygFieldWidget3 from plone.autoform.interfaces import WIDGETS_KEY4 from plone.directives import form5 from plone.formwidget.autocomplete import AutocompleteFieldWidget6 from plone.formwidget.contenttree import PathSourceBinder7 from zope import schema8 2 from zope.interface import Interface 9 3 10 11 # TODO: tive de mover isso pra ca (veio de boxes) por causa de um import circular12 template_dict = {}13 14 # decorator15 def template(t):16 def f(cls):17 template_dict[cls] = t18 return cls19 return f20 21 # decorator22 def rich(*args, **kwargs):23 def f(cls):24 cls.setTaggedValue(WIDGETS_KEY,25 dict([(k, WysiwygFieldWidget) for k in args],26 **kwargs))27 return cls28 return f29 4 30 5 class IThemeSpecific(Interface): … … 51 26 class IComunicacao(Interface): 52 27 "Marker interface para home" 53 54 # BOX INTERFACES55 56 @template('''57 <div class="simple-box">58 <a href="/portal/%(target)s">59 <h2>%(title)s</h2>60 <h3 class="icon-news">%(subtitle)s</h3>61 <p>62 %(text)s63 </p>64 </a>65 </div>''')66 @rich('text', target=AutocompleteFieldWidget)67 class ISimpleBox(form.Schema):68 title = schema.TextLine(title=u"Título", required=True)69 subtitle = schema.TextLine(title=u"Subtítulo", required=True)70 text = schema.Text(title=u"Texto", required=False)71 target = schema.Choice(title=u"Conteúdo relacionado",72 source=PathSourceBinder(),73 required=False)74 75 @template('''76 <div id= "container">77 78 <div class="carousel">79 <ul>80 <li>81 <a href="">82 <img src="/portal/++theme++il.portalinterlegis/temp/images/1.jpg" alt="ex1" width="340" height="215" />83 <div class="carousel-text">84 <h3><b>Envie</b> Notícias</h3>85 <p>86 Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean sed est eu mauris lacinia molestie. Integer eu ultricies nisl.87 </p>88 </div>89 </a>90 </li>91 <li>92 <a href="">93 <img src="/portal/++theme++il.portalinterlegis/temp/images/caneca.jpg" alt="ex2" width="340" height="215" />94 <div class="carousel-text">95 <h3><b>Mais</b> Novidades</h3>96 <p>97 Maecenas vehicula magna eget eros dictum fringilla. In hac habitasse platea dictumst. Aenean vestibulum ligula neque. Ut id varius ante.98 </p>99 </div>100 </a>101 </li>102 <li>103 <a href="">104 <img src="/portal/++theme++il.portalinterlegis/temp/images/interlegis.jpg" alt="ex3" width="340" height="215" />105 <div class="carousel-text">106 <h3><b>Ainda</b> muito <b>mais...</b></h3>107 <p>108 Aenean pellentesque consectetur neque. Integer ultrices tincidunt odio ut adipiscing. Aliquam erat volutpat. Morbi auctor faucibus odio id cursus.109 </p>110 </div>111 </a>112 </li>113 </ul>114 </div>115 116 </div>117 ''')118 @rich('text', target=AutocompleteFieldWidget)119 class ICarousel(Interface):120 title = schema.TextLine(title=u"Título", required=True)121 text = schema.Text(title=u"Texto", required=False)122 target = schema.Choice(title=u"Conteúdo relacionado",123 source=PathSourceBinder(portal_type='Document'))124 125 @template('''126 <h2 class="box-header">Andamento do Interlegis</h2>127 TODO: AGENDA... <br/><br/><br/>128 ''')129 class ICalendar(Interface):130 pass131 132 @template('''133 <h2 class="box-header">Acompanhe o Interlegis</h2>134 TODO: Acompanhe o Interlegis... <br/><br/><br/>135 ''')136 class IAcompanheOInterlegis(Interface):137 pass138 139 @template('''140 TODO: tabs dos pilares <br/><br/><br/>141 ''')142 class ITabsPilares(Interface):143 pass144 145 @template('''146 <h2 class="box-header">Destaque</h2>147 TODO: <br/><br/><br/>148 ''')149 class IHighlight(Interface):150 pass151 152 def box_schemas():153 return template_dict.keys() -
PortalInterlegis/produtos/il.portalinterlegis/trunk/src/il/portalinterlegis/tests/testintegration.py
r6493 r6495 6 6 7 7 from fixtures import IL_PORTALINTERLEGIS_INTEGRATION_TESTING 8 from il.portalinterlegis.browser.boxes import BoxManager 8 from il.portalinterlegis.browser.boxes.interfaces import ISimpleBox 9 from il.portalinterlegis.browser.boxes.manager import BoxManager 9 10 from il.portalinterlegis.browser.interfaces import \ 10 IComunidadeLegislativa, IInformacao, ICapacitacao, ITecnologia, IComunicacao, \ 11 ISimpleBox 11 IComunidadeLegislativa, IInformacao, ICapacitacao, ITecnologia, IComunicacao 12 12 13 13 -
PortalInterlegis/produtos/il.portalinterlegis/trunk/src/il/portalinterlegis/tests/testunitboxes.py
r6493 r6495 3 3 from mock import patch 4 4 5 from il.portalinterlegis.browser.boxes import BoxManager, row_html6 from il.portalinterlegis.browser. interfaces import ISimpleBox5 from il.portalinterlegis.browser.boxes.manager import BoxManager, row_html 6 from il.portalinterlegis.browser.boxes.interfaces import ISimpleBox 7 7 from mockutils import * 8 from itertools import count 8 9 9 10 _ = None # anything, doesn't really matter … … 14 15 15 16 def setUp(self): 16 pass17 self.diff_count = count(1) 17 18 18 def assert Equal(self, first, second, *args):19 def assertMultiLineEqual(self, first, second, *args): 19 20 "ignores differences in leading and trailing whitespace in strings" 20 super(TestUnitBoxes, self).assertMultiLineEqual( 21 isinstance(first, str) and first.strip() or first, 22 isinstance(second, str) and second.strip() or second, *args) 21 self.assert_(isinstance(first, basestring), ( 22 'First argument is not a string')) 23 self.assert_(isinstance(second, basestring), ( 24 'Second argument is not a string')) 25 26 first = first.strip() 27 second = second.strip() 28 if first != second: 29 c = self.diff_count.next() 30 for i, s in enumerate([first, second]): 31 with open("out_%s.%s" % (c, i), "w+") as f: 32 f.write(s) 33 super(TestUnitBoxes, self).assertMultiLineEqual(first, second, *args) 23 34 24 35 def test_html(self): … … 27 38 28 39 boxmanager = BoxManager(ISimpleBox) 29 self.assert Equal('''40 self.assertMultiLineEqual(''' 30 41 <div class="simple-box"> 31 42 <a href="/portal/alvo"> … … 48 59 self.assertIs(context, c) 49 60 50 from itertools import count51 61 numbers = count(1) 52 62 @return_values(mock_box_key, [1, 2, 3, 4]) … … 54 64 self.assertIs(numbers.next(), n) 55 65 56 self.assert Equal('''66 self.assertMultiLineEqual(''' 57 67 <div class="dt-row"> 58 68 <div id="1" class=" dt-cell dt-position-0 dt-width-1">
Note: Veja
TracChangeset
para ajuda no uso do visualizador de conjunto de mudanças.