Projet

Général

Profil

amelioration-graphique-wf.diff

Thomas Noël, 18 septembre 2012 10:18

Télécharger (3,23 ko)

Voir les différences:


  

wcs/admin/workflows.ptl
95 95
            remove_style(child, child)
96 96
    return etree.tostring(tree)
97 97

  
98
def get_label_of_item(item):
99
    if getattr(item, 'label', None):
100
        label = item.label
101
        if getattr(item, 'by', None):
102
            roles = render_list_of_roles(item.by)
103
            label += ' %s %s' % (_('by'), roles)
104
    else:
105
        label = item.render_as_line()
106
    label = textwrap.fill(label.replace('"', '\\"'), 20)
107
    label = label.replace('\n', '\\n')
108
    return label
109

  
110
def get_label_of_item_for_html(item):
111
    if getattr(item, 'label', None):
112
        label = item.label
113
        if getattr(item, 'by', None):
114
            roles = render_list_of_roles(item.by)
115
            label += ' %s %s' % (_('by'), roles)
116
    else:
117
        label = item.render_as_line()
118
    label = textwrap.fill(label.replace('"', '\\"'), 20)
119
    label = label.replace('\n', '<BR/>')
120
    return label
121

  
98 122
def graphviz(workflow, url_prefix='', select=None, svg=True,
99 123
        include=False):
100 124
    out = StringIO()
......
105 129
    for status in workflow.possible_status:
106 130
        i = status.id
107 131
        print >>out, 'status%s' % i,
108
        print >>out, '[label="%s"' % status.name,
132
        url = 'status/%s/' % i
133
        local_actions = ['<TR BORDER="0"><TD BORDER="0" HREF="%s" ALIGN="LEFT">%s</TD></TR>' % (url, status.name)]
134
        for item in status.items:
135
            if getattr(item, 'status', None):
136
                continue
137
            label = get_label_of_item_for_html(item)
138
            url = 'status/%s/items/%s/' % (i, item.id)
139
            label = '<TR><TD HREF="%s" BORDER="1" ALIGN="RIGHT">%s</TD></TR>' % (url, label)
140
            local_actions.append(label)
141
        print >>out, '[label=<<TABLE BORDER="0">%s</TABLE>>' % (''.join(local_actions)),
109 142
        if select == str(i):
110 143
            print >>out, ',color=salmon'
111
        print >>out, ' URL="%sstatus/%s/"];' % (url_prefix, i)
144
        print >>out, '];'
112 145

  
113 146
    for status in workflow.possible_status:
114 147
        i = status.id
115 148
        for item in status.items:
116
            if getattr(item, 'status', None):
117
                next_id = item.status
118
            else:
119
                next_id = status.id
149
            if getattr(item, 'status', None) is None:
150
                continue
151
            next_id = item.status
120 152
            print >>out, 'status%s -> status%s' % (i, next_id)
121 153
            url = 'status/%s/items/%s/' % (i, item.id)
122
            if getattr(item, 'label', None):
123
                label = item.label
124
                if getattr(item, 'by', None):
125
                    roles = render_list_of_roles(item.by)
126
                    label += ' %s %s' % (_('by'), roles)
127
            else:
128
                label = item.render_as_line()
129
            label = textwrap.fill(label.replace('"', '\\"'), 20)
130
            label = label.replace('\n', '\\n')
154
            label = get_label_of_item(item)
131 155
            print >>out, '[label="%s"' % label,
132 156
            if select == '%s-%s' % (i, item.id):
133 157
                print >>out, ',color=salmon'