Changeset 554

Show
Ignore:
Timestamp:
09/14/07 16:39:53 (1 year ago)
Author:
brian
Message:

container models working

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • pagoda/trunk/Pagoda/pagoda/models/__init__.py

    r490 r554  
    66from pagoda.models.revision import * 
    77from pagoda.models.template import * 
     8from pagoda.models.revision_mapper import * 
    89from pagoda.models.node import * 
    9 from pagoda.models.revision_mapper import * 
     10from pagoda.models.container import * 
  • pagoda/trunk/Pagoda/pagoda/models/node.py

    r552 r554  
    44from pagoda.models import Revision, Content, Template 
    55from pagoda.models.revision_mapper import * 
    6 from pagoda.models.util import follow_foreign_key 
    76from pagoda import workflow 
    87 
     
    3736 
    3837node_selectable = RevisionSelectable() 
    39 node_selectable.add_table( 
    40     node_generic_table, 'node_generic_revision_id' 
    41 
    42 node_selectable.add_table( 
    43     node_localized_table, 'node_localized_revision_id', True 
    44 
    45  
     38node_selectable.add_generic_table(node_generic_table) 
     39node_selectable.add_localized_table(node_localized_table) 
    4640node_table = node_selectable.get_selectable('node') 
    4741 
  • pagoda/trunk/Pagoda/pagoda/models/revision_mapper.py

    r552 r554  
    7878        return revisions 
    7979     
    80     def add_table(self, table, id_label=None, localized=False, 
     80    def add_table(self, table, localized=False, id_label=None, 
    8181                  join_alias=None): 
    8282        if id_label is None: 
     
    9393        self.id_labels[table] = id_label 
    9494        self.subselects[table] = subselect 
     95     
     96    def add_generic_table(self, table, id_label=None, join_alias=None): 
     97        return self.add_table(table, False, id_label, join_alias) 
     98     
     99    def add_localized_table(self, table, id_label=None, join_alias=None): 
     100        return self.add_table(table, True, id_label, join_alias) 
    95101     
    96102    def get_selectable(self, alias): 
  • pagoda/trunk/Pagoda/pagoda/plugins/page/models.py

    r551 r554  
    1515 
    1616page_selectable = RevisionSelectable() 
    17 page_selectable.add_table(node_generic_table, 'node_generic_revision_id'
    18 page_selectable.add_table(node_localized_table, 'node_localized_revision_id'
    19 page_selectable.add_table(page_generic_table, 'page_generic_revision_id'
     17page_selectable.add_generic_table(node_generic_table
     18page_selectable.add_localized_table(node_localized_table
     19page_selectable.add_generic_table(page_generic_table
    2020page_table = page_selectable.get_selectable('page') 
    2121 
    2222class Page(Node): 
    23     pagoda_content_type = 'page' 
     23    # pagoda_content_type = 'page' 
     24    pass 
    2425 
    2526assign_mapper(session.context, Page, page_table, 
  • pagoda/trunk/Pagoda/pagoda/plugins/textcontainer/models.py

    r542 r554  
    11from sqlalchemy import * 
     2from sqlalchemy.ext.assignmapper import assign_mapper 
    23from turbogears.database import metadata, session 
    3 from pagoda.models import Revision 
     4from pagoda.models import Revision, Container, container_generic_table 
    45from pagoda.models.revision_mapper import * 
    56 
     
    1112        primary_key=True 
    1213    ), 
    13     Column('container_name', Unicode(75), nullable=False), 
    14     Column('editor_name', String(75), nullable=True) 
     14    Column('text_type', String(75), nullable=True) 
    1515) 
    1616 
     
    2424 
    2525textcontainer_selectable = RevisionSelectable() 
    26 textcontainer_selectable.add_table( 
    27     textcontainer_generic_table, 'generic_revision_id' 
    28 
    29 textcontainer_selectable.add_table( 
    30     textcontainer_localized_table, 'localized_revision_id', 'content_locale' 
    31 
    32  
     26textcontainer_selectable.add_generic_table(container_generic_table) 
     27textcontainer_selectable.add_generic_table(textcontainer_generic_table) 
     28textcontainer_selectable.add_localized_table(textcontainer_localized_table) 
    3329textcontainer_table = textcontainer_selectable.get_selectable('textcontainer') 
    3430 
    35 class TextContainer(Revision): 
     31class TextContainer(Container): 
    3632    pass 
    3733 
    38 revision_mapper(session.context, TextContainer, textcontainer_table) 
     34assign_mapper(session.context, TextContainer, textcontainer_table, 
     35    select_table=textcontainer_table, 
     36    inherits=Container.mapper, 
     37    concrete=True, 
     38    extension=RevisionMapperExtension(), 
     39    polymorphic_on=textcontainer_table.c.content_type, 
     40    polymorphic_identity='textcontainer' 
     41
  • pagoda/trunk/Pagoda/pagoda/templates/admin/control_panel.html

    r528 r554  
    2424            <div class="description"> 
    2525                <p>${pagoda._("The publication schedule shows pages awaiting publication and pages scheduled for release or expiration.")}</p> 
     26            </div> 
     27        </li> 
     28        <li class="section" id="templates-section"> 
     29            <h2><a href="${tg.url('/templates/')}">${pagoda._("Templates")}</a></h2> 
     30            <div class="description"> 
     31                <p>${pagoda._("Templates define what your site looks like and how content is positioned on each page.")}</p> 
    2632            </div> 
    2733        </li> 
  • pagoda/trunk/Pagoda/pagoda/widgets/admin/panels.py

    r511 r554  
    5151            'id': content.content_id, 
    5252            'cls': children and 'folder' or 'file', 
    53             'leaf': not children 
     53            'leaf': not children, 
     54            'pagoda': { 
     55                'content_id': content.content_id, 
     56                'revision_id': content.revision_id, 
     57                'is_deleted': content.is_deleted, 
     58                'url': content.url, 
     59                 
     60            } 
    5461        } 
    5562        if descend > 0: 
  • pagoda/trunk/Pagoda/pagoda/widgets/admin/static/css/site_tree.css

    r525 r554  
    1414/* Buttons in site menu have icons associated with them */ 
    1515.site_tree-menu button { 
     16    cursor: pointer; 
     17    color: #fff; 
    1618} 
    1719 
     
    2426    background-image: url('../images/page_add.png'); 
    2527} 
     28 
    2629.site_tree-menu button.edit .x-menu-item-icon { 
    2730    background-image: url('../images/page_edit.png'); 
    2831} 
     32 
    2933.site_tree-menu button.duplicate .x-menu-item-icon { 
    3034    background-image: url('../images/page_copy.png'); 
    3135} 
     36 
    3237.site_tree-menu button.delete .x-menu-item-icon { 
    3338    background-image: url('../images/page_delete.png'); 
    3439} 
     40 
    3541.site_tree-menu button.close { 
    3642    padding: 0; 
    3743    border: 0; 
    3844} 
     45 
    3946.site_tree-menu button.close .x-menu-item-icon { 
    4047    vertical-align: middle; 
  • pagoda/trunk/Pagoda/pagoda/widgets/admin/static/css/tree.css

    r539 r554  
    3636/* Style the menu */ 
    3737div.tree-menu { 
    38     background: #3465a4 url('../images/tab-active.png') repeat-x left top
    39     color: #eee
     38    background: #3465a4 url('../images/tab-active.png') repeat-x left bottom
     39    color: #fff
    4040} 
    4141 
     
    6868} 
    6969 
    70 /* Nice hover-color for Tree Menu buttons */ 
    71 .tree-menu button:hover { 
    72     color: #fff; 
    73     cursor: pointer; 
    74 } 
    75  
    76 .tree-menu button:hover .x-menu-item-icon { 
    77     opacity: 1.0; 
    78 } 
    79  
    8070/* Tree Menu should be horizontal (not vertical, which is the default) */ 
    8171.tree-menu li { 
     
    9989    border: 0; 
    10090    padding: 3px 0; 
    101     color: #adf; 
     91    color: #def; 
    10292} 
    10393 
    10494.tree-menu .x-menu-item-icon { 
    10595    margin-right: 0.5em; 
    106     opacity: 0.75; 
    10796} 
  • pagoda/trunk/Pagoda/pagoda/widgets/admin/static/javascript/site_tree.js

    r550 r554  
    5353                text: "Edit", 
    5454                icon: Ext.BLANK_IMAGE_URL, 
    55                 itemCls: 'edit' 
     55                itemCls: 'edit', 
     56                handler: function() { 
     57                    var selection = this.parentMenu.tree.getSelectionModel(); 
     58                    var nodes = selection.getSelectedNodes(); 
     59                } 
    5660            }), 
    5761            new Ext.menu.ButtonItem({ 
    5862                text: "Add", 
    5963                icon: Ext.BLANK_IMAGE_URL, 
    60                 itemCls: 'add' 
     64                itemCls: 'add', 
     65                handler: function() { 
     66                    var selection = this.parentMenu.tree.getSelectionModel(); 
     67                    var nodes = selection.getSelectedNodes(); 
     68                } 
    6169            }), 
    6270            new Ext.menu.ButtonItem({ 
    6371                text: "Duplicate", 
    6472                icon: Ext.BLANK_IMAGE_URL, 
    65                 itemCls: 'duplicate' 
     73                itemCls: 'duplicate', 
     74                handler: function() { 
     75                    var selection = this.parentMenu.tree.getSelectionModel(); 
     76                    var nodes = selection.getSelectedNodes(); 
     77                } 
    6678            }), 
    6779            new Ext.menu.ButtonItem({ 
    6880                text: "Delete", 
    6981                icon: Ext.BLANK_IMAGE_URL, 
    70                 itemCls: 'delete' 
     82                itemCls: 'delete', 
     83                handler: function() { 
     84                    var selection = this.parentMenu.tree.getSelectionModel(); 
     85                    var nodes = selection.getSelectedNodes(); 
     86                } 
    7187            }), 
    7288            new Ext.menu.ButtonItem({ 
    7389                text: "", 
    7490                icon: Ext.BLANK_IMAGE_URL, 
    75                 itemCls: 'close' 
     91                itemCls: 'close', 
     92                handler: function() { 
     93                    var selection = this.parentMenu.tree.getSelectionModel(); 
     94                    var nodes = selection.getSelectedNodes(); 
     95                } 
    7696            }) 
    7797        ] 
  • pagoda/trunk/Pagoda/pagoda/widgets/admin/static/javascript/tree_menu.js

    r524 r554  
    1616 
    1717}; 
     18 
    1819Ext.extend(Ext.menu.TreeMenu, Ext.menu.Menu, { 
    1920    // Override `show` to position the menu underneath (in z-index terms) 
  • pagoda/trunk/TestProject/testproject/model.py

    r551 r554  
    55from pagoda.plugins.page import Page 
    66from pagoda.models.identity import * 
    7 # from pagoda.plugins.textcontainer import TextContainer 
     7from pagoda.plugins.textcontainer import TextContainer 
    88from pagoda import workflow 
    99 
     
    3333    home_page = Page( 
    3434        url=None, parent_id=None, content_locale='en_US', 
    35         title="Home", nav_show=True, revision_author_id=brian.user_id, 
     35        node_title="Home", nav_show=True, revision_author_id=brian.user_id, 
    3636        content_type='page', revision_status=workflow.APPROVED 
    3737    ) 
    3838     
    3939    session.flush() 
    40  
     40     
    4141    pagoda_page = Page( 
    4242        url='pagoda', parent_id=home_page.content_id, content_locale='en_US', 
    43         title="Welcome", nav_show=True, revision_author_id=brian.user_id, 
     43        node_title="Welcome", nav_show=True, revision_author_id=brian.user_id, 
    4444        content_type='page', revision_status=workflow.APPROVED 
    4545    ) 
     
    4949    tests_page = Page( 
    5050        url='tests', parent_id=pagoda_page.content_id, content_locale='en_US', 
    51         title="Unit tests", nav_show=True, revision_author_id=brian.user_id, 
     51        node_title="Unit tests", nav_show=True, revision_author_id=brian.user_id, 
    5252        content_type='page', revision_status=workflow.APPROVED 
    5353    ) 
     
    5555    templates_page = Page( 
    5656        url='templates', parent_id=pagoda_page.content_id, content_locale='en_US', 
    57         title="Genshi templates", nav_show=True, 
     57        node_title="Genshi templates", nav_show=True, 
    5858        revision_author_id=brian.user_id, content_type='page', 
    5959        revision_status=workflow.PENDING, 
     
    6363    ets_page = Page( 
    6464        url='eatthesandwich', parent_id=home_page.content_id, 
    65         content_locale='en_US', title="Eat it", nav_show=True, 
     65        content_locale='en_US', node_title="Eat it", nav_show=True, 
    6666        revision_author_id=brian.user_id, content_type='page', 
    6767        revision_status=workflow.APPROVED, 
     
    7171    session.flush() 
    7272     
    73     # pagoda_intro_text = TextContainer( 
    74     #     container_name='intro', 
    75     #     content_id=pagoda_page.content_id, 
    76     #     content_type=pagoda_page.content_type, 
    77     #     content_locale=pagoda_page.content_locale
    78     #     text=""" 
    79     #     <p><strong>Welcome!</strong> Please enjoy our Pagoda softwares.</p> 
    80     #     """ 
    81     #
    82     #  
    83     # pagoda_body_text = TextContainer( 
    84     #     container_name='body', 
    85     #     content_id=pagoda_page.content_id, 
    86     #     content_type=pagoda_page.content_type, 
    87     #     content_locale=pagoda_page.content_locale
    88     #     text=""" 
    89     #     <p>Pagoda is not ready yet. <Please check back in two weeks, 
    90     #     when it is <em>done</em>.</\p> 
    91     #     """ 
    92     #
    93     #  
    94     # session.flush() 
    95     #  
    96     # pagoda_intro_revised = TextContainer( 
    97     #     container_name='intro', 
    98     #     content_id=pagoda_page.content_id, 
    99     #     content_type=pagoda_page.content_type, 
    100     #     content_locale=pagoda_page.content_locale
    101     #     text=""" 
    102     #     <p>We made several typos. Please ignore the old revision.</p> 
    103     #     """ 
    104     #
    105     #  
    106     # session.flush() 
    107     #  
    108     # pagoda_page_revised = Page( 
    109     #     content_id=pagoda_page.content_id, 
    110     #     url='pagoda', parent_id=home_page.content_id, content_locale='en_US', 
    111     #     nav_show=True, revision_author_id=brian.user_id, 
    112     #     content_type='page', revision_status=workflow.PENDING, 
    113     #     title="Welcome! (Now typo free.)" 
    114     #
    115     #  
    116     # session.flush() 
    117     #  
    118     # pagoda_body_revised = TextContainer( 
    119     #     container_name='body', 
    120     #     content_id=pagoda_page.content_id, 
    121     #     content_type=pagoda_page.content_type, 
    122     #     content_locale=pagoda_page.content_locale
    123     #     text=""" 
    124     #     <p>We made several typos. Please ignore the old revision!</p> 
    125     #     """ 
    126     #
    127     #  
    128     # session.flush() 
     73    pagoda_intro_text = TextContainer( 
     74        container_name='intro', 
     75        document_id=pagoda_page.content_id, 
     76        content_locale=pagoda_page.content_locale, 
     77        text_type='html'
     78        text=""" 
     79        <p><strong>Welcome!</strong> Please enjoy our Pagoda softwares.</p> 
     80        """ 
     81   
     82     
     83    pagoda_body_text = TextContainer( 
     84        container_name='body', 
     85        document_id=pagoda_page.content_id, 
     86        content_locale=pagoda_page.content_locale, 
     87        text_type='html'
     88        text=""" 
     89        <p>Pagoda is not ready yet. <Please check back in two weeks, 
     90        when it is <em>done</em>.</\p> 
     91        """ 
     92   
     93     
     94    session.flush() 
     95     
     96    pagoda_intro_revised = TextContainer( 
     97        container_name='intro', 
     98        document_id=pagoda_page.content_id, 
     99        content_locale=pagoda_page.content_locale, 
     100        text_type='html'
     101        text=""" 
     102        <p>We made several typos. Please ignore the old revision.</p> 
     103        """ 
     104   
     105     
     106    session.flush() 
     107     
     108    pagoda_page_revised = Page( 
     109        content_id=pagoda_page.content_id, 
     110        url='pagoda', parent_id=home_page.content_id, content_locale='en_US', 
     111        nav_show=True, revision_author_id=brian.user_id, 
     112        content_type='page', revision_status=workflow.PENDING, 
     113        node_title="Welcome! (Now typo free.)" 
     114   
     115     
     116    session.flush() 
     117     
     118    pagoda_body_revised = TextContainer( 
     119        container_name='body', 
     120        document_id=pagoda_page.content_id, 
     121        content_locale=pagoda_page.content_locale, 
     122        text_type='html'
     123        text=""" 
     124        <p>We made several typos. Please ignore the old revision!</p> 
     125        """ 
     126   
     127     
     128    session.flush() 

Log in as guest/pagoda to create tickets