domprojects.py :  » Business-Application » ganttproject-at-web » gantt » older » old_22mar » cgi-bin » Python Open Source

Home
Python Open Source
1.3.1.2 Python
2.Ajax
3.Aspect Oriented
4.Blog
5.Build
6.Business Application
7.Chart Report
8.Content Management Systems
9.Cryptographic
10.Database
11.Development
12.Editor
13.Email
14.ERP
15.Game 2D 3D
16.GIS
17.GUI
18.IDE
19.Installer
20.IRC
21.Issue Tracker
22.Language Interface
23.Log
24.Math
25.Media Sound Audio
26.Mobile
27.Network
28.Parser
29.PDF
30.Project Management
31.RSS
32.Search
33.Security
34.Template Engines
35.Test
36.UML
37.USB Serial
38.Web Frameworks
39.Web Server
40.Web Services
41.Web Unit
42.Wiki
43.Windows
44.XML
Python Open Source » Business Application » ganttproject at web 
ganttproject at web » gantt » older » old_22mar » cgi bin » domprojects.py
#!/usr/bin/python
"""
  dom utilityes
  
  @since:18-feb-2005
  @author:Baruffaldi Paolo
"""
__docformat__ = "epytext it"
ICON_XML_URL="/xml.png"

def dom_etichetta(tag):
  if tag.getAttribute("label") >"":
    return tag.getAttribute("label")
  else:
    return tag.getAttribute("name")
    
def dom_get_element_by_value(tag_list,valore_attributo,nome_attributo="name"):
  """
    data una lista, torna gli elementi che hanno
    un determinato attributo "name",
    NON e' il getElementByTagName
  """
  for a in tag_list:
    if a.getAttribute(nome_attributo)==valore_attributo:
      return a
  raise ValueError, "nella lista passata, non esiste alcun elemento con %s='%s'" % (nome_attributo,valore_attributo)

def dom_set_icon_xml(image_url):
  """
    defines the xml url
  """
  global ICON_XML_URL
  ICON_XML_URL = image_url
  
def dom_info_button(tag):
  repr_tag = tag.toxml().replace("<","&lt;").replace(">","&gt;")
  repr_tag = repr_tag.replace("=","<span style='color:red;'>=</span>")
  repr_tag = repr_tag.replace("&lt;","<span style='color:red;'>&lt;</span>")
  html="""<input type='image' src='%s' value='XML' 
  onmouseout='this.nextSibling.style.display="none"' onmouseover='this.nextSibling.style.display="block"'
  style='background-color:#880; color:white; text-align:center;'
    onclick='x=window.open();x.document.write("<div style=\\"white-space:pre;\\">"+this.nextSibling.innerHTML+"</div>");x.document.close()'><div 
  style='opacity:0.8; display:block; position:absolute; white-space:pre; display:none; 
  background-color:#ffc; font-size:14;'>
  %s
  </div>
  """ % (ICON_XML_URL,repr_tag)
  return html

def dom_2sql_structure(tag):
  """
    deterimina le tabelle sql
    sulla base della truttura
    
  @author:Baruffaldi Paolo
  @since:14-feb-2005
  @bug: trova solo i nomi tabella e i campi, non determina le chiavi
"""

  tabelle = {}
  for tabella in tag.getElementsByTagName("items"):
    nome_tab =tabella.getAttribute("db_table")
    tabelle[nome_tab]={}
    for campo in tabella.getElementsByTagName("item"):
      if dom_parent_by_tag_name(campo,"items") != tabella:
        continue
      nome_campo = campo.getAttribute("name")
      tabelle[nome_tab][nome_campo]=campo
  ris_txt=u"""
  <html><h2>Tables for $</h2>
  <style>
  .tabella{margin:10px; border:solid 1px blue;}  
  .commento {position:absolute; left:50%; color:#080;}
  .riga {position:absolute; left:0%; width:55%; border:solid 1px green; opacity:0.5; border-width:0 0 1 0;}
  </style>
  
  <span class='commento'>COMMENTO</span> SQL  <span class='riga'>riga</span>
  """.replace("$",dom_etichetta(tag))
  k_ord=tabelle.keys()
  k_ord.sort()
  for a in k_ord:
    ris=[]
    k_ord2 =tabelle[a].keys()
    k_ord2.sort()
    poi = ","
    for n,b in enumerate(k_ord2):
      singolo = tabelle[a][b]
      commento=dom_etichetta(singolo)
      riga="%s %s" % (b,singolo.getAttribute("db_kind"))
      if singolo.getAttribute("required")=="1":
        riga+=" NOT NULL"
      if n==(len(k_ord2)-1):
        poi=");"
      ris.append("\n\t%s%s<span class='commento'>-- %s\t</span><span class='riga'>%02d</span>"% (riga,poi,commento,n))    
    ris_txt+= ("<div class='tabella'>CREATE TABLE %s (" % a)+"".join(ris)+"\n</div>"
  ris_txt+="</html>"
  return ris_txt.encode("UTF-8")
  
def dom_pard_values(dom_tree,pard,tipo_intestazione=None):
  """
    combina pard con dom_tree,
    ottenendo la lista di tipo (chiave,valore),
    se _tipo_intestazione_ == "dom"
    ottengo la lista di tipo (<dom Element>,valore)
     
  """
  ris=[]
  for a in dom_tree.getElementsByTagName("item"):
    nome=a.getAttribute("name")
    if pard.has_key(nome):
      if tipo_intestazione == "dom":
        ris.append([a,pard[nome]])
      else:
        ris.append([nome,pard[nome]])
  return ris
  
def dom_attr2dict(tag):
  return dict(tag.attributes.items())
  
def dom_parent_by_tag_name(tag,nome,n=0):
  """
    ritorna l'avo di tipo nome
    (nodeName == _nome_)
    @return: <DOM Element>
  """
  if tag.parentNode.nodeName == nome:
    return tag.parentNode
  else:
    try:
      return dom_parent_by_tag_name(tag.parentNode,nome,n+1)
    except:
      return False

def dom_voglio_nascosto(tag,azione=None):
  """
    torna True se voglio nascondere questo campo,
    sulla base di hidden,
    che puo' avere valore 1 o lista di stringhe (dovrebbero essere
    le azioni)
  """
  x=tag.getAttribute("hidden")
  if x == "1":
    return True
  elif x in [None,"0"]:
    return False
  else:
    if x.find(",")>0:
      return azione in x.split(",")
    else:
      return azione == x
  

def dom_campo_repr(tag,valore):
  """
    rappresenta il valore di un tag in html
    valore = valore da rappresentare
  """
  
  if valore == None:
    return ""
  str_kind=tag.getAttribute("kind")
  if str_kind.find(".")>-1:
    tipo = str_kind.split(".")
  else:
    tipo = [str_kind]
    
  if tipo[0] == "date":
    html=dttools.formatta(valore)
  elif tipo[0] == "select":
    valori = tag.getElementsByTagName("values")[0]
    if valori.getAttribute("kind")=="xml":
      html="<span class='errore'>COD. %s</span>" % valore
      for op in valori.getElementsByTagName("value"):
        if op.getAttribute("v") == valore:
          html="<b>%s</b>" % op.getAttribute("label")
          break
    else:
      html= valore
  elif tipo[0] == "user":
    if tipo[1] == "name":
      url = "http://tel.mmfg.it/bin/driver?module=home&program=search&sid=32322641048634"
      url+="&search_by_name=Search&nome_like=%s%s%s" % (valore[:4],"%",valore[4:])
      url+="&numero=0"
      html="<a href=\"%s\" target='_new' title='cerca su tel.mmfg.it'>%s</a>" % (url,valore)
  else:
    html="%s" % valore
  return html

def dom_campo_input(a,valore=None,action=None):
  """
    crea il singolo tag di input,
    valore = valore da presentare
    action = [None,"search","write"]
  """
  act_ls=[None,"search","write"]
  if not(action in act_ls):
    raise ValueError, "action deve appartenere a : %r" % act_ls
  tipo = a.getAttribute("kind").split(".")
  
  if tipo[0]=="select":
    html= "<select name='%(name)s'>"
    valori =a.getElementsByTagName("values")[0]
    if action == "search":
      ls_ris=["<option value=''></option>"]
    else:
      ls_ris=[]
    if valori.getAttribute("kind")=="xml":
      for op in valori.getElementsByTagName("value"):
        if op.getAttribute("v") == valore:
          selected="SELECTED"
        else:
          selected=""
        ls_ris.append(("<option value='%(v)s' %%s title='%(description)s'>%(label)s</option>" % dom_attr2dict(op)) % selected) 
    html+="".join(ls_ris)+"</select>"
    
  elif tipo[0]=="date":
    html="<input type='text' name='%(name)s' size='10' maxlength='10' value='%(value_is)s' %(computed)s>"
  
  elif tipo[0]=="number":
    if tipo[1]=="integer":
      html="<input name='%(name)s' value='%(value_is)s' onkeyup='this.value=this.value.match(/[0-9]*/)' %(computed)s>"
    elif tipo[1]=="real":
      html="<input name='%(name)s' value='%(value_is)s' onkeyup='this.value=this.value.match(/[0-9]+\.?[0-9]*/)' %(computed)s>"
    elif tipo[1]=="perc":
      html="<input name='%(name)s' value='%(value_is)s' onkeyup='this.value=Math.min(this.value.match(/[0-9]{0,3}/),100)' size='3' %(computed)s>&perc;"
      
  elif tipo[0]=="maxmara":
    if tipo[1]== "as":
      html= "<input type='text' name='%(name)s' value='%(value_is)s' size='2' onkeyup='this.value=this.value.match(/[0-9]{0,1}[1,2]{0,1}/)' %(computed)s>"
    else:
      html="ERRORE: implementare"
  else:
    html= "<input type='text' name='%(name)s' value='%(value_is)s' %(computed)s>"
  
  diz =dom_attr2dict(a)
  diz["value_is"]=valore or ""
  if  action!='search':
    if a.getAttribute("computed")=="1":
      diz["computed"]="readonly='true' class='noedit'"
    else:
      diz["computed"]=""
  else:
    diz["computed"]=""
  html%= diz
  html+=dom_info_button(a)
  return html 
www.java2java.com | Contact Us
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.