--- a/createdoc.py Fri Mar 30 16:39:12 2012 +0200
+++ b/createdoc.py Mon Apr 23 21:38:30 2012 +0200
@@ -2,13 +2,43 @@
# -*- coding: utf-8 -*-
from genshi.template import TemplateLoader
-
+from genshi import Markup
loader = TemplateLoader('doc/tmpl', auto_reload=True)
-import re
import inspect
-from iro.view.xmlrpc_old import User as Current
-from iro.controller.viewinterface import Interface as New
+from docutils.core import publish_doctree
+import docutils
+
+#--
+from docutils import core
+from docutils.writers.html4css1 import Writer,HTMLTranslator
+
+class NoHeaderHTMLTranslator(HTMLTranslator):
+ def __init__(self, document):
+ HTMLTranslator.__init__(self,document)
+ self.body_prefix = []
+ self.body_suffix = []
+
+_w = Writer()
+_w.translator_class = NoHeaderHTMLTranslator
+_w.visitor_attributes = ("html_body",)
+
+def d():
+ subs = _w.interpolation_dict()
+ return "%(html_body)s"%subs
+
+_w.apply_template = d
+
+def reSTify(s):
+ d =docutils.utils.new_document("")
+ if s.tagname == "paragraph":
+ d.append(s[0])
+ else:
+ d.append(s)
+
+ return core.publish_from_doctree(d, writer=_w)
+
+from iro.view.xmlrpc import TwistedInterface as Current
from createerm import createSchemaPlot, tables, tables_cls
@@ -29,62 +59,86 @@
pass
class Keyword():
- def __init__(self,name,typ,description):
+ def __init__(self, name=None, typ=None, description=None):
self.name=name
self.typ=typ
self.description=description
-def section(text):
- ret={}
- li=[]
- kw=None
- for line in text.split("\n"):
- if re.match("^\s*$",line):
- continue
-
- if line[0] not in (" ","\t"):
- if kw:
- ret[kw.name]=kw
- li.append(kw)
- l=re.match(r"^(?P<name>[a-zA-Z0-9-_.]*)\[(?P<typ>[a-zA-Z0-9-_|]*)\]:(?P<d>.*)$",line)
- kw=Keyword(name=l.group("name"),typ=l.group("typ"),description=l.group("d"))
- else:
- kw.description+="\n"+line.strip()
- if kw:
- ret[kw.name]=kw
- li.append(kw)
- return ret,li
-
-
+ def __repr__(self):
+ return '<Keyword("%s", "%s", "%s")>'%(self.name, self.typ, self.description)
def keywords(f):
- doc=f.__doc__.decode('utf8')
- kwds=re.search("Keywords:\n(?P<keywords>(?P<whitespace>\s*)(.+\n)*)\n",doc)
- k=kwds.group("keywords")
- #get rid of beginning whitespaces
- k=re.sub(re.compile(r"^"+kwds.group("whitespace"),re.M),"",k)
- return section(k)
+ NORMAL = 0
+ TYPE = 1
+ pd = publish_doctree(f.__doc__.decode('utf8'))
+
+ kws={}
+ for child in pd[1][0]:
+ kw = Keyword()
+ ftyp = NORMAL
+ for sc in child:
+ if sc.tagname == "field_name":
+ p = sc.astext().split()
+ if p[0] in ["param",]:
+ if len(p) == 3: #param typ name
+ kw.name = p[2]
+ kw.typ = p[1]
+ if len(p) == 2:
+ kw.name = p[1]
+ elif p[0] == "type":
+ kw = kws[p[1]]
+ ftyp=TYPE
+ elif p[0] in ["return","rtyp"]:
+ break
+ else:
+ raise Exception("Unknown field_name: %s"%(p[0]))
+ if sc.tagname == "field_body":
+ if ftyp == NORMAL:
+ kw.description = Markup(reSTify(sc[0]))
+ if ftyp == TYPE:
+ kw.typ = sc[0][0]
+ else:
+ kws[kw.name] = kw
+ return kws
def ret(f):
- doc=f.__doc__.decode('utf8')
- kwds=re.search("Return:\n(?P<ret>(?P<whitespace>\s*)(.+\n)*)\n",doc)
- k=kwds.group("ret")
- #get rid of beginning whitespaces
- k=re.sub(re.compile(r"^"+kwds.group("whitespace"),re.M),"",k)
- return section(k)
-
-
-
+ NORMAL = 0
+ TYPE = 1
+
+ pd = publish_doctree(f.__doc__.decode('utf8'))
+ for child in pd[1][0]:
+ kw = Keyword(name="return")
+ ftyp = NORMAL
+ for sc in child:
+ if sc.tagname == "field_name":
+ p = sc.astext().split()
+ if p[0] == "return":
+ if len(p) == 2:
+ kw.typ = p[1]
+ elif p[0] == "rtype":
+ ftyp=TYPE
+ elif p[0] in ["param","type"]:
+ break
+ else:
+ raise Exception("Unknown field_name: %s"%(p[0]))
+ if sc.tagname == "field_body":
+ if ftyp == NORMAL:
+ kw.description = Markup(reSTify(sc[0]))
+ if ftyp == TYPE:
+ kw.typ = sc[0][0]
+ else:
+ return kw
+
+ raise Exception("no return description")
+
class Arg():
def __init__(self,name,f):
self.name=name
- k,_ = keywords(f)
+ k = keywords(f)
kwd=k[name]
self.typ=kwd.typ
self.description=kwd.description
-
-
class Method(Link):
def __init__(self,name,methods):
title=name[0].upper()+name[1:]
@@ -95,16 +149,16 @@
for b in args:
if b in ("self","session"):
continue
- if b == "user":
- a.append("apikey")
else:
a.append(b)
args = a
self.func_line=inspect.formatargspec(args, varargs, keywords, defaults)
- self.description = m.__doc__.split("\n")[0].decode("utf8")
+ pd = publish_doctree(m.__doc__)
+ if pd[0].tagname == "paragraph":
+ self.description = pd[0].astext()
self.args=[Arg(a,m) for a in args]
- _, self.rets=ret(m)
+ self.rets=[ret(m)]
class Table(Link):
def __init__(self,cls):
@@ -112,42 +166,19 @@
self.tablename=cls.__tablename__
title=self.tablename[0].upper()+self.tablename[1:]
Link.__init__(self,name,title)
- self.description = cls.__doc__.split("\n")[0].decode("utf8")
+
+ self.description = Markup(core.publish_string(cls.__doc__,writer=_w))
def main():
sites=[Site("index.html","Iro"),
Site("current.html","API Documentation"),
- Site("new.html","geplante API Documentation"),
- Site("database.html","Datenbank Schema"),
- Site("impressum.html","Impressum"),
+ Site("database.html","Datenbase Schema"),
+ Site("about.html","About us"),
]
- current_methods = dict(inspect.getmembers(Current(None,None)))
- current=[
- Method("startSMS",current_methods),
- Method("startFAX",current_methods),
- Method("startMail",current_methods),
-
- Method("status",current_methods),
- Method("stop",current_methods),
-
- Method("getProvider",current_methods),
- Method("getDefaultProvider",current_methods),
- ]
-
- new_methods = dict(inspect.getmembers(New()))
- newm=[
- Method("sms",new_methods),
- Method("fax",new_methods),
- Method("mail",new_methods),
-
- Method("status",new_methods),
- Method("stop",new_methods),
-
- Method("routes",new_methods),
- Method("defaultRoute",new_methods),
- ]
+ current_methods = dict(inspect.getmembers(Current()))
+ current=[ Method(i,current_methods) for i in Current().listMethods() if i != "listMethods" ]
t = [Table(tables_cls[str(f)]) for f in tables]
createSchemaPlot('doc/images/db-schema.svg')
@@ -158,7 +189,7 @@
def a(s):
if s == site:
return {"class":"menu active"}
- stream = tmpl.generate(sites=sites,active=a,current=current,new=newm,tables=t)
+ stream = tmpl.generate(sites=sites, active=a, current=current, tables=t)
with open('doc/'+site.name, "w") as g:
g.write(stream.render('html', doctype='html'))
--- a/doc/current.html Fri Mar 30 16:39:12 2012 +0200
+++ b/doc/current.html Mon Apr 23 21:38:30 2012 +0200
@@ -3,7 +3,7 @@
<head>
- <title>Iro · API docs</title>
+ <title>Iro · api docs current</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta charset="utf-8">
<meta name="description" content="">
@@ -19,349 +19,501 @@
<div id="head">
<h1 id="logo"><a href="index.html" class="logo" title="Netzguerilla"><span>Netzguerilla</span></a></h1>
<ul id="menu">
- <li><a href="index.html" class="menu">Iro</a></li><li><a href="current.html" class="menu active">API Documentation</a></li><li><a href="new.html" class="menu">geplante API Documentation</a></li><li><a href="database.html" class="menu">Datenbank Schema</a></li><li><a href="impressum.html" class="menu">Impressum</a></li>
+ <li><a href="index.html" class="menu">Iro</a></li><li><a href="current.html" class="menu active">API Documentation</a></li><li><a href="database.html" class="menu">Datenbase Schema</a></li><li><a href="about.html" class="menu">About us</a></li>
</ul>
</div>
</div>
<div id="content-container">
<div id="content" class="container_12">
<div id="main" class="grid_9">
- <h2>API Dokumentation</h2>
+ <h2>API Documentation</h2>
<div class="item">
<p>
</p>
<ol>
- <li value="1">1. <a href="#api-intro">Einführung</a></li>
+ <li value="1">1. <a href="#api-intro">Intro</a></li>
<li value="2">2.
- <a href="#api-interfaces">Interfaces</a>
- <ol>
- <li value="2.1">2.1 <a href="#interface-xmlrpc">XML-RPC</a></li>
- </ol>
+ <a href="#api-interfaces">Interfaces</a>
+ <ol>
+ <li value="2.1">2.1 <a href="#interface-xmlrpc">XML-RPC</a></li>
+ <li value="2.1">2.2 <a href="#interface-soap">SOAP</a></li>
+ <li value="2.3">2.3 <a href="#interface-json">JSON</a></li>
+ <li value="2.4">2.4 <a href="#interface-jsonp">JSONP</a></li>
+ </ol>
</li>
<li value="3">3.
- <a href="#api-methods">Methoden</a>
+ <a href="#api-methods">Methods</a>
<ol>
- <li value="3.1">3.1 <a href="#method-startSMS">StartSMS</a></li><li value="3.2">3.2 <a href="#method-startFAX">StartFAX</a></li><li value="3.3">3.3 <a href="#method-startMail">StartMail</a></li><li value="3.4">3.4 <a href="#method-status">Status</a></li><li value="3.5">3.5 <a href="#method-stop">Stop</a></li><li value="3.6">3.6 <a href="#method-getProvider">GetProvider</a></li><li value="3.7">3.7 <a href="#method-getDefaultProvider">GetDefaultProvider</a></li>
+ <li value="3.1">3.1 <a href="#method-status">Status</a></li><li value="3.2">3.2 <a href="#method-sms">Sms</a></li><li value="3.3">3.3 <a href="#method-fax">Fax</a></li><li value="3.4">3.4 <a href="#method-mail">Mail</a></li><li value="3.5">3.5 <a href="#method-routes">Routes</a></li><li value="3.6">3.6 <a href="#method-defaultRoute">DefaultRoute</a></li><li value="3.7">3.7 <a href="#method-bill">Bill</a></li><li value="3.8">3.8 <a href="#method-telnumber">Telnumber</a></li><li value="3.9">3.9 <a href="#method-email">Email</a></li>
</ol>
</li>
</ol>
</div><div class="item" id="api-intro">
- <h3>Einführung</h3>
+ <h3>Intro</h3>
<p>
- Die Iro API enthält Funktion, die für den Massenversand nützlich sind.
+ Iro API has many methods, that are usefull if you want to send a bunch of messages. This Site describes the API for Iro 1.0.
</p>
</div><div class="item" id="api-interfaces">
<h3>Interfaces</h3>
<p>
- Die Iro API stellt zur Zeit nur ein Interfaces bereit.
+ You can use diffrent interfaces to get to same result.
</p>
<div class="item" id="interface-xmlrpc">
<h4>XML-RPC</h4>
<p>
- Interface-URI: <code>https://<em><benutzer></em>:<em><passwort></em>@localhost:8000</code>
+ Interface-URI: <code>http://localhost:8000/xmlrpc</code>
+ </p>
+ </div>
+ <div class="item" id="interface-soap">
+ <h4>SOAP</h4>
+ <p>
+ Interface-URI: <code>http://localhost:8000/soap</code>
+ </p>
+ </div>
+ <div class="item" id="interface-json">
+ <h4>JSON</h4>
+ <p>
+ Interface-URI: <code>http://localhost:8000/json/<em><methode></em></code>
</p>
<p>
- Die aufgerufene Methode wird dabei im <code><methodName /></code> übergeben.
+ Not yet implementet
+ </p>
+ </div>
+ <div class="item" id="interface-jsonp">
+ <h4>JSONP</h4>
+ <p>
+ Interface-URI: <code>http://localhost:8000/jsonp/<em><methode></em>?callback=<callback></code>
+ </p>
+ <p>
+ Not yet implementet
</p>
</div>
</div><div class="item" id="api-methods">
- <h3>Methoden</h3>
- <div class="item" id="method-startSMS">
- <h4>StartSMS</h4>
- <p><code>startSMS(message, recipients, provider='default')</code></p>
- <p>Versendet eine SMS.</p>
+ <h3>Methods</h3>
+ <div class="item" id="method-status">
+ <h4>Status</h4>
+ <p><code>status(user=None, id=False, detailed=None)</code></p>
+ <p>Returns the status of one or more jobs.</p>
<h5>Parameter</h5>
<table class="docs">
<thead>
<tr>
- <td>Parameter</td>
- <td>Typ</td>
- <td>Beschreibung</td>
+ <td>parameter</td>
+ <td>type</td>
+ <td>description</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>user</td>
+ <td>string</td>
+ <td>apikey of a user</td>
+ </tr><tr>
+ <td>id</td>
+ <td>integer</td>
+ <td>one job id</td>
+ </tr><tr>
+ <td>detailed</td>
+ <td>boolean</td>
+ <td>return more details about the status</td>
+ </tr>
+ </tbody>
+ </table>
+ <h5>Return</h5>
+ <table class="docs">
+ <thead>
+ <tr>
+ <td>parameter</td>
+ <td>type</td>
+ <td>description</td>
</tr>
</thead>
<tbody>
<tr>
- <td>message</td>
- <td>string</td>
- <td> Nachricht</td>
- </tr><tr>
- <td>recipients</td>
- <td>list</td>
- <td> eine Liste von Emfänger-Nummern (gemäß ITU-T E.123)</td>
- </tr><tr>
- <td>provider</td>
- <td>string</td>
- <td> Provider über den geschickt werden soll</td>
+ <td>return</td>
+ <td>dict</td>
+ <td><ul class="simple">
+<li><cite>key</cite> -- is the job id</li>
+<li>[<cite>key</cite>][<strong>'status'</strong>] -- status of the job</li>
+</ul></td>
</tr>
</tbody>
</table>
- <h5>Ausgabe</h5>
+ </div><div class="item" id="method-sms">
+ <h4>Sms</h4>
+ <p><code>sms(user, message, recipients, route='default', info='')</code></p>
+ <p>Send a sms.</p>
+ <h5>Parameter</h5>
<table class="docs">
<thead>
<tr>
- <td>Parameter</td>
- <td>Typ</td>
- <td>Beschreibung</td>
+ <td>parameter</td>
+ <td>type</td>
+ <td>description</td>
</tr>
</thead>
<tbody>
<tr>
- <td>id</td>
- <td>hash</td>
- <td> Die ID des Auftrages</td>
+ <td>user</td>
+ <td>string</td>
+ <td>apikey of a user</td>
+ </tr><tr>
+ <td>message</td>
+ <td>string</td>
+ <td>message</td>
+ </tr><tr>
+ <td>recipients</td>
+ <td>list</td>
+ <td>a list of telefon numbers (use ITU-T E.123)</td>
+ </tr><tr>
+ <td>route</td>
+ <td>string|list</td>
+ <td>route to use to send, or a list of routes as fallback</td>
+ </tr><tr>
+ <td>info</td>
+ <td>string</td>
+ <td>a name, to combine different jobs to one billing group</td>
</tr>
</tbody>
</table>
- </div><div class="item" id="method-startFAX">
- <h4>StartFAX</h4>
- <p><code>startFAX(subject, fax, recipients, provider='default')</code></p>
- <p>Versendet ein FAX.</p>
- <h5>Parameter</h5>
+ <h5>Return</h5>
<table class="docs">
<thead>
<tr>
- <td>Parameter</td>
- <td>Typ</td>
- <td>Beschreibung</td>
+ <td>parameter</td>
+ <td>type</td>
+ <td>description</td>
</tr>
</thead>
<tbody>
<tr>
- <td>subject</td>
- <td>string</td>
- <td> der Betreff</td>
- </tr><tr>
- <td>fax</td>
- <td>string</td>
- <td> das pdf base64 kodiert</td>
- </tr><tr>
- <td>recipients</td>
- <td>list</td>
- <td> eine Liste von Emfänger-Nummern (gemäß ITU-T E.123)</td>
- </tr><tr>
- <td>provider</td>
- <td>string</td>
- <td> Provider über den geschickt werden soll</td>
+ <td>return</td>
+ <td>integer</td>
+ <td>the job id</td>
</tr>
</tbody>
</table>
- <h5>Ausgabe</h5>
+ </div><div class="item" id="method-fax">
+ <h4>Fax</h4>
+ <p><code>fax(user, subject, fax, recipients, route='default', info='')</code></p>
+ <p>Send a fax.</p>
+ <h5>Parameter</h5>
<table class="docs">
<thead>
<tr>
- <td>Parameter</td>
- <td>Typ</td>
- <td>Beschreibung</td>
+ <td>parameter</td>
+ <td>type</td>
+ <td>description</td>
</tr>
</thead>
<tbody>
<tr>
- <td>id</td>
- <td>hash</td>
- <td> Die ID des Auftrages</td>
+ <td>user</td>
+ <td>string</td>
+ <td>apikey of a user</td>
+ </tr><tr>
+ <td>subject</td>
+ <td>string</td>
+ <td>subject</td>
+ </tr><tr>
+ <td>fax</td>
+ <td>string</td>
+ <td>content (base64 encoded)</td>
+ </tr><tr>
+ <td>recipients</td>
+ <td>list</td>
+ <td>a list of telefon numbers (use ITU-T E.123)</td>
+ </tr><tr>
+ <td>route</td>
+ <td>string|list</td>
+ <td>route to use to send, or a list of routes as fallback</td>
+ </tr><tr>
+ <td>info</td>
+ <td>string</td>
+ <td>a name, to combine different jobs to one billing group</td>
</tr>
</tbody>
</table>
- </div><div class="item" id="method-startMail">
- <h4>StartMail</h4>
- <p><code>startMail(subject, body, recipients, frm, provider='default')</code></p>
- <p>Versendet eine Email.</p>
+ <h5>Return</h5>
+ <table class="docs">
+ <thead>
+ <tr>
+ <td>parameter</td>
+ <td>type</td>
+ <td>description</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>return</td>
+ <td>integer</td>
+ <td>the job id</td>
+ </tr>
+ </tbody>
+ </table>
+ </div><div class="item" id="method-mail">
+ <h4>Mail</h4>
+ <p><code>mail(user, subject, body, recipients, frm=None, route='default', info='')</code></p>
+ <p>Send a mail.</p>
<h5>Parameter</h5>
<table class="docs">
<thead>
<tr>
- <td>Parameter</td>
- <td>Typ</td>
- <td>Beschreibung</td>
+ <td>parameter</td>
+ <td>type</td>
+ <td>description</td>
</tr>
</thead>
<tbody>
<tr>
+ <td>user</td>
+ <td>string</td>
+ <td>apikey of a user</td>
+ </tr><tr>
<td>subject</td>
<td>string</td>
- <td> der Betreff</td>
+ <td>subject</td>
</tr><tr>
<td>body</td>
<td>string</td>
- <td> der Email Body</td>
+ <td>mail body</td>
</tr><tr>
<td>recipients</td>
<td>list</td>
- <td> eine Liste von Emailadressen</td>
+ <td>a list of email addresses</td>
</tr><tr>
<td>frm</td>
<td>string</td>
- <td> Die Absender Emailadresse</td>
+ <td>sender mail address</td>
</tr><tr>
- <td>provider</td>
+ <td>route</td>
+ <td>string|list</td>
+ <td>route to use to send, or a list of routes as fallback</td>
+ </tr><tr>
+ <td>info</td>
<td>string</td>
- <td> Provider über den geschickt werden soll</td>
+ <td>a name, to combine different jobs to one billing group</td>
</tr>
</tbody>
</table>
- <h5>Ausgabe</h5>
+ <h5>Return</h5>
<table class="docs">
<thead>
<tr>
- <td>Parameter</td>
- <td>Typ</td>
- <td>Beschreibung</td>
+ <td>parameter</td>
+ <td>type</td>
+ <td>description</td>
</tr>
</thead>
<tbody>
<tr>
- <td>id</td>
- <td>hash</td>
- <td> Die ID des Auftrages</td>
+ <td>return</td>
+ <td>integer</td>
+ <td>the job id</td>
</tr>
</tbody>
</table>
- </div><div class="item" id="method-status">
- <h4>Status</h4>
- <p><code>status(id=None, detailed=False)</code></p>
- <p>Gibt den aktuellen Status eines Auftrages zurück.</p>
+ </div><div class="item" id="method-routes">
+ <h4>Routes</h4>
+ <p><code>routes(user, typ=None)</code></p>
+ <p>Returns a list of all possible offernames.</p>
<h5>Parameter</h5>
<table class="docs">
<thead>
<tr>
- <td>Parameter</td>
- <td>Typ</td>
- <td>Beschreibung</td>
+ <td>parameter</td>
+ <td>type</td>
+ <td>description</td>
</tr>
</thead>
<tbody>
<tr>
- <td>id</td>
- <td>hash</td>
- <td> Eine Auftragsnummer</td>
+ <td>user</td>
+ <td>string</td>
+ <td>apikey of a user</td>
</tr><tr>
- <td>detailed</td>
- <td>boolean</td>
- <td> Details ausgeben</td>
+ <td>typ</td>
+ <td>string</td>
+ <td>a typ of message -- one of in this list ["sms","fax","mail"]</td>
</tr>
</tbody>
</table>
- <h5>Ausgabe</h5>
+ <h5>Return</h5>
<table class="docs">
<thead>
<tr>
- <td>Parameter</td>
- <td>Typ</td>
- <td>Beschreibung</td>
+ <td>parameter</td>
+ <td>type</td>
+ <td>description</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>return</td>
+ <td>list</td>
+ <td>a list of all possible offer names for a typ</td>
+ </tr>
+ </tbody>
+ </table>
+ </div><div class="item" id="method-defaultRoute">
+ <h4>DefaultRoute</h4>
+ <p><code>defaultRoute(user, typ=None)</code></p>
+ <p>Returns all default offernames.</p>
+ <h5>Parameter</h5>
+ <table class="docs">
+ <thead>
+ <tr>
+ <td>parameter</td>
+ <td>type</td>
+ <td>description</td>
</tr>
</thead>
<tbody>
<tr>
- <td>jobs</td>
- <td>list</td>
- <td> Eine Liste der Aufträge.</td>
- </tr><tr>
- <td>job.name</td>
+ <td>user</td>
<td>string</td>
- <td> Angebener Name</td>
+ <td>apikey of a user</td>
</tr><tr>
- <td>job.status</td>
+ <td>typ</td>
<td>string</td>
- <td> Status des Auftrages</td>
+ <td>a typ of message -- one of in this list ["sms","fax","mail"]</td>
</tr>
</tbody>
</table>
- </div><div class="item" id="method-stop">
- <h4>Stop</h4>
- <p><code>stop(id)</code></p>
- <p>Stoppt den angegeben Auftrag.</p>
+ <h5>Return</h5>
+ <table class="docs">
+ <thead>
+ <tr>
+ <td>parameter</td>
+ <td>type</td>
+ <td>description</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>return</td>
+ <td>list</td>
+ <td>a list of all possible offer names for a typ</td>
+ </tr>
+ </tbody>
+ </table>
+ </div><div class="item" id="method-bill">
+ <h4>Bill</h4>
+ <p><code>bill(user=None)</code></p>
+ <p>Returns the bill, of not paid messages.</p>
<h5>Parameter</h5>
<table class="docs">
<thead>
<tr>
- <td>Parameter</td>
- <td>Typ</td>
- <td>Beschreibung</td>
+ <td>parameter</td>
+ <td>type</td>
+ <td>description</td>
</tr>
</thead>
<tbody>
<tr>
- <td>id</td>
- <td>hash</td>
- <td> Eine Auftragsnummer</td>
+ <td>user</td>
+ <td>string</td>
+ <td>apikey of a user</td>
</tr>
</tbody>
</table>
- </div><div class="item" id="method-getProvider">
- <h4>GetProvider</h4>
- <p><code>getProvider(typ)</code></p>
- <p>Gibt eine Liste aller verfügbaren Provider zurück.</p>
- <h5>Parameter</h5>
+ <h5>Return</h5>
<table class="docs">
<thead>
<tr>
- <td>Parameter</td>
- <td>Typ</td>
- <td>Beschreibung</td>
+ <td>parameter</td>
+ <td>type</td>
+ <td>description</td>
</tr>
</thead>
<tbody>
<tr>
- <td>typ</td>
- <td>string</td>
- <td> Der Typ zu dem die Providerloste ausgeben werden soll
-Einer der Liste ["sms","fax","mail"]</td>
+ <td>return</td>
+ <td>dict</td>
+ <td><ul class="simple">
+<li><cite>route</cite> -- one offer name ; <strong>"total"</strong> complete sum</li>
+<li>[<cite>route</cite>][<cite>info</cite>][<strong>anz</strong>] -- Number of sended messages in one billing group</li>
+<li>[<cite>route</cite>][<cite>info</cite>][<strong>price</strong>] -- Price for one billing group</li>
+<li>[<cite>route</cite> | <strong>total</strong>][<strong>anz</strong>] -- Number of sended messages for one offer</li>
+<li>[<cite>route</cite> | <strong>total</strong>][<strong>price</strong>] -- Price for one offer</li>
+</ul></td>
</tr>
</tbody>
</table>
- <h5>Ausgabe</h5>
+ </div><div class="item" id="method-telnumber">
+ <h4>Telnumber</h4>
+ <p><code>telnumber(recipients)</code></p>
+ <p>Return True, if all telnumbers a vaild.</p>
+ <h5>Parameter</h5>
<table class="docs">
<thead>
<tr>
- <td>Parameter</td>
- <td>Typ</td>
- <td>Beschreibung</td>
+ <td>parameter</td>
+ <td>type</td>
+ <td>description</td>
</tr>
</thead>
<tbody>
<tr>
- <td>providerlist</td>
+ <td>recipients</td>
<td>list</td>
- <td> Eine Liste aller möglichen Provider</td>
+ <td>a list of telnumbers (use ITU-T E.123)</td>
</tr>
</tbody>
</table>
- </div><div class="item" id="method-getDefaultProvider">
- <h4>GetDefaultProvider</h4>
- <p><code>getDefaultProvider(typ)</code></p>
- <p>Gibt den Standardprovider zurück.</p>
- <h5>Parameter</h5>
+ <h5>Return</h5>
<table class="docs">
<thead>
<tr>
- <td>Parameter</td>
- <td>Typ</td>
- <td>Beschreibung</td>
+ <td>parameter</td>
+ <td>type</td>
+ <td>description</td>
</tr>
</thead>
<tbody>
<tr>
- <td>typ</td>
- <td>string</td>
- <td> Der Typ zu dem die Providerloste ausgeben werden soll
-Einer der Liste ["sms","fax","mail"]</td>
+ <td>return</td>
+ <td>boolean</td>
+ <td>True -- all numbers are valid</td>
</tr>
</tbody>
</table>
- <h5>Ausgabe</h5>
+ </div><div class="item" id="method-email">
+ <h4>Email</h4>
+ <p><code>email(recipients)</code></p>
+ <p>Return True, if all mailadresses a valid.</p>
+ <h5>Parameter</h5>
<table class="docs">
<thead>
<tr>
- <td>Parameter</td>
- <td>Typ</td>
- <td>Beschreibung</td>
+ <td>parameter</td>
+ <td>type</td>
+ <td>description</td>
</tr>
</thead>
<tbody>
<tr>
- <td>provider</td>
- <td>string</td>
- <td> Der Standardprovider für den angeben Typ</td>
+ <td>recipients</td>
+ <td>list</td>
+ <td>a list of mailadresses</td>
+ </tr>
+ </tbody>
+ </table>
+ <h5>Return</h5>
+ <table class="docs">
+ <thead>
+ <tr>
+ <td>parameter</td>
+ <td>type</td>
+ <td>description</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>return</td>
+ <td>boolean</td>
+ <td>True -- all addresses are valid</td>
</tr>
</tbody>
</table>
--- a/doc/database.html Fri Mar 30 16:39:12 2012 +0200
+++ b/doc/database.html Mon Apr 23 21:38:30 2012 +0200
@@ -3,7 +3,7 @@
<head>
- <title>Iro · Datenbank</title>
+ <title>Iro · Datenbase</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta charset="utf-8">
<meta name="description" content="">
@@ -19,47 +19,55 @@
<div id="head">
<h1 id="logo"><a href="index.html" class="logo" title="Netzguerilla"><span>Netzguerilla</span></a></h1>
<ul id="menu">
- <li><a href="index.html" class="menu">Iro</a></li><li><a href="current.html" class="menu">API Documentation</a></li><li><a href="new.html" class="menu">geplante API Documentation</a></li><li><a href="database.html" class="menu active">Datenbank Schema</a></li><li><a href="impressum.html" class="menu">Impressum</a></li>
+ <li><a href="index.html" class="menu">Iro</a></li><li><a href="current.html" class="menu">API Documentation</a></li><li><a href="database.html" class="menu active">Datenbase Schema</a></li><li><a href="about.html" class="menu">About us</a></li>
</ul>
</div>
</div>
<div id="content-container">
<div id="content" class="container_12">
<div id="main" class="grid_9">
- <h2>Datenbank Schema</h2>
+ <h2>Datenbase Schema</h2>
<div class="item">
<p>
</p>
<ol>
- <li value="1">1. <a href="#schema">Datenbankschema</a></li>
+ <li value="1">1. <a href="#schema">Datenbase schema</a></li>
<li value="3">3.
- <a href="#tables">Tabellen</a>
+ <a href="#tables">Tables</a>
<ol>
- <li value="2.1">2.1 <a href="#table-apiuser">Apiuser</a></li><li value="2.2">2.2 <a href="#table-job">Job</a></li><li value="2.3">2.3 <a href="#table-message">Message</a></li><li value="2.4">2.4 <a href="#table-offer">Offer</a></li><li value="2.5">2.5 <a href="#table-userright">Userright</a></li>
+ <li value="2.1">2.1 <a href="#table-apiuser">Apiuser</a></li><li value="2.2">2.2 <a href="#table-offer">Offer</a></li><li value="2.3">2.3 <a href="#table-job">Job</a></li><li value="2.4">2.4 <a href="#table-userright">Userright</a></li><li value="2.5">2.5 <a href="#table-message">Message</a></li>
</ol>
</li>
</ol>
</div><div class="item" id="schema">
<h3>Schema</h3>
<img src="images/db-schema.svg">
- <p>Dies ist eine Übersicht der benutzen Tabellen die Iro benötigt.</p>
+ <p>Overview of used tables.</p>
</div><div class="item" id="tables">
- <h3>Tabellen</h3>
+ <h3>Tables</h3>
<div class="item" id="table-apiuser">
<h4>Apiuser</h4>
- <p>Die Benutzerdatenbank von Iro.</p>
+ <p><p>An user in iro.</p></p>
+ </div><div class="item" id="table-offer">
+ <h4>Offer</h4>
+ <p><p>All possible Offers over a Message can be sended. <strong>provider</strong>, <strong>typ</strong> and <strong>route</strong> are used to get the data form configuration file.</p></p>
</div><div class="item" id="table-job">
<h4>Job</h4>
- <p>Ein kompletter Auftrag, der an Iro zum verschicken übergeben wird. Status zeigt den generellen Status des Auftrages an (<em>init</em>, <em>started</em>, <em>sending</em>, <em>sended</em> oder <em>error</em>). <em>info</em> wird verwendet um dem Benutzer eine Möglickeit zu geben verschiede Auftragsgruppen zu erstellen.</p>
+ <p><p>A complete Job.</p>
+<blockquote>
+<ul class="simple">
+<li><strong>status</strong> show the status of the job (<tt class="docutils literal">init</tt>, <tt class="docutils literal">started</tt>, <tt class="docutils literal">sending</tt>, <tt class="docutils literal">sended</tt> or <tt class="docutils literal">error</tt>).</li>
+<li><strong>info</strong> is used to make it possible to create different billing groups for user.</li>
+</ul>
+</blockquote></p>
+ </div><div class="item" id="table-userright">
+ <h4>Userright</h4>
+ <p><p>Allowed offers for one user. Default routes are sorted by <strong>default</strong> value.</p></p>
</div><div class="item" id="table-message">
<h4>Message</h4>
- <p>Wenn ein Vorgang von Iro Kosten erzeugt hat wird eine neue Zeile eingefügt. Solange nicht bezahlt wurde ist <em>isBilled=0</em>.</p>
- </div><div class="item" id="table-offer">
- <h4>Offer</h4>
- <p>Alle Routen über die SMS, Faxe und Mails verschickt werden könnnen. <em>provider</em>, <em>typ</em> und <em>route</em> werden verwendet, um die entsprechenden Zugangsdaten laden zu können.</p>
- </div><div class="item" id="table-userright">
- <h4>Userright</h4>
- <p>Über welche Routen darf ein Benutzer Daten verschicken und welches sind die Standardrouten (<em>isDefault=1</em>) für den Benuter.</p>
+ <p><p>A message that has created costs.</p>
+<blockquote>
+<strong>isBilled</strong> is False since the bill is paid.</blockquote></p>
</div>
</div>
</div>
--- a/doc/images/db-schema.svg Fri Mar 30 16:39:12 2012 +0200
+++ b/doc/images/db-schema.svg Mon Apr 23 21:38:30 2012 +0200
@@ -4,93 +4,96 @@
<!-- Generated by graphviz version 2.26.3 (20100126.1600)
-->
<!-- Title: G Pages: 1 -->
-<svg width="468pt" height="131pt"
- viewBox="0.00 0.00 468.00 131.29" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
-<g id="graph1" class="graph" transform="scale(0.89313 0.89313) rotate(0) translate(4 143)">
+<svg width="468pt" height="126pt"
+ viewBox="0.00 0.00 468.00 125.74" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g id="graph1" class="graph" transform="scale(0.83274 0.83274) rotate(0) translate(4 147)">
<title>G</title>
-<polygon fill="white" stroke="white" points="-4,5 -4,-143 521,-143 521,5 -4,5"/>
+<polygon fill="white" stroke="white" points="-4,5 -4,-147 559,-147 559,5 -4,5"/>
<!-- message -->
<g id="node1" class="node"><title>message</title>
-<polygon fill="none" stroke="black" points="8,-25.5 8,-118.5 98,-118.5 98,-25.5 8,-25.5"/>
-<text text-anchor="start" x="36.5" y="-109.367" font-family="Bitstream-Vera Sans" font-size="7.00">message</text>
-<polygon fill="none" stroke="black" points="9,-103 9,-105 97,-105 97,-103 9,-103"/>
-<text text-anchor="start" x="11" y="-95.8667" font-family="Bitstream-Vera Sans" font-size="7.00">- id : INTEGER</text>
-<text text-anchor="start" x="11" y="-84.8667" font-family="Bitstream-Vera Sans" font-size="7.00">- recipient : VARCHAR</text>
-<text text-anchor="start" x="11" y="-73.8667" font-family="Bitstream-Vera Sans" font-size="7.00">- isBilled : BOOLEAN</text>
-<text text-anchor="start" x="11" y="-62.8667" font-family="Bitstream-Vera Sans" font-size="7.00">- date : DATETIME</text>
-<text text-anchor="start" x="11" y="-51.8667" font-family="Bitstream-Vera Sans" font-size="7.00">- price : NUMERIC(8, 2)</text>
-<text text-anchor="start" x="11" y="-40.8667" font-family="Bitstream-Vera Sans" font-size="7.00">- job : INTEGER</text>
-<text text-anchor="start" x="11" y="-29.8667" font-family="Bitstream-Vera Sans" font-size="7.00">- offer : VARCHAR</text>
+<polygon fill="none" stroke="black" points="8,-18.5 8,-133.5 112,-133.5 112,-18.5 8,-18.5"/>
+<text text-anchor="start" x="43.5" y="-124.367" font-family="Bitstream-Vera Sans" font-size="7.00">message</text>
+<polygon fill="none" stroke="black" points="9,-118 9,-120 111,-120 111,-118 9,-118"/>
+<text text-anchor="start" x="11" y="-110.867" font-family="Bitstream-Vera Sans" font-size="7.00">- id : INTEGER</text>
+<text text-anchor="start" x="11" y="-99.8667" font-family="Bitstream-Vera Sans" font-size="7.00">- recipient : VARCHAR(100)</text>
+<text text-anchor="start" x="11" y="-88.8667" font-family="Bitstream-Vera Sans" font-size="7.00">- isBilled : BOOLEAN</text>
+<text text-anchor="start" x="11" y="-77.8667" font-family="Bitstream-Vera Sans" font-size="7.00">- date : DATETIME</text>
+<text text-anchor="start" x="11" y="-66.8667" font-family="Bitstream-Vera Sans" font-size="7.00">- price : NUMERIC(8, 4)</text>
+<text text-anchor="start" x="11" y="-55.8667" font-family="Bitstream-Vera Sans" font-size="7.00">- count : INTEGER</text>
+<text text-anchor="start" x="11" y="-44.8667" font-family="Bitstream-Vera Sans" font-size="7.00">- exID : VARCHAR(100)</text>
+<text text-anchor="start" x="11" y="-33.8667" font-family="Bitstream-Vera Sans" font-size="7.00">- job : VARCHAR(40)</text>
+<text text-anchor="start" x="11" y="-22.8667" font-family="Bitstream-Vera Sans" font-size="7.00">- offer : VARCHAR(100)</text>
</g>
<!-- job -->
<g id="node3" class="node"><title>job</title>
-<polygon fill="none" stroke="black" points="150.5,-75 150.5,-135 235.5,-135 235.5,-75 150.5,-75"/>
-<text text-anchor="start" x="187.5" y="-126.367" font-family="Bitstream-Vera Sans" font-size="7.00">job</text>
-<polygon fill="none" stroke="black" points="152,-120 152,-122 235,-122 235,-120 152,-120"/>
-<text text-anchor="start" x="154" y="-112.867" font-family="Bitstream-Vera Sans" font-size="7.00">- hash : VARCHAR</text>
-<text text-anchor="start" x="154" y="-101.867" font-family="Bitstream-Vera Sans" font-size="7.00">- info : VARCHAR</text>
-<text text-anchor="start" x="154" y="-90.8667" font-family="Bitstream-Vera Sans" font-size="7.00">- status : VARCHAR(7)</text>
-<text text-anchor="start" x="154" y="-79.8667" font-family="Bitstream-Vera Sans" font-size="7.00">- user : VARCHAR</text>
+<polygon fill="none" stroke="black" points="164.5,-79 164.5,-139 251.5,-139 251.5,-79 164.5,-79"/>
+<text text-anchor="start" x="202.5" y="-130.367" font-family="Bitstream-Vera Sans" font-size="7.00">job</text>
+<polygon fill="none" stroke="black" points="166,-124 166,-126 251,-126 251,-124 166,-124"/>
+<text text-anchor="start" x="168" y="-116.867" font-family="Bitstream-Vera Sans" font-size="7.00">- id : INTEGER</text>
+<text text-anchor="start" x="168" y="-105.867" font-family="Bitstream-Vera Sans" font-size="7.00">- info : VARCHAR(100)</text>
+<text text-anchor="start" x="168" y="-94.8667" font-family="Bitstream-Vera Sans" font-size="7.00">- status : VARCHAR(7)</text>
+<text text-anchor="start" x="168" y="-83.8667" font-family="Bitstream-Vera Sans" font-size="7.00">- user : VARCHAR(100)</text>
</g>
<!-- message->job -->
<g id="edge2" class="edge"><title>message->job</title>
-<path fill="none" stroke="black" d="M106.327,-84.57C115.412,-86.7114 124.894,-88.9465 134.112,-91.1194"/>
-<ellipse fill="none" stroke="black" cx="138.236" cy="-92.0912" rx="4.00001" ry="4.00001"/>
-<text text-anchor="middle" x="132.338" y="-92.7431" font-family="Bitstream-Vera Sans" font-size="7.00">+ hash</text>
-<text text-anchor="middle" x="116.118" y="-80.2359" font-family="Bitstream-Vera Sans" font-size="7.00">+ job</text>
+<path fill="none" stroke="black" d="M120.197,-89.4224C129.482,-91.4926 139.067,-93.6298 148.34,-95.6974"/>
+<ellipse fill="none" stroke="black" cx="152.488" cy="-96.6224" rx="4.00001" ry="4.00001"/>
+<text text-anchor="middle" x="146.627" y="-97.3455" font-family="Bitstream-Vera Sans" font-size="7.00">+ id</text>
+<text text-anchor="middle" x="129.963" y="-84.9699" font-family="Bitstream-Vera Sans" font-size="7.00">+ job</text>
</g>
<!-- offer -->
<g id="node5" class="node"><title>offer</title>
-<polygon fill="none" stroke="black" points="288,-4 288,-64 370,-64 370,-4 288,-4"/>
-<text text-anchor="start" x="320.5" y="-55.3667" font-family="Bitstream-Vera Sans" font-size="7.00">offer</text>
-<polygon fill="none" stroke="black" points="289,-49 289,-51 369,-51 369,-49 289,-49"/>
-<text text-anchor="start" x="291" y="-41.8667" font-family="Bitstream-Vera Sans" font-size="7.00">- name : VARCHAR</text>
-<text text-anchor="start" x="291" y="-30.8667" font-family="Bitstream-Vera Sans" font-size="7.00">- provider : VARCHAR</text>
-<text text-anchor="start" x="291" y="-19.8667" font-family="Bitstream-Vera Sans" font-size="7.00">- route : VARCHAR</text>
-<text text-anchor="start" x="291" y="-8.86667" font-family="Bitstream-Vera Sans" font-size="7.00">- typ : VARCHAR</text>
+<polygon fill="none" stroke="black" points="304.5,-4 304.5,-64 405.5,-64 405.5,-4 304.5,-4"/>
+<text text-anchor="start" x="347" y="-55.3667" font-family="Bitstream-Vera Sans" font-size="7.00">offer</text>
+<polygon fill="none" stroke="black" points="306,-49 306,-51 405,-51 405,-49 306,-49"/>
+<text text-anchor="start" x="308" y="-41.8667" font-family="Bitstream-Vera Sans" font-size="7.00">- name : VARCHAR(100)</text>
+<text text-anchor="start" x="308" y="-30.8667" font-family="Bitstream-Vera Sans" font-size="7.00">- provider : VARCHAR(100)</text>
+<text text-anchor="start" x="308" y="-19.8667" font-family="Bitstream-Vera Sans" font-size="7.00">- route : VARCHAR(100)</text>
+<text text-anchor="start" x="308" y="-8.86667" font-family="Bitstream-Vera Sans" font-size="7.00">- typ : VARCHAR(100)</text>
</g>
<!-- message->offer -->
<g id="edge4" class="edge"><title>message->offer</title>
-<path fill="none" stroke="black" d="M106.216,-64.6732C153.699,-58.1357 223.047,-48.5878 271.726,-41.8855"/>
-<ellipse fill="none" stroke="black" cx="275.694" cy="-41.3393" rx="4.00001" ry="4.00001"/>
-<text text-anchor="middle" x="271.255" y="-43.9165" font-family="Bitstream-Vera Sans" font-size="7.00">+ name</text>
-<text text-anchor="middle" x="114.618" y="-56.9504" font-family="Bitstream-Vera Sans" font-size="7.00">+ offer</text>
+<path fill="none" stroke="black" d="M120.053,-67.45C168.906,-60.4948 237.788,-50.6879 288.339,-43.4907"/>
+<ellipse fill="none" stroke="black" cx="292.329" cy="-42.9227" rx="4.00001" ry="4.00001"/>
+<text text-anchor="middle" x="287.912" y="-45.5203" font-family="Bitstream-Vera Sans" font-size="7.00">+ name</text>
+<text text-anchor="middle" x="128.43" y="-59.6886" font-family="Bitstream-Vera Sans" font-size="7.00">+ offer</text>
</g>
<!-- userright -->
<g id="node2" class="node"><title>userright</title>
-<polygon fill="none" stroke="black" points="422.5,-46.5 422.5,-95.5 507.5,-95.5 507.5,-46.5 422.5,-46.5"/>
-<text text-anchor="start" x="448.5" y="-86.3667" font-family="Bitstream-Vera Sans" font-size="7.00">userright</text>
-<polygon fill="none" stroke="black" points="424,-80 424,-82 507,-82 507,-80 424,-80"/>
-<text text-anchor="start" x="426" y="-72.8667" font-family="Bitstream-Vera Sans" font-size="7.00">- user : VARCHAR</text>
-<text text-anchor="start" x="426" y="-61.8667" font-family="Bitstream-Vera Sans" font-size="7.00">- offer : VARCHAR</text>
-<text text-anchor="start" x="426" y="-50.8667" font-family="Bitstream-Vera Sans" font-size="7.00">- isDefault : BOOLEAN</text>
+<polygon fill="none" stroke="black" points="458,-49.5 458,-98.5 546,-98.5 546,-49.5 458,-49.5"/>
+<text text-anchor="start" x="485" y="-89.3667" font-family="Bitstream-Vera Sans" font-size="7.00">userright</text>
+<polygon fill="none" stroke="black" points="459,-83 459,-85 545,-85 545,-83 459,-83"/>
+<text text-anchor="start" x="461" y="-75.8667" font-family="Bitstream-Vera Sans" font-size="7.00">- user : VARCHAR(100)</text>
+<text text-anchor="start" x="461" y="-64.8667" font-family="Bitstream-Vera Sans" font-size="7.00">- offer : VARCHAR(100)</text>
+<text text-anchor="start" x="461" y="-53.8667" font-family="Bitstream-Vera Sans" font-size="7.00">- default : INTEGER</text>
</g>
<!-- apiuser -->
<g id="node4" class="node"><title>apiuser</title>
-<polygon fill="none" stroke="black" points="291.5,-90 291.5,-128 366.5,-128 366.5,-90 291.5,-90"/>
-<text text-anchor="start" x="315.5" y="-119.367" font-family="Bitstream-Vera Sans" font-size="7.00">apiuser</text>
-<polygon fill="none" stroke="black" points="293,-113 293,-115 366,-115 366,-113 293,-113"/>
-<text text-anchor="start" x="295" y="-105.867" font-family="Bitstream-Vera Sans" font-size="7.00">- name : VARCHAR</text>
-<text text-anchor="start" x="295" y="-94.8667" font-family="Bitstream-Vera Sans" font-size="7.00">- apikey : VARCHAR</text>
+<polygon fill="none" stroke="black" points="309,-89.5 309,-138.5 401,-138.5 401,-89.5 309,-89.5"/>
+<text text-anchor="start" x="341" y="-129.367" font-family="Bitstream-Vera Sans" font-size="7.00">apiuser</text>
+<polygon fill="none" stroke="black" points="310,-123 310,-125 400,-125 400,-123 310,-123"/>
+<text text-anchor="start" x="312" y="-115.867" font-family="Bitstream-Vera Sans" font-size="7.00">- name : VARCHAR(100)</text>
+<text text-anchor="start" x="312" y="-104.867" font-family="Bitstream-Vera Sans" font-size="7.00">- ng_kunde : INTEGER</text>
+<text text-anchor="start" x="312" y="-93.8667" font-family="Bitstream-Vera Sans" font-size="7.00">- apikey : VARCHAR(50)</text>
</g>
<!-- job->apiuser -->
<g id="edge10" class="edge"><title>job->apiuser</title>
-<path fill="none" stroke="black" d="M243.641,-106.489C253.891,-106.791 264.704,-107.109 275.063,-107.414"/>
-<ellipse fill="none" stroke="black" cx="279.255" cy="-107.537" rx="4" ry="4"/>
-<text text-anchor="middle" x="274.069" y="-109.312" font-family="Bitstream-Vera Sans" font-size="7.00">+ name</text>
-<text text-anchor="middle" x="252.825" y="-100.232" font-family="Bitstream-Vera Sans" font-size="7.00">+ user</text>
+<path fill="none" stroke="black" d="M259.827,-110.763C270.366,-111.121 281.558,-111.502 292.424,-111.872"/>
+<ellipse fill="none" stroke="black" cx="296.657" cy="-112.015" rx="4" ry="4"/>
+<text text-anchor="middle" x="291.453" y="-113.767" font-family="Bitstream-Vera Sans" font-size="7.00">+ name</text>
+<text text-anchor="middle" x="269.028" y="-104.547" font-family="Bitstream-Vera Sans" font-size="7.00">+ user</text>
</g>
<!-- apiuser->userright -->
<g id="edge6" class="edge"><title>apiuser->userright</title>
-<path fill="none" stroke="black" d="M374.664,-96.2408C387.32,-92.7048 401.136,-88.8443 414.071,-85.23"/>
-<text text-anchor="middle" x="406.48" y="-89.4392" font-family="Bitstream-Vera Sans" font-size="7.00">+ name</text>
-<text text-anchor="middle" x="382.256" y="-87.4316" font-family="Bitstream-Vera Sans" font-size="7.00">+ user</text>
+<path fill="none" stroke="black" d="M409.32,-99.2191C422.569,-95.6138 436.713,-91.7653 449.858,-88.1883"/>
+<text text-anchor="middle" x="442.223" y="-92.3458" font-family="Bitstream-Vera Sans" font-size="7.00">+ name</text>
+<text text-anchor="middle" x="416.955" y="-90.4616" font-family="Bitstream-Vera Sans" font-size="7.00">+ user</text>
</g>
<!-- offer->userright -->
<g id="edge8" class="edge"><title>offer->userright</title>
-<path fill="none" stroke="black" d="M378.099,-47.3578C389.816,-50.5456 402.347,-53.9546 414.141,-57.1634"/>
-<text text-anchor="middle" x="404.286" y="-56.5621" font-family="Bitstream-Vera Sans" font-size="7.00">+ name</text>
-<text text-anchor="middle" x="387.954" y="-43.3591" font-family="Bitstream-Vera Sans" font-size="7.00">+ offer</text>
+<path fill="none" stroke="black" d="M413.521,-49.924C425.531,-53.192 438.098,-56.6116 449.865,-59.8135"/>
+<text text-anchor="middle" x="440.01" y="-59.2118" font-family="Bitstream-Vera Sans" font-size="7.00">+ name</text>
+<text text-anchor="middle" x="423.375" y="-45.9257" font-family="Bitstream-Vera Sans" font-size="7.00">+ offer</text>
</g>
</g>
</svg>
--- a/doc/index.html Fri Mar 30 16:39:12 2012 +0200
+++ b/doc/index.html Mon Apr 23 21:38:30 2012 +0200
@@ -19,7 +19,7 @@
<div id="head">
<h1 id="logo"><a href="index.html" class="logo" title="Netzguerilla"><span>Netzguerilla</span></a></h1>
<ul id="menu">
- <li><a href="index.html" class="menu active">Iro</a></li><li><a href="current.html" class="menu">API Documentation</a></li><li><a href="new.html" class="menu">geplante API Documentation</a></li><li><a href="database.html" class="menu">Datenbank Schema</a></li><li><a href="impressum.html" class="menu">Impressum</a></li>
+ <li><a href="index.html" class="menu active">Iro</a></li><li><a href="current.html" class="menu">API Documentation</a></li><li><a href="database.html" class="menu">Datenbase Schema</a></li><li><a href="about.html" class="menu">About us</a></li>
</ul>
</div>
</div>
@@ -28,8 +28,29 @@
<div id="main" class="grid_9">
<h2>Iro</h2>
<div class="item">
+ <h3>What it is all about?</h3>
<p>
- Iro ist toll, ist aber noch nicht fertig.
+ Iro is a non blocking server for sending a message to a bunsh of recipient. It can handle diffrent types of message typs and can be extended easially.
+ It was initially written for sms backend of <a href="http://castorticker.de">castorticker.de</a>. Diffrent backends are supportes by Iro.
+ </p>
+ </div><div class="item">
+ <h3>Supported Backends</h3>
+ <p>
+ A backend is a provider, that actually sends the message.
+ <ul>
+ <li><b>smtp</b> with TLS and SSL</li>
+ <li><b><a href="http://smstrade.de">smstrade</a></b> all diffrent routes are selectable</li>
+ <li><b><a href="http://sipgate.de">sipgate</a></b> fax and sms</li>
+ </ul>
+ </p>
+ </div><div class="item">
+ <h3>Installation</h3>
+ <p>
+ You'll find the installtion instruction under <a href="dev/install.html">dev/install</a>.
+ </p>
+ <h3>Documentation</h3>
+ <p>
+ All documentation for extending iro see <a href="dev/index.html">dev</a>
</p>
</div>
</div>
--- a/doc/tmpl/current.html Fri Mar 30 16:39:12 2012 +0200
+++ b/doc/tmpl/current.html Mon Apr 23 21:38:30 2012 +0200
@@ -5,66 +5,91 @@
xmlns:py="http://genshi.edgewall.org/">
<xi:include href="layout.tmpl" />
<head>
- <title>API docs</title>
+ <title>api docs current</title>
</head>
<body>
- <title>API Dokumentation</title>
+ <title>API Documentation</title>
<div class="item">
<p>
-
+
</p>
<ol>
- <li value="1">1. <a href="#api-intro">Einführung</a></li>
+ <li value="1">1. <a href="#api-intro">Intro</a></li>
<li value="2">2.
- <a href="#api-interfaces">Interfaces</a>
- <ol>
- <li value="2.1">2.1 <a href="#interface-xmlrpc">XML-RPC</a></li>
- </ol>
+ <a href="#api-interfaces">Interfaces</a>
+ <ol>
+ <li value="2.1">2.1 <a href="#interface-xmlrpc">XML-RPC</a></li>
+ <li value="2.1">2.2 <a href="#interface-soap">SOAP</a></li>
+ <li value="2.3">2.3 <a href="#interface-json">JSON</a></li>
+ <li value="2.4">2.4 <a href="#interface-jsonp">JSONP</a></li>
+ </ol>
</li>
<li value="3">3.
- <a href="#api-methods">Methoden</a>
+ <a href="#api-methods">Methods</a>
<ol>
<li py:for="(key,method) in enumerate(current)" value="3.${key+1}">3.${key+1} <a href="#method-${method.name}">${method.title}</a></li>
</ol>
</li>
+
</ol>
</div>
<div class="item" id="api-intro">
- <h3>Einführung</h3>
+ <h3>Intro</h3>
<p>
- Die Iro API enthält Funktion, die für den Massenversand nützlich sind.
+ Iro API has many methods, that are usefull if you want to send a bunch of messages. This Site describes the API for Iro 1.0.
</p>
</div>
<div class="item" id="api-interfaces">
<h3>Interfaces</h3>
<p>
- Die Iro API stellt zur Zeit nur ein Interfaces bereit.
+ You can use diffrent interfaces to get to same result.
</p>
<div class="item" id="interface-xmlrpc">
<h4>XML-RPC</h4>
<p>
- Interface-URI: <code>https://<em><benutzer></em>:<em><passwort></em>@localhost:8000</code>
+ Interface-URI: <code>http://localhost:8000/xmlrpc</code>
+ </p>
+ </div>
+ <div class="item" id="interface-soap">
+ <h4>SOAP</h4>
+ <p>
+ Interface-URI: <code>http://localhost:8000/soap</code>
+ </p>
+ </div>
+ <div class="item" id="interface-json">
+ <h4>JSON</h4>
+ <p>
+ Interface-URI: <code>http://localhost:8000/json/<em><methode></em></code>
</p>
<p>
- Die aufgerufene Methode wird dabei im <code><methodName /></code> übergeben.
+ Not yet implementet
+ </p>
+ </div>
+ <div class="item" id="interface-jsonp">
+ <h4>JSONP</h4>
+ <p>
+ Interface-URI: <code>http://localhost:8000/jsonp/<em><methode></em>?callback=<callback></code>
+ </p>
+ <p>
+ Not yet implementet
</p>
</div>
</div>
<div class="item" id="api-methods">
- <h3>Methoden</h3>
+ <h3>Methods</h3>
<div py:for="method in current" class="item" id="method-${method.name}">
<h4>${method.title}</h4>
<p><code>${method.name}${method.func_line}</code></p>
<p py:content="method.description">
- Diese Methode at bis jetzt noch keine Beschreibung.
+ No description
</p>
<h5>Parameter</h5>
<table class="docs">
<thead>
<tr>
- <td>Parameter</td>
- <td>Typ</td>
- <td>Beschreibung</td>
+ <td>parameter</td>
+ <td>type</td>
+ <td>description</td>
</tr>
</thead>
<tbody>
@@ -76,13 +101,13 @@
</tbody>
</table>
<py:if test="method.rets">
- <h5>Ausgabe</h5>
+ <h5>Return</h5>
<table class="docs">
<thead>
<tr>
- <td>Parameter</td>
- <td>Typ</td>
- <td>Beschreibung</td>
+ <td>parameter</td>
+ <td>type</td>
+ <td>description</td>
</tr>
</thead>
<tbody>
--- a/doc/tmpl/database.html Fri Mar 30 16:39:12 2012 +0200
+++ b/doc/tmpl/database.html Mon Apr 23 21:38:30 2012 +0200
@@ -5,18 +5,18 @@
xmlns:py="http://genshi.edgewall.org/">
<xi:include href="layout.tmpl" />
<head>
- <title>Datenbank</title>
+ <title>Datenbase</title>
</head>
<body>
- <title>Datenbank Schema</title>
+ <title>Datenbase Schema</title>
<div class="item">
<p>
</p>
<ol>
- <li value="1">1. <a href="#schema">Datenbankschema</a></li>
+ <li value="1">1. <a href="#schema">Datenbase schema</a></li>
<li value="3">3.
- <a href="#tables">Tabellen</a>
+ <a href="#tables">Tables</a>
<ol>
<li py:for="(key,table) in enumerate(tables)" value="2.${key+1}">2.${key+1} <a href="#table-${table.tablename}">${table.title}</a></li>
</ol>
@@ -28,14 +28,14 @@
<div class="item" id="schema">
<h3>Schema</h3>
<img src="images/db-schema.svg" />
- <p>Dies ist eine Übersicht der benutzen Tabellen die Iro benötigt.</p>
+ <p>Overview of used tables.</p>
</div>
<div class="item" id="tables">
- <h3>Tabellen</h3>
+ <h3>Tables</h3>
<div py:for="table in tables" class="item" id="table-${table.tablename}">
<h4>${table.title}</h4>
- <p py:content="Markup(table.description)">
- Dieser Tabelle fehlt noch die Beschreibung.
+ <p py:content="table.description">
+ No description available.
</p>
</div>
</div>
--- a/doc/tmpl/index.html Fri Mar 30 16:39:12 2012 +0200
+++ b/doc/tmpl/index.html Mon Apr 23 21:38:30 2012 +0200
@@ -10,8 +10,33 @@
<body>
<title>Iro</title>
<div class="item">
+ <h3>What it is all about?</h3>
<p>
- Iro ist toll, ist aber noch nicht fertig.
+ Iro is a non blocking server for sending a message to a bunsh of recipient. It can handle diffrent types of message typs and can be extended easially.
+ It was initially written for sms backend of <a href="http://castorticker.de">castorticker.de</a>. Diffrent backends are supportes by Iro.
+ </p>
+ </div>
+ <div class="item">
+ <h3>Supported Backends</h3>
+ <p>
+ A backend is a provider, that actually sends the message.
+ <ul>
+ <li><b>smtp</b> with TLS and SSL</li>
+ <li><b><a href="http://smstrade.de">smstrade</a></b> all diffrent routes are selectable</li>
+ <li><b><a href="http://sipgate.de">sipgate</a></b> fax and sms</li>
+ </ul>
+ </p>
+
+ </div>
+ <div class="item">
+ <h3>Installation</h3>
+ <p>
+ You'll find the installtion instruction under <a href="dev/install.html">dev/install</a>.
+ </p>
+
+ <h3>Documentation</h3>
+ <p>
+ All documentation for extending iro see <a href="dev/index.html">dev</a>
</p>
</div>
</body>
--- a/doc/tmpl/new.html Fri Mar 30 16:39:12 2012 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,164 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
-"http://www.w3.org/TR/html4/strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"
- xmlns:xi="http://www.w3.org/2001/XInclude"
- xmlns:py="http://genshi.edgewall.org/">
- <xi:include href="layout.tmpl" />
- <head>
- <title>api docs new</title>
- </head>
- <body>
- <title>geplante API Dokumentation</title>
- <div class="item">
- <p>
-
- </p>
- <ol>
- <li value="1">1. <a href="#api-intro">Einführung</a></li>
- <li value="2">2.
- <a href="#api-interfaces">Interfaces</a>
- <ol>
- <li value="2.1">2.1 <a href="#interface-xmlrpc">XML-RPC</a></li>
- <li value="2.1">2.1 <a href="#interface-soap">SOAP</a></li>
- <li value="2.2">2.2 <a href="#interface-xml">XML</a></li>
- <li value="2.3">2.3 <a href="#interface-json">JSON</a></li>
- <li value="2.4">2.4 <a href="#interface-jsonp">JSONP</a></li>
- <li value="2.5">2.5 <a href="#interface-php">PHP</a></li>
- </ol>
- </li>
- <li value="3">3.
- <a href="#api-methods">Methoden</a>
- <ol>
- <li py:for="(key,method) in enumerate(new)" value="3.${key+1}">3.${key+1} <a href="#method-${method.name}">${method.title}</a></li>
- </ol>
- </li>
-
- </ol>
- </div>
- <div class="item" id="api-intro">
- <h3>Einführung</h3>
- <p>
- Die Iro API enthält Funktion, die für den Massenversand nützlich sind.
- </p>
- </div>
- <div class="item" id="api-interfaces">
- <h3>Interfaces</h3>
- <p>
-
- Die Iro API wird über verschiedene Interfaces bereit gestellt, die unterschiedlich angesprochen werden, aber das selbe tun.
- </p>
- <div class="item" id="interface-xmlrpc">
- <h4>XML-RPC</h4>
- <p>
- Interface-URI: <code>http://localhost:8000/xmlrpc</code>
- </p>
- <p>
- Die aufgerufene Methode wird dabei im <code><methodName /></code> übergeben.
- </p>
- </div>
- <div class="item" id="interface-soap">
- <h4>SOAP</h4>
- <p>
- Interface-URI: <code>http://localhost:8000/soap</code>
- </p>
- <p>
- Die aufgerufene Methode wird dabei im <code><methodName /></code> übergeben.
- </p>
- </div>
- <div class="item" id="interface-xml">
- <h4>XML</h4>
- <p>
- Interface-URI: <code>http://localhost:8000/xml/<em><methode></em></code>
- </p>
- <p>
- Die aufgerufene Methode wird im Pfad der Interface-URI übergeben.
- </p>
- <p>
- Parameter können via HTTP per GET oder POST im Format <em>application/x-www-form-urlencoded</em> übergeben werden.
- </p>
- <p>
- Die Ausgabe erfolgt als XML Markup.
- </p>
- </div>
- <div class="item" id="interface-json">
- <h4>JSON</h4>
- <p>
- Interface-URI: <code>http://localhost:8000/json/<em><methode></em></code>
- </p>
- <p>
- Die aufgerufene Methode wird im Pfad der Interface-URI übergeben.
- </p>
- <p>
- Parameter können via HTTP per GET oder POST im Format <em>application/x-www-form-urlencoded</em> oder JSON-Objekt übergeben werden.
- </p>
- <p>
- Die Ausgabe erfolgt als JSON-Objekt.
- </p>
- </div>
- <div class="item" id="interface-jsonp">
- <h4>JSONP</h4>
- <p>
- Interface-URI: <code>http://localhost:8000/jsonp/<em><methode></em>?callback=<callback></code>
- </p>
- <p>
- Die aufgerufene Methode wird im Pfad der Interface-URI übergeben.
- </p>
- <p>
- Der Name für die Callback-Methode wird als Parameter Callback übergeben.
- </p>
- <p>
- Parameter können via HTTP per GET im Format <em>application/x-www-form-urlencoded</em> übergeben werden.
- </p>
- <p>
- Die Ausgabe erfolgt als Javascript-Funktionsaufruf mit einem JSON-Objekt als Parameter.
- </p>
- </div>
- </div>
- <div class="item" id="api-methods">
- <h3>Methoden</h3>
- <div py:for="method in new" class="item" id="method-${method.name}">
- <h4>${method.title}</h4>
- <p><code>${method.name}${method.func_line}</code></p>
- <p py:content="method.description">
- Diese Methode at bis jetzt noch keine Beschreibung.
- </p>
- <h5>Parameter</h5>
- <table class="docs">
- <thead>
- <tr>
- <td>Parameter</td>
- <td>Typ</td>
- <td>Beschreibung</td>
- </tr>
- </thead>
- <tbody>
- <tr py:for="arg in method.args">
- <td>${arg.name}</td>
- <td>${arg.typ}</td>
- <td>${arg.description}</td>
- </tr>
- </tbody>
- </table>
- <py:if test="method.rets">
- <h5>Ausgabe</h5>
- <table class="docs">
- <thead>
- <tr>
- <td>Parameter</td>
- <td>Typ</td>
- <td>Beschreibung</td>
- </tr>
- </thead>
- <tbody>
- <tr py:for="arg in method.rets">
- <td>${arg.name}</td>
- <td>${arg.typ}</td>
- <td>${arg.description}</td>
- </tr>
- </tbody>
- </table>
- </py:if>
- </div>
- </div>
- </body>
-</html>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/tmpl/old.html Mon Apr 23 21:38:30 2012 +0200
@@ -0,0 +1,100 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:py="http://genshi.edgewall.org/">
+ <xi:include href="layout.tmpl" />
+ <head>
+ <title>API docs old</title>
+ </head>
+ <body>
+ <title>Alte API Dokumentation</title>
+ <div class="item">
+ <p>
+
+ </p>
+ <ol>
+ <li value="1">1. <a href="#api-intro">Einführung</a></li>
+ <li value="2">2.
+ <a href="#api-interfaces">Interfaces</a>
+ <ol>
+ <li value="2.1">2.1 <a href="#interface-xmlrpc">XML-RPC</a></li>
+ </ol>
+ </li>
+ <li value="3">3.
+ <a href="#api-methods">Methoden</a>
+ <ol>
+ <li py:for="(key,method) in enumerate(old)" value="3.${key+1}">3.${key+1} <a href="#method-${method.name}">${method.title}</a></li>
+ </ol>
+ </li>
+ </ol>
+ </div>
+ <div class="item" id="api-intro">
+ <h3>Einführung</h3>
+ <p>
+ Die Iro API enthält Funktion, die für den Massenversand nützlich sind.
+ </p>
+ </div>
+ <div class="item" id="api-interfaces">
+ <h3>Interfaces</h3>
+ <p>
+ Die Iro API stellt zur Zeit nur ein Interfaces bereit.
+ </p>
+ <div class="item" id="interface-xmlrpc">
+ <h4>XML-RPC</h4>
+ <p>
+ Interface-URI: <code>https://<em><benutzer></em>:<em><passwort></em>@localhost:8000</code>
+ </p>
+ <p>
+ Die aufgerufene Methode wird dabei im <code><methodName /></code> übergeben.
+ </p>
+ </div>
+ </div>
+ <div class="item" id="api-methods">
+ <h3>Methoden</h3>
+ <div py:for="method in old" class="item" id="method-${method.name}">
+ <h4>${method.title}</h4>
+ <p><code>${method.name}${method.func_line}</code></p>
+ <p py:content="method.description">
+ Diese Methode at bis jetzt noch keine Beschreibung.
+ </p>
+ <h5>Parameter</h5>
+ <table class="docs">
+ <thead>
+ <tr>
+ <td>Parameter</td>
+ <td>Typ</td>
+ <td>Beschreibung</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr py:for="arg in method.args">
+ <td>${arg.name}</td>
+ <td>${arg.typ}</td>
+ <td>${arg.description}</td>
+ </tr>
+ </tbody>
+ </table>
+ <py:if test="method.rets">
+ <h5>Ausgabe</h5>
+ <table class="docs">
+ <thead>
+ <tr>
+ <td>Parameter</td>
+ <td>Typ</td>
+ <td>Beschreibung</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr py:for="arg in method.rets">
+ <td>${arg.name}</td>
+ <td>${arg.typ}</td>
+ <td>${arg.description}</td>
+ </tr>
+ </tbody>
+ </table>
+ </py:if>
+ </div>
+ </div>
+ </body>
+</html>