Changeset 288


Ignore:
Timestamp:
12.11.2008 19:02:38 (3 years ago)
Author:
chris
Message:

zms-2.11.1-150

Location:
ZMS/trunk
Files:
10 edited

Legend:

Unmodified
Added
Removed
  • ZMS/trunk/_globals.py

    r121 r288  
    205205#  Strips non-numeric part from string. 
    206206# ------------------------------------------------------------------------------ 
    207 def id_prefix(s):  
    208   i = 0 
    209   while i < len(s) and ord(s[i]) not in range(ord('0'),ord('9')+1): 
    210     i = i + 1 
     207def id_prefix(s): 
     208  i = len(s) 
     209  while i > 0 and ord(s[i-1]) in range(ord('0'),ord('9')+1): 
     210    i = i - 1 
    211211  return s[:i] 
    212212 
  • ZMS/trunk/_objattrs.py

    r267 r288  
    902902          v = float(v) 
    903903       
    904       #-- Password-Fields 
    905       elif datatype == _globals.DT_PASSWORD: 
    906         pass 
    907         """ 
    908         if v is not None: 
    909           v = self.encrypt_password(v) 
    910         """ 
    911        
    912904      #-- String-Fields. 
    913905      elif datatype in _globals.DT_STRINGS: 
     
    979971          v = '{$__' + v[2:-1] + '__}' 
    980972       
     973      # Hook for custom formatting. 
     974      name = 'formatCustomObjAttrValue' 
     975      if hasattr(self,name): 
     976        v = getattr(self,name)( context=self, obj_attr=obj_attr, v=v) 
     977       
    981978      return v 
    982979 
  • ZMS/trunk/_objchildren.py

    r274 r288  
    3535################################################################################ 
    3636### 
    37 ###   O B J E C T   C H I L D R E N 
     37###   Object Children 
    3838### 
    3939################################################################################ 
  • ZMS/trunk/changes.txt

    r276 r288  
    10321032[01117] Applied fix for support of simultaneous remote- (via ftp) and web-editing (via zmi) of content-object-methods (requested by desy). 
    10331033-------------------------------------------------- 
     10342008-11-12:zms-2.11.1-15 
     1035[01118] Applied fix for _globals.id_prefix(): ids containing numbers. 
     1036[01119] Added support for multiple details to SQL-Datasource. 
     1037-------------------------------------------------- 
  • ZMS/trunk/dtml/ZMSRecordSet/actions.dtml

    r121 r288  
    1313 
    1414<dtml-call "REQUEST.set('manage_tabs_message','')"> 
     15 
     16<dtml-try> 
    1517 
    1618<dtml-comment> ***** Move row up ***** </dtml-comment> 
     
    113115  <dtml-in "metaObj['attrs'][1:]" mapping> 
    114116   <dtml-let obj_attr="getObjAttr(id)" obj_attrName="getObjAttrName(obj_attr,lang)"> 
    115     <dtml-unless "type in ['constant','delimiter','hint','interface','resource','method','DTML Method','DTML Document']"> 
     117    <dtml-if "type in metaobj_manager.valid_types"> 
    116118     <dtml-call "REQUEST.set('value',formatObjAttrValue(obj_attr,REQUEST.form.get(obj_attrName),lang))"> 
    117119     <dtml-try><dtml-call "operator_delattr(value,'aq_parent')"><dtml-except></dtml-try> 
    118120     <dtml-call "new_row.append(id)"> 
    119121     <dtml-call "new_row.append(value)"> 
    120     </dtml-unless> 
     122    </dtml-if> 
    121123   </dtml-let> 
    122124  </dtml-in> 
     
    143145  <dtml-in "metaObj['attrs'][1:]" mapping> 
    144146   <dtml-let obj_attr="getObjAttr(id)" obj_attrName="getObjAttrName(obj_attr,lang)"> 
    145     <dtml-unless "type in ['constant','delimiter','hint','interface','resource','method','DTML Method','DTML Document']"> 
     147    <dtml-if "type in metaobj_manager.valid_types"> 
    146148     <dtml-call "REQUEST.set('value',formatObjAttrValue(obj_attr,REQUEST.form.get(obj_attrName),lang))"> 
    147149     <dtml-var "writeBlock('[actions.update]: %s=%s(%s)'%(_.str(id),_.str(value),_.str(REQUEST.form.get(obj_attrName))))"> 
     
    152154     <dtml-call "new_row.append(id)"> 
    153155     <dtml-call "new_row.append(value)"> 
    154     </dtml-unless> 
     156    </dtml-if> 
    155157   </dtml-let> 
    156158  </dtml-in> 
     
    180182 
    181183 </dtml-if> 
     184 
     185<dtml-except> 
     186 <dtml-call "REQUEST.set('manage_tabs_error_message',_.str(error_type)+': '+_.str(error_value)+'<br/>'+_.str(error_tb))"> 
     187</dtml-try> 
  • ZMS/trunk/dtml/ZMSRecordSet/main.dtml

    r121 r288  
    6767  <dtml-call "RESPONSE.redirect( no_action)"> 
    6868 <dtml-else> 
    69   <dtml-call "RESPONSE.redirect(url_append_params(URL, 
     69  <dtml-call "REQUEST.set('target_url',url_append_params(URL, 
    7070        {'lang':lang 
    7171        ,'qsize:int':qsize 
     
    7373        ,'qorderdir':qorderdir 
    7474        ,'qstart':qsize*_.int(qindex/qsize)+1 
    75         ,'qindex:int':qindex 
    76         ,'manage_tabs_message':manage_tabs_message}))"> 
     75        ,'qindex:int':qindex}))"> 
     76  <dtml-if manage_tabs_message><dtml-call "REQUEST.set('target_url',url_append_params(target_url,{'manage_tabs_message':manage_tabs_message}))"></dtml-if> 
     77  <dtml-if manage_tabs_error_message><dtml-call "REQUEST.set('target_url',url_append_params(target_url,{'manage_tabs_error_message':manage_tabs_error_message}))"></dtml-if> 
     78  <dtml-call "RESPONSE.redirect(target_url)"> 
    7779 </dtml-if> 
    7880  
  • ZMS/trunk/dtml/ZMSSqlDb/input_details.dtml

    r273 r288  
    11<dtml-unless "REQUEST.get('f_zmiInputDetailsJavaScript')" 
     2><dtml-call "REQUEST.set('master_row',row)" 
    23><script language="JavaScript" 
    34><!--// 
     
    910      $('#submit_'+id).val('<dtml-var "getZMILangStr('BTN_INSERT')">'); 
    1011      $('table.neutralColorStrong tr.zmiTeaserColor').removeClass('zmiTeaserColor'); 
    11       $('input[@name=details_action]').val('insert'); 
     12      $('input[@name=details_action]').val('insert_'+id); 
    1213      return; 
    1314    } 
     
    2930    ############################################################################ 
    3031  </dtml-comment 
    31   ><dtml-if "REQUEST.get('details_action')=='insert' and  
     32  ><dtml-if "REQUEST.get('details_action')=='insert_%s'%details['tablename'] and  
    3233             REQUEST.get('details_btn')==getZMILangStr('BTN_INSERT')" 
    3334   ><dtml-let values="{}" 
     
    3940      ><dtml-call "REQUEST.set('sqlStatement',[])" 
    4041      ><dtml-call "sqlStatement.append( 'SELECT MAX(sort_id) AS c FROM '+details['tablename'])" 
    41       ><dtml-call "sqlStatement.append( 'WHERE '+details['fk']+'='+sql_quote__(SESSION[sessqentitykey],master_key,row.get('id','')))" 
     42      ><dtml-call "sqlStatement.append( 'WHERE '+details['fk']+'='+sql_quote__(SESSION[sessqentitykey],master_key,master_row.get('id','')))" 
    4243      ><dtml-in "query(' '.join(sqlStatement))['records']" mapping 
    43        ><dtml-call "operator_setitem(values,'sort_id',c)" 
     44       ><dtml-call "operator_setitem(values,'sort_id',c+10)" 
    4445      ></dtml-in 
    4546     ><dtml-except 
     
    6263    ############################################################################ 
    6364  </dtml-comment 
    64   ><dtml-elif "REQUEST.get('details_action')=='update' and  
     65  ><dtml-elif "REQUEST.get('details_action')=='update_%s'%details['tablename'] and  
    6566             REQUEST.get('details_btn')==getZMILangStr('BTN_SAVE')" 
    6667   ><dtml-let values="{}" old_values="{}" 
     
    8081    ############################################################################ 
    8182  </dtml-comment 
    82   ><dtml-elif "REQUEST.get('details_action')=='delete'" 
     83  ><dtml-elif "REQUEST.get('details_action')=='delete_%s'%details['tablename']" 
    8384   ><dtml-call "recordSet_Delete(details['tablename'],details_rowid)" 
    84    ><dtml-call "REQUEST.set('details_normalize',_.True)" 
     85   ><dtml-call "REQUEST.set('details_normalize',details_ordered)" 
    8586   ><div class="system-msg">Record deleted! (<dtml-var "getLangFmtDate(ZopeTime())">)</div 
    8687   ><dtml-call "REQUEST.set('details_action','')" 
     
    9091    ############################################################################ 
    9192  </dtml-comment 
    92   ><dtml-elif "REQUEST.get('details_action')=='move_up' or 
    93                REQUEST.get('details_action')=='move_down'" 
     93  ><dtml-elif "REQUEST.get('details_action')=='move_up_%s'%details['tablename'] or 
     94               REQUEST.get('details_action')=='move_down_%s'%details['tablename']" 
    9495   ><dtml-comment>+-+-+-+- Move +-+-+-+-</dtml-comment 
    9596   ><dtml-call "REQUEST.set('sqlStatement',[])" 
    9697   ><dtml-call "sqlStatement.append( 'UPDATE '+details['tablename'])" 
    97    ><dtml-if "REQUEST.get('details_action')=='move_up'" 
     98   ><dtml-if "REQUEST.get('details_action')=='move_up_%s'%details['tablename']" 
    9899    ><dtml-call "sqlStatement.append( 'SET sort_id=sort_id-15')" 
    99100   ><dtml-else 
    100101    ><dtml-call "sqlStatement.append( 'SET sort_id=sort_id+15')" 
    101102   ></dtml-if 
    102    ><dtml-call "sqlStatement.append( 'WHERE '+details['fk']+'='+sql_quote__(SESSION[sessqentitykey],master_key,row.get('id','')))" 
     103   ><dtml-call "sqlStatement.append( 'WHERE '+details['fk']+'='+sql_quote__(SESSION[sessqentitykey],master_key,master_row.get('id','')))" 
    103104   ><dtml-call "sqlStatement.append( 'AND '+primary_key+'='+sql_quote__(details['tablename'],primary_key,details_rowid))" 
    104105   ><dtml-call "executeQuery(' '.join(sqlStatement))" 
    105    ><dtml-call "REQUEST.set('details_normalize',_.True)" 
     106   ><dtml-call "REQUEST.set('details_normalize',details_ordered)" 
    106107   ><div class="system-msg">Record moved! (<dtml-var "getLangFmtDate(ZopeTime())">)</div 
    107108  ></dtml-if 
     
    111112   ><dtml-call "REQUEST.set('sqlStatement',[])" 
    112113   ><dtml-call "sqlStatement.append( 'SELECT * FROM '+details['tablename'])" 
    113    ><dtml-call "sqlStatement.append( 'WHERE '+details['fk']+'='+sql_quote__(SESSION[sessqentitykey],master_key,row.get('id','')))" 
     114   ><dtml-call "sqlStatement.append( 'WHERE '+details['fk']+'='+sql_quote__(SESSION[sessqentitykey],master_key,master_row.get('id','')))" 
    114115   ><dtml-call "sqlStatement.append( 'ORDER BY sort_id')" 
    115116   ><dtml-in "query(' '.join(sqlStatement))['records']" mapping 
     
    117118    ><dtml-call "sqlStatement.append( 'UPDATE '+details['tablename'])" 
    118119    ><dtml-call "sqlStatement.append( 'SET sort_id='+sql_quote__(details['tablename'],'sort_id',(_['sequence-index']+1)*10))" 
    119     ><dtml-call "sqlStatement.append( 'WHERE '+details['fk']+'='+sql_quote__(SESSION[sessqentitykey],master_key,row.get('id','')))" 
     120    ><dtml-call "sqlStatement.append( 'WHERE '+details['fk']+'='+sql_quote__(SESSION[sessqentitykey],master_key,master_row.get('id','')))" 
    120121    ><dtml-call "sqlStatement.append( 'AND '+primary_key+'='+sql_quote__(details['tablename'],primary_key,_[primary_key]))" 
    121122    ><dtml-call "executeQuery(' '.join(sqlStatement))" 
    122123   ></dtml-in 
     124   ><dtml-call "REQUEST.set('details_normalize',_.False)" 
    123125  ></dtml-if 
    124126 
    125127  ><dtml-call "REQUEST.set('sqlStatement',[])" 
    126128  ><dtml-call "sqlStatement.append( 'SELECT * FROM '+details['tablename'])" 
    127   ><dtml-call "sqlStatement.append( 'WHERE '+details['fk']+'='+sql_quote__(SESSION[sessqentitykey],master_key,row.get('id','')))" 
     129  ><dtml-call "sqlStatement.append( 'WHERE '+details['fk']+'='+sql_quote__(SESSION[sessqentitykey],master_key,master_row.get('id','')))" 
    128130  ><dtml-if details_ordered 
    129131   ><dtml-call "sqlStatement.append( 'ORDER BY sort_id')" 
     
    137139 
    138140  <dtml-call "REQUEST.set('rindex',-1)" 
    139   ><dtml-if "REQUEST.get('details_action')=='update'" 
     141  ><dtml-if "REQUEST.get('details_action')=='update_%s'%details['tablename']" 
    140142   ><dtml-in "REQUEST['res']" mapping 
    141143    ><dtml-if "_.str(_[primary_key])==_.str(details_rowid)" 
     
    149151   <dtml-call "REQUEST.set('grid_options',{})"> 
    150152   <dtml-call "operator_setitem(grid_options,'insert',{'action':'javascript:detailsTableShow(\'%s\')'%details['tablename']})"> 
    151    <dtml-call "operator_setitem(grid_options,'update',{'action':url_append_params(URL,{'lang':lang,'action':'update','rowid':row.get('id',''),'details_action':'update'})+'&details_rowid=%s'})"> 
    152    <dtml-call "operator_setitem(grid_options,'delete',{'action':url_append_params(URL,{'lang':lang,'action':'update','rowid':row.get('id',''),'details_action':'delete'})+'&details_rowid=%s'})"> 
     153   <dtml-call "operator_setitem(grid_options,'update',{'action':url_append_params(URL,{'lang':lang,'action':'update','rowid':master_row.get('id',''),'details_action':'update_%s'%details['tablename']})+'&details_rowid=%s'})"> 
     154   <dtml-call "operator_setitem(grid_options,'delete',{'action':url_append_params(URL,{'lang':lang,'action':'update','rowid':master_row.get('id',''),'details_action':'delete_%s'%details['tablename']})+'&details_rowid=%s'})"> 
    153155   <dtml-if details_ordered> 
    154156    <dtml-call "operator_setitem(grid_options,'sort', 
    155157        {'action':{ 
    156             'up':url_append_params(URL,{'lang':lang,'action':'update','rowid':row.get('id',''),'details_action':'move_up'})+'&details_rowid=%s', 
    157             'down':url_append_params(URL,{'lang':lang,'action':'update','rowid':row.get('id',''),'details_action':'move_down'})+'&details_rowid=%s', 
     158            'up':url_append_params(URL,{'lang':lang,'action':'update','rowid':master_row.get('id',''),'details_action':'move_up_%s'%details['tablename']})+'&details_rowid=%s', 
     159            'down':url_append_params(URL,{'lang':lang,'action':'update','rowid':master_row.get('id',''),'details_action':'move_down_%s'%details['tablename']})+'&details_rowid=%s', 
    158160            }})"> 
    159161   </dtml-if> 
     
    171173<dtml-call "REQUEST.set('details_row',{})" 
    172174><dtml-call "REQUEST.set('details_submit',getZMILangStr('BTN_INSERT'))" 
    173 ><dtml-if "REQUEST.get('details_action')=='update'" 
     175><dtml-if "REQUEST.get('details_action')=='update_%s'%details['tablename']" 
    174176 ><dtml-in "REQUEST['res']" mapping 
    175177  ><dtml-call "REQUEST.set('row',_['sequence-item'])" 
     
    183185><dtml-call "REQUEST.set('row',details_row)"> 
    184186 
    185  <div class="detailelements" id="table_<dtml-var "details['tablename']">" style="<dtml-unless "REQUEST.get('details_action')=='update'">display:none;</dtml-unless>margin: 10px 0px 2px 0px;"> 
     187 <div class="detailelements" id="table_<dtml-var "details['tablename']">" style="<dtml-unless "REQUEST.get('details_action')=='update_%s'%details['tablename']">display:none;</dtml-unless>margin: 10px 0px 2px 0px;"> 
    186188  <dtml-comment> 
    187189  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- 
  • ZMS/trunk/import/zmssqldb/cd.model.xml

    r121 r288  
    5656                <item key="fk">cd_id</item> 
    5757                <item key="tablename">cdtracks</item> 
     58                <item key="delete">cascade</item> 
     59              </dictionary> 
     60            </item> 
     61          </dictionary> 
     62        </item> 
     63        <item> 
     64          <dictionary> 
     65            <item key="id">reviews</item> 
     66            <item key="hide" type="int">1</item> 
     67            <item key="label">Reviews</item> 
     68            <item key="details"> 
     69              <dictionary> 
     70                <item key="fk">cd_id</item> 
     71                <item key="tablename">cdreviews</item> 
    5872                <item key="delete">cascade</item> 
    5973              </dictionary> 
     
    127141  </dictionary> 
    128142</item> 
     143<!-- ######################################## 
     144     ### REVIEWS 
     145     ######################################## --> 
     146<item> 
     147  <dictionary> 
     148    <item key="id">cdreviews</item> 
     149    <item key="label">Reviews</item> 
     150    <item key="columns"> 
     151      <list> 
     152        <item> 
     153          <dictionary> 
     154            <item key="id">review_id</item> 
     155            <item key="hide" type="int">1</item> 
     156            <item key="label">Id</item> 
     157            <item key="type">int</item> 
     158            <item key="pk" type="int">1</item> 
     159            <item key="auto">insert</item> 
     160          </dictionary> 
     161        </item> 
     162        <item> 
     163          <dictionary> 
     164            <item key="id">cd_id</item> 
     165            <item key="hide" type="int">1</item> 
     166            <item key="label">CD</item> 
     167            <item key="fk"> 
     168               <dictionary> 
     169                 <item key="tablename">cds</item> 
     170                 <item key="fieldname">cd_id</item> 
     171                 <item key="displayfield">cd_title</item> 
     172                </dictionary> 
     173            </item> 
     174          </dictionary> 
     175        </item> 
     176        <item> 
     177          <dictionary> 
     178            <item key="id">review_author</item> 
     179            <item key="label">Author</item> 
     180          </dictionary> 
     181        </item> 
     182        <item> 
     183          <dictionary> 
     184            <item key="id">review_timestamp</item> 
     185            <item key="label">Date/Time [YYYY-MM-DD.hh.mm.ss]</item> 
     186          </dictionary> 
     187        </item> 
     188        <item> 
     189          <dictionary> 
     190            <item key="id">review_title</item> 
     191            <item key="label">Title</item> 
     192          </dictionary> 
     193        </item> 
     194        <item> 
     195          <dictionary> 
     196            <item key="id">review_content</item> 
     197            <item key="label">Content</item> 
     198          </dictionary> 
     199        </item> 
     200      </list> 
     201    </item> 
     202  </dictionary> 
     203</item> 
    129204<!-- ######################################## --> 
    130205</list> 
  • ZMS/trunk/import/zmssqldb/zgadfly.cd.sql

    r121 r288  
    1414insert into cdtracks (cd_id, track_id, track_title, track_duration, track_info, sort_id) values ( 4712, 8, 'Rain Fall Down', '4:54', '', 40); 
    1515insert into cdtracks (cd_id, track_id, track_title, track_duration, track_info, sort_id) values ( 4712, 9, 'Streets of Love', '5:10', '', 50); 
     16create table cdreviews (cd_id integer, review_id integer, review_author varchar, review_timestamp varchar, review_title varchar, review_content varchar); 
     17insert into cdreviews (cd_id, review_id, review_author, review_timestamp, review_title, review_content) values ( 4711, 1, 'F. Lieberman', '2005-01-01.12.00.00', 'Excellent!', 'Excellent sound, the best Pink Floyd record ever!'); 
  • ZMS/trunk/version.txt

    r274 r288  
    1 ZMS 2.11.1-14 
     1ZMS 2.11.1-15 
Note: See TracChangeset for help on using the changeset viewer.