Bonjour,
Un collègue m'a donné un bon de code que j'utilise depuis un moment.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
sql = context.select_publications_all_by_user
result = sql(owner=int(publication_user))
out_tmpl = """<tr><td style="border-bottom:1px dashed #cccccc;"><img style="margin-top:8px;" src="../../img/arrow-small-right.gif" /></td><td style="border-bottom:1px dashed #cccccc; padding:5px 0px 5px 0px;"><span><b>%s</b></span>, <span>%s</span>, <span>%s</span>, <span>%s</span></td></tr>
"""

dicts = result.dictionaries()

if not len(dicts):
  return "The selected collaborator has no entries corresponding at the desired category"

out = []
for item in result.dictionaries():
  out.append(out_tmpl %(item['team'], item['years'], item['title'],item['ref']))

return """<table class="tb_publications" cellpadding="3" cellspacing="0">%s</table>""" %"\n".join(out)

#
Le problème dans ce code, c'est que si le champs team, years ou title, de ma base de donnée sont vide, il affichera la virgule, qui sont soulignée, dans le code ci-dessu.

Alors je dois trouver une solution pour la virgule qui précede un des item[''] ne s'affiche pas si se derniere champs est vide dans la base de donné.

On m'a donc proposé ce code, mais je me casse la tete a le faire fonctionner ca je sais qu'il y a un binz au niveau de (out_tmpl %(x,y,z,", ".join(cells)))

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
sql = context.select_publications_all_by_user
result = sql(owner=int(publication_user))

out_tmpl = """<tr><td style="border-bottom:1px dashed #cccccc;"><img style="margin-top:8px;" src="../../img/arrow-small-right.gif" /></td>
                   <td style="border-bottom:1px dashed #cccccc; padding:5px 0px 5px 0px;"><span><b>%s</b></span> %s %s %s</td>
             </tr>"""
field_names = ['fd_team','fd_years', 'fd_title', 'fd_ref',] # and other field names, just an example

rows = []
for item in result.dictionaries():
    cells = []
    for field_name in field_names:
        value = item.get(field_name, '')
        if value:
            cells.append("<span>%s</span>" %value)
    rows.append(out_tmpl %(x,y,z,", ".join(cells)))        # just an example, fill in the correct values for x,y and z
            
return """<table class="tb_publications" cellpadding="3" cellspacing="0">%s</table>""" %"".join(rows)
A la place de (out_tmpl %(x,y,z,", ".join(cells))) , j'ai essayé
Code : Sélectionner tout - Visualiser dans une fenêtre à part
(out_tmpl %(fd_team,fd_years,fd_title,fd_ref,", ".join(cells)))
et
Code : Sélectionner tout - Visualiser dans une fenêtre à part
(out_tmpl %(%s,%s,%s,%s,", ".join(cells)))
Mais sans succès :o(
Arrivez vous voir mes erreur, corriger mon code?
Avez vous mieux a me proposer

Milles merci, je suis un super debutant en Python