Alessio Treglia

everybody lies
  • Quality Assurance
  • EN blog
  • rss
  • Inizio
  • Chi sono
  • pyRisk
  • Roma3 WiFi Authenticator
  • Installation Report Generator
  • Contattami

Una nuova macro per il wiki di Ubuntu-it

quadrispro | 5 Luglio 2008

Prendendo spunto da un articolo di Stephan Hermann, nel quale veniva mostrato il codice di una simpatica quanto utile macro per MoinMoin, ho pensato bene di sviluppare anche io una nuova macro per il wiki de’ noantri.

Invece di partire dal codice della macro originale (che è disponibile all’indirizzo dell’articolo sopra citato), vi mostro subito subito la mia piccola invenzione:


from MoinMoin import config, wikiutil

projects = {
    "ubuntu"    : "https://bugs.launchpad.net/ubuntu/+bug/%d",
    "debian"	: "http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=%d",
    "gnome"     : "http://bugzilla.gnome.org/show_bug.cgi?id=%d",
    "kde"       : "http://bugs.kde.org/show_bug.cgi?id=%d",
    "xfce"      : "http://bugzilla.xfce.org/show_bug.cgi?id=%d"
    }

projects_emblems = {
    "ubuntu"    : "https://launchpadlibrarian.net/9608570/ubuntu_emblem.png",
    "debian"	: "http://www.debian.org/favicon.ico",
    "gnome"     : "https://launchpadlibrarian.net/11396521/gnome.png",
    "kde"       : "https://launchpadlibrarian.net/7101115/klogo-official-crystal-14.png",
    "xfce"      : "https://launchpadlibrarian.net/4040580/mouse.png"
    }

def NoProjectSelectedException(Exception):
    """
    The macro raises an instance of this exception
    when the argument doesn't contain any project
    valid name.
    """
    def __init__(self, message):
        """
        Default __init__ method.
        """
        Exception.__init__(self, message)

def args_to_dict(args):
    """
    This method converts a string in a dictionary.
    It uses project's name (if valid) as key, and
    a list of bug ids as value.
    For example:

    The call:

    args_to_dict("gnome 3 4 6 ubuntu 1 9 6 kde 7 xfce")

    returns:

    {'kde': [7], 'xfce': [], 'gnome': [3, 4, 6], 'ubuntu': [1, 9, 6]}
    """
    args_dict = dict()
    project_selected = None
    for i in projects.keys():
        args_dict[i] = list()
    if args:
        args_list = args.split()
        for cur in args_list:
            if cur in projects.keys():
                project_selected = cur
            elif project_selected != None:
                try:
                    args_dict[project_selected].append(int(cur))
                except ValueError:
                    raise ValueError, u"Carattere non valido, i bug devono essere indicati con numeri interi: %s"
            else:
                raise NoProjectSelectedException, u"Nessun progetto selezionato per i bug elencati: %s"
    return args_dict

def execute(macro,args):
    """
    Execute method. It formats and returns
    the result.
    """
    request=macro.request
    formatter=macro.formatter
    result=""
    try:
        args_dict = args_to_dict(args)
    except ValueError, e:
        raise ValueError(e.message % args)
    except NoProjectSelectedException, e:
        raise NoProjectSelectedException(e.message % args)
    for i in args_dict.keys(): # i = current project
        for j in args_dict[i]: # j = current bug id
            result += u'<img src="%s" />' % projects_emblems[i]
            # result+='<img src="https://launchpadlibrarian.net/7094128/launchpad-icon.png" /> '
            # result+=formatter.url(on=1,url="http://launchpad.net/bugs/%s" % i)
            result+=formatter.url(on=1,url=projects[i] % j)
            result+=u"#%d" % j
            result+=formatter.url(on=0)
            result+=" "
    return result

Come tutte le macro, a partire da un input restituisce un risultato formattato secondo un modello prestabilito: in questo caso, a partire da un elenco di progetti e di relativi bug, viene restituita una riga in HTML, contenente l’icona rappresentativa del progetto affiancata dal link al servizio di bugtracking dello stesso.

Partiamo dall’input, ecco la sintassi corretta:

[[Bug(progetto1 id_bug_1 progetto2 id_bug_1 progetto3 id_bug_1 id_bug_2)]]

Semplice no? Non ci sono separatori, bisogna solo ricordare che i numeri dei bug fanno riferimento al primo progetto che li precede (non è necessario inserirli in nessun ordine particolare). In caso di errore, a seconda del tipo dello stesso, possono venire lanciate due diverse eccezioni.

Se desiderate un esempio pratico, vi basta aprire la vostra homepage sul wiki con l’editor testuale e inserire questa riga in un punto qualsiasi della pagina:


Bug segnalati: [[Bug(ubuntu 68 3 5 gnome 21 kde 9 xfce 8 debian 76)]]

Ed ecco il risultato:

Un elenco di bug segnalati

Concludo segnalando, a chi fosse interessato allo sviluppo delle funzionalità del wiki, l’indirizzo del repository degli amministratori del Gruppo documentazione italiano.

Categorie
Documentazione e wiki, GTK Rm3WiFi Authenticator, Planet Ubuntu-it, Python
Commenti RSS
Commenti RSS
Trackback
Trackback

« Il mio blog in lingua inglese Scrivere un’applicazione in C con le GTK (Seconda parte) »

3 risposte

A quando la macro per risolverli? :)

DktrKranz | 5 Luglio 2008 | 18:41

A quando la macro per risolverli? :)

[Reply]

Figa, ma verrà utilizzata con frequenza: once a month :D Figa

l3on | 5 Luglio 2008 | 19:39

Figa, ma verrà utilizzata con frequenza: once a month :D

Figa però… :D

[Reply]

@Leo: la tua è tutta invidia! :D @DktrKranz: ci sta lavorando

quadrispro | 5 Luglio 2008 | 19:55

@Leo: la tua è tutta invidia! :D

@DktrKranz: ci sta lavorando l3on, chiedi a lui

[Reply]

Lascia un commento

Puoi usare questi tag : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Click to cancel reply

Sponsor

Chi sono


Per contattarmi mandami una mail

Argomenti

Aggiornamento Ambienti di sviluppo Audio Bug e problemi vari C Cazzate varie Comunità Italiana Documentazione e wiki Feisty Firefox GNOME GTK+ GTK Rm3WiFi Authenticator Guide e howto Gutsy Hardy Installation Report Generator Installazione e problemi all'avvio Intrepid Java Kernel e moduli Last.fm Musica Notizie Open source & free software Planet Ubuntu-it Programmazione e sviluppo Python Siti,servizi & blog Società e media Traduzioni Ubuntu Università e scienza Viaggi Video Windows Wordpress Xubuntu

Ultimi commenti

  • quadrispro su Installation Report Generator
  • io&ubuntu su Installation Report Generator
  • Alessio Treglia » Risolto un bug in Installation Report Generator su Installation Report Generator
  • Roberto su Python e MVC, una storia tutta da scrivere (Prima parte)
  • paolettopn su Nuovo sistema di ticket per il wiki di Ubuntu-it

Tutti gli articoli

Ubuntu in Italiano

Versione a 32 bit

RSS Planet di Ubuntu-it

  • Leo Iannacone (l3on): Ubuntu-it Meeting 2008 (Slideshow)
  • Alessio Treglia (quadrispro): Risolto un bug in Installation Report Generator
  • Milo Casagrande: Happy Third Birthday!
  • Paolo Garbin (paolettopn): Buon compleanno, Comunità di Ubuntu-it
  • Lorenzo Sfarra (twilight): Buon compleanno ubuntu-it!

Blogroll

  • (LS) Lorenzo Sfarra
  • Bubuntu
  • crisis
  • Dagospia
  • Divilinux Lost Blog
  • Embrace’s Blog
  • Fradeve OpenBlog
  • Il blog di Totò
  • Il mondo di Paolettopn
  • Leo
  • Maurizio Moriconi
  • Milo Casagrande
  • Parzialmente scremato
  • TuxLinux
  • Ubuntu block notes

Licenza

I contenuti di questo sito sono coperti da licenza copyleft Creative Commons


Creative Commons Attribution-ShareAlike 2.5 Italy

Powered links

Il Bloggatore
BlogItalia.it - La directory italiana dei blog
Sfondi Desktop Classifica di siti - Iscrivete il vostro!
eXplicatum - Aggregatore online di Notizie / Blog / Feed RSS Blogger Italiani

Ascolti recenti

  • Joe Cocker – Feelin Alright
  • Band from TV – You Can't Always Get What You Want
  • Solomon Burke – 10 - None of Us Are Free
  • Jon Cleary – Got to Be More Careful
  • Three Dog Night – One is the Lonliest Number
  • Solomon Burke – 10 - None of Us Are Free
  • Jon Cleary – Got to Be More Careful
  • Band from TV – You Can't Always Get What You Want
  • Massive Attack – Teardrop
  • Joe Cocker – Feelin Alright

RSS alessio and friends on identi.ca

  • alessio: New project -> https://launchpad.net/installation-report-generator
  • alessio: Listening -> Elvis Costello - Beautiful
  • alessio: Life is hard without a car...
  • alessio: I'm very tired today...
  • alessio: "You can't always get what you want"
  • milo: busy busy busy... this is a very busy period...
  • alessio: Ubuntu-it ticket is ready!!!!! -> http://qa.alessiotreglia.com/
  • alessio: WOW! I'm back!
  • milo: I'm really getting tired of this work... but dammit, why nobody answer to my CV?!?!
  • milo: Trying Deskbar Applet... 1 2 3 check check...

Accedi o registrati

  • Registrati
  • Collegati
  • Voce RSS
  • RSS dei commenti
  • WordPress.org
rss Commenti RSS valid xhtml 1.1 design by jide powered by Wordpress get firefox