Conjunto de Mudanças 816 no publico para SDE/trunk/StrDocElem.py


Ignorar:
Timestamp:
04/10/2005 11:43:03 (14 anos atrás)
Autor:
ciciliati
Mensagem:

v101: Merge das versões v003 e v100. Ainda falta resolver os problemas

que surgiram na v003, especialmente no tratamento de eventos.

Arquivo:
1 editado

Legenda:

Não Modificado
Adicionado
Removido
  • SDE/trunk/StrDocElem.py

    r809 r816  
    3333def StrDocElem_add(self,REQUEST):
    3434    "Método para adicionar um objeto StrDocElem"
     35    print "### DEBUG: StrDocElem_add: id do self: %s - %s" % (self.id,`self`)
     36    print "### DEBUG: StrDocElem_add: id do self.this(): %s - %s" % (self.this().id,`self.this()`)
    3537    request = REQUEST
    3638    RESPONSE =  request.RESPONSE
    3739    temp_id = self.newElemId()
    3840    request.set('id',temp_id)
    39     instance = StrDocElem(request)
     41    instance = StrDocElem(request,self.this())
    4042    instance.reindex_object()
     43       
     44    # add the instance to the ObjectManager
    4145    self._setObject(request.id,instance)
    4246    instance=getattr(self.this(),request.id)
    43     defelem = ""
    44     if request.has_key('type'):
    45         instance.manage_changeProperties(type=request.type)
    46         defelem=instance.definitionElement(obj=instance)
    47         for p in defelem.objectValues('SDE-Template-Attribute'):
    48             instance.manage_addProperty(id='@'+p.id+'@', value='', type='string')
    4947    if request.has_key('position'):
    5048        offset = request.position
     
    5452    if offset > 0:
    5553        self.manage_move_objects_down (request, temp_id, offset)
    56     if hasattr(defelem,"initial_text"):
    57         if defelem.initial_text != "":
    58             instance.manage_changeProperties(text=defelem.initial_text)
    59     if 'SDE_AfterInsert' in defelem.objectIds('Script (Python)'):
    60         defelem.SDE_AfterInsert(instance)
    6154    return instance
    6255
    63 class StrDocElem(OrderedFolder,CatalogAware,ObjectManager,PropertyManager):
     56class StrDocElem(OrderedFolder,CatalogAware):
    6457    "Classe de elementos de documentos estruturados"
    6558    meta_type = 'SDE-Document-Element'
    6659    filtered_meta_types = []
    6760
    68     def __init__(self,REQUEST):
     61    def __init__(self,REQUEST,container):
    6962        self.id = REQUEST.id
    7063        self._setProperty("type",'')
    7164        self._setProperty("text",'')
     65        if REQUEST.has_key('type'):
     66            self.type = REQUEST['type']
     67            doc=container.document()
     68            print "### DEBUG - __init__ - doc: %s - %s" % (doc.id, `doc`)
     69            defpath=container.definitionPath()+'/'+self.type
     70            print "### DEBUG - defpath : %s " % defpath
     71            defelem=doc.definitionElement(element_path=defpath)
     72            print "### DEBUG - defelem : %s - %s " % (defelem.id, `defelem`)
     73            for p in defelem.objectValues('SDE-Template-Attribute'):
     74                self.manage_addProperty(id='@'+p.id+'@', value='', type='string')
     75            if hasattr(defelem,"initial_text"):
     76                if defelem.initial_text != "":
     77                    self.text = defelem.initial_text
    7278
    7379    # *** attributes
     
    100106        else:
    101107            return ""
    102 
     108           
     109    def setNewIdForChildren(self, recursive=1, obj=""):
     110        if obj:           
     111            self=obj
     112        for t_obj in self.objectValues():           
     113            OrderedFolder.manage_renameObject(self, t_obj.id, self.newElemId())
     114            if recursive:
     115                t_obj.setNewIdForChildren (recursive=recursive, obj=t_obj)
     116
     117    def _get_id(self, id):
     118        # This is a overriding of the CopyContainer._get_id method,
     119        # located in OFS/CopySupport.py
     120        new_id = id
     121        session=self.REQUEST.SESSION
     122        if session.has_key('SDE_clip_type'):
     123            if session['SDE_clip_type'] == 'COPY':
     124                new_id = self.newElemId()
     125        print "### DEBUG: _get_id: old=%s new=%s" % (id,new_id)
     126        return new_id
     127       
    103128    # *** manage_beforeDelete (EVENT)
    104129    def manage_beforeDelete (self, item, containeR):
    105         defElem = self.definitionElement(obj=self)
     130        defElem = item.definitionElement(obj=item)
    106131        if 'SDE_BeforeDelete' in defElem.objectIds('Script (Python)'):
    107132            defElem.SDE_BeforeDelete(item)
    108133        return
     134       
     135    # *** manage_afterAdd (EVENT)
     136    def manage_afterAdd (self, item, containeR):
     137        print "### DEBUG: AfterAdd para o item %s" % item.id
     138        defElem = item.definitionElement(obj=item)
     139        print "### DEBUG: id do defelem: %s" % defElem.id
     140        if 'SDE_AfterInsert' in defElem.objectIds('Script (Python)'):
     141            print "### DEBUG: Achou Python de evento"
     142            print defElem.SDE_AfterInsert(item)
     143        return       
     144
     145    # *** manage_afterClone (EVENT)
     146    def manage_afterClone (self, item):
     147        print "### DEBUG: AfterClone para o item %s" % item.id
     148        session=self.REQUEST.SESSION
     149        if session.has_key('SDE_clip_type'):
     150            if session['SDE_clip_type'] == 'COPY':
     151                self.setNewIdForChildren(recursive=1,obj=self)
     152        return
     153#        return self.manage_afterAdd (item, containeR=None)
     154
    109155
    110156    # *** parent
     
    198244    def renderXMLforEditing (self,indent=0, id_edit='', path='', prev='', next=''):
    199245        "Método de renderização XML"
     246       
     247        session = self.REQUEST.SESSION
    200248        printed=""
    201249        spaces = ''
     
    227275            if next.type == self.type:
    228276                str_movedn_attrib = 'yes'
    229 
    230         printed+= '%s<sd_element id="%s" type="%s" type_name="%s" editing="%s" path="%s" up="%s" down="%s">\n' % (spaces, id, self.type, defelem.name(), str_edit_attrib, path, str_moveup_attrib, str_movedn_attrib)
     277               
     278        str_canpaste_attrib = 'no'
     279        if session.has_key('SDE_clip_key'):
     280            if session['SDE_clip_key']:
     281                for c in chd:
     282                    if c[0] == session['SDE_clip_object_type']:
     283                        str_canpaste_attrib = 'yes'
     284                        break;
     285
     286        printed+= '%s<sd_element id="%s" type="%s" type_name="%s" editing="%s" path="%s" up="%s" down="%s" paste="%s">\n' % (spaces, id, self.type, defelem.name(), str_edit_attrib, path, str_moveup_attrib, str_movedn_attrib, str_canpaste_attrib)
    231287        if defelem.has_own_value:
    232288            printed+= '%s    <sde_text>%s</sde_text>\n' % (spaces, self.text)
     
    276332        printed+= '%s</sd_element>\n' % spaces
    277333        return printed
     334       
     335    def add_to_clipboard (self, op_type, REQUEST):
     336        """ Método que coloca uma referência do objeto na área de teransferência (clipboard).
     337            se op_type = 'CUT', quando a operação de "paste" for realizada, o objeto será movido,
     338            senão (se op_type='COPY') o objeto será copiado. """
     339       
     340        session=self.REQUEST.SESSION
     341        session['SDE_clip_object_type'] = self.type   
     342        if op_type == 'COPY':
     343            v_clip_key = self.parent().manage_copyObjects(self.id)
     344        elif op_type == 'CUT':
     345            v_clip_key = self.parent().manage_cutObjects(self.id)
     346        else:
     347            return 0
     348       
     349        session['SDE_clip_type'] = op_type
     350        session['SDE_clip_key'] = v_clip_key
     351       
     352        return
    278353
    279354    def move_up(self):
Note: Veja TracChangeset para ajuda no uso do visualizador de conjunto de mudanças.
 

The contents and data of this website are published under license:
Creative Commons 4.0 Brasil - Atribuir Fonte - Compartilhar Igual.