Changeset 1122


Ignore:
Timestamp:
21.07.2010 22:19:32 (19 months ago)
Author:
zmsdev
Message:

Added support for defaults of mandatory sub-objects, insert-commands and programmatic zexp import.

Location:
ZMS/trunk
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • ZMS/trunk/ZMSGlobals.py

    r1067 r1122  
    158158      f.aq_parent = self 
    159159      return f 
     160 
     161    # -------------------------------------------------------------------------- 
     162    #  ZMSGlobals.import_zexp: 
     163    # -------------------------------------------------------------------------- 
     164    def import_zexp(self, zexp, new_id, id_prefix, _sort_id=0): 
     165      """ 
     166      Import zexp. 
     167      @param zexp 
     168      @type L{MyFile} 
     169      """ 
     170      return _fileutil.import_zexp(self, zexp, new_id, id_prefix, _sort_id) 
    160171 
    161172    # -------------------------------------------------------------------------- 
  • ZMS/trunk/ZMSMetaobjManager.py

    r1113 r1122  
    4747def syncType( self, meta_id, attr): 
    4848  try: 
    49     if attr['type'] == 'resource': 
     49    if (attr['type'] in ['resource']) or \ 
     50       (attr.get('mandatory',0)==1 and attr['type'] in self.getMetaobjIds()): 
    5051      ob = getattr( self, meta_id+'.'+attr['id'], None) 
    5152      if ob is not None: 
     
    751752       
    752753      # Handle resources. 
    753       if newType == 'resource': 
     754      if (newType in ['resource']) or \ 
     755         (newMandatory and newType in self.getMetaobjIds()): 
    754756        if isinstance( newCustom, _blobfields.MyFile): 
    755757          if oldId is not None and id+'.'+oldId in self.objectIds(): 
  • ZMS/trunk/_fileutil.py

    r1005 r1122  
    3434import tempfile 
    3535import zipfile 
     36 
     37 
     38""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 
     39_fileutil.import_zexp: 
     40 
     41Import zexp. 
     42""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 
     43def import_zexp(self, zexp, new_id, id_prefix, _sort_id=0): 
     44  # Import 
     45  filename = zexp.title_or_id() 
     46  fileid = filename[:filename.find('.')] 
     47  filepath = INSTANCE_HOME + '/import/' + filename 
     48  exportObj( zexp, filepath) 
     49  importZexp( self, filename) 
     50   
     51  # Rename 
     52  self.manage_renameObject(fileid,new_id) 
     53   
     54  ## Normalize Sort-IDs 
     55  obj = getattr( self, new_id) 
     56  obj.sort_id = _sort_id 
     57  self.normalizeSortIds( id_prefix) 
    3658 
    3759 
  • ZMS/trunk/_objchildren.py

    r750 r1122  
    2929# Product Imports. 
    3030import _blobfields 
     31import _fileutil 
    3132import _globals 
    3233 
     
    105106      if mandatory: 
    106107        if len(ids) == 0: 
    107           if obj_attr['type'] == '*' and type( obj_attr['keys']) is list and len( obj_attr['keys']) > 0: 
    108             obj_attr['type'] = obj_attr['keys'][0] 
    109           self.initObjChild(obj_attr['id'],0,obj_attr['type'],REQUEST) 
     108          default  = obj_attr.get('custom') 
     109          if default: 
     110            _fileutil.import_zexp(self,default,obj_attr['id'],obj_attr['id']) 
     111          else: 
     112            if obj_attr['type'] == '*' and type( obj_attr['keys']) is list and len( obj_attr['keys']) > 0: 
     113              obj_attr['type'] = obj_attr['keys'][0] 
     114            self.initObjChild(obj_attr['id'],0,obj_attr['type'],REQUEST) 
    110115      repetitive = obj_attr.get('repetitive',0)==1 
    111116      if repetitive: 
  • ZMS/trunk/dtml/ZMSMetamodelProvider/manage_main.dtml

    r1040 r1122  
    786786             ></dtml-in 
    787787            ></select 
    788            ></dtml-if 
     788           ><dtml-elif "oAttr['type'] in meta_types" 
     789            ><img src="<dtml-var MISC_ZMS>ico_default.gif" title="default" style="margin:0px 6px 0px 6px;" style="vertical-align:middle"/> 
     790            <input type="hidden" name="attr_custom_<dtml-var "oAttr['id']">_modified" value="0"/> 
     791            <input class="form-small" type="file" name="attr_custom_<dtml-var "oAttr['id']">" size="15" onchange="changeCustom(this);"/> 
     792            <dtml-if "oAttr.get('custom',None)"> 
     793             <dtml-try> 
     794             <dtml-let f="oAttr['custom']"> 
     795              <a href="<dtml-var "f.absolute_url()">" target="_blank" class="zmi"><dtml-var "string_maxlen(f.title,20)"></a>  
     796              <strong>(<dtml-var "getDataSizeStr(f.get_size())">)</strong> 
     797             </dtml-let> 
     798             <dtml-except><dtml-var error_type>: <dtml-var error_value><hr/><dtml-var error_tb newline_to_br></dtml-try> 
     799            </dtml-if> 
     800           </dtml-if 
    789801           ></nobr 
    790802          ></td> 
  • ZMS/trunk/zmscontainerobject.py

    r1031 r1122  
    620620              actions.append( action) 
    621621       
     622      #-- Insert Commands. 
     623      actions.extend(self.filtered_command_actions(path,REQUEST,insert_actions=True)) 
     624       
    622625      #-- Sort. 
    623626      actions.sort() 
    624627       
    625       #-- Headline, 
     628      #-- Headline. 
    626629      if len(actions) > 0: 
    627630        actions.insert(0,('----- %s -----'%self.getZMILangStr('ACTION_INSERT')%self.display_type(REQUEST),'')) 
     
    10011004      attr = self.getMetaobjAttr( meta_id, key) 
    10021005      zexp = attr[ 'custom'] 
    1003       filename = zexp.title_or_id() 
    1004       fileid = filename[:filename.find('.')] 
    1005       filepath = INSTANCE_HOME + '/import/' + filename 
    1006       _fileutil.exportObj( zexp, filepath) 
    1007       _fileutil.importZexp( self, filename) 
    1008        
    1009       ##### Create #### 
    10101006      id_prefix = _globals.id_prefix(REQUEST.get('id_prefix','e')) 
    10111007      new_id = self.getNewId(id_prefix) 
    1012        
    1013       ##### Rename #### 
    1014       self.manage_renameObject(fileid,new_id) 
    1015        
    1016       ##### Normalize Sort-IDs #### 
    1017       obj = getattr( self, new_id) 
    1018       obj.sort_id = _sort_id 
    1019       self.normalizeSortIds( id_prefix) 
     1008      _fileutil.import_zexp(self,zexp,new_id,id_prefix,_sort_id) 
    10201009       
    10211010      # Return with message. 
  • ZMS/trunk/zmsobject.py

    r1031 r1122  
    957957    #  ZMSObject.filtered_command_actions: 
    958958    # -------------------------------------------------------------------------- 
    959     def filtered_command_actions(self, path, REQUEST): 
     959    def filtered_command_actions(self, path, REQUEST, insert_actions=False): 
    960960      actions = [] 
    961961      auth_user = REQUEST['AUTHENTICATED_USER'] 
     
    964964      for metaCmdId in self.getMetaCmdIds(): 
    965965        metaCmd = self.getMetaCmd(metaCmdId) 
    966         hasMetaType = self.meta_id in metaCmd['meta_types'] 
    967         hasRole = False 
    968         hasRole = hasRole or len(self.intersection_list(self.getUserRoles(auth_user),metaCmd['roles'])) > 0 
    969         hasRole = hasRole or auth_user.has_role('Manager') 
    970         if hasMetaType and hasRole: 
    971           actions.append((metaCmd['name'],path+'manage_executeMetacmd')) 
     966        if (insert_actions and metaCmd['id'].startswith('manage_add')) or \ 
     967           (not insert_actions and not metaCmd['id'].startswith('manage_add')): 
     968          hasMetaType = self.meta_id in metaCmd['meta_types'] 
     969          hasRole = False 
     970          hasRole = hasRole or len(self.intersection_list(self.getUserRoles(auth_user),metaCmd['roles'])) > 0 
     971          hasRole = hasRole or auth_user.has_role('Manager') 
     972          if hasMetaType and hasRole: 
     973            actions.append((metaCmd['name'],path+'manage_executeMetacmd')) 
    972974       
    973975      # Return action list. 
Note: See TracChangeset for help on using the changeset viewer.