summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: b5c486e)
raw | patch | inline | side by side (parent: b5c486e)
author | richard <richard@57a73879-2fb5-44c3-a270-3262357dd7e2> | |
Wed, 18 Sep 2002 05:13:11 +0000 (05:13 +0000) | ||
committer | richard <richard@57a73879-2fb5-44c3-a270-3262357dd7e2> | |
Wed, 18 Sep 2002 05:13:11 +0000 (05:13 +0000) |
git-svn-id: http://svn.roundup-tracker.org/svnroot/roundup/trunk@1190 57a73879-2fb5-44c3-a270-3262357dd7e2
roundup/templates/classic/html/file.item | [new file with mode: 0644] | patch | blob |
scripts/schema_diagram.py | [new file with mode: 0644] | patch | blob |
diff --git a/roundup/templates/classic/html/file.item b/roundup/templates/classic/html/file.item
--- /dev/null
@@ -0,0 +1,52 @@
+<span tal:condition="python:not (context.is_view_ok() or context.is_edit_ok())">
+You are not allowed to view this page.
+</span>
+
+<form method="POST" onSubmit="return submit_once()"
+ enctype="multipart/form-data" tal:condition="context/is_edit_ok">
+
+<input type="hidden" name=":template" value="item">
+<input type="hidden" name=":required" value="name,type">
+
+<input type="hidden" name="multilink"
+ tal:condition="python:request.form.has_key(':multilink')"
+ tal:attributes="value request/form/:multilink/value">
+
+<table class="form">
+ <tr>
+ <th>Name</th>
+ <td tal:content="structure context/name/field"></td>
+ </tr>
+ <tr>
+ <th>Content Type</th>
+ <td tal:content="structure context/type/field"></td>
+ </tr>
+ <tr>
+ <th>Content</th>
+ <td><input type="file" name="content" size="40"></td>
+ </tr>
+
+ <tr>
+ <td> </td>
+ <td tal:content="structure context/submit">submit button here</td>
+ </tr>
+</table>
+</form>
+
+<a tal:condition="python:context.id and context.is_view_ok()"
+ tal:attributes="href string:file${context/id}/${context/name}">download</a>
+
+<table class="form" tal:condition="context/is_only_view_ok">
+ <tr>
+ <th>Name</th>
+ <td tal:content="context/name"></td>
+ </tr>
+ <tr>
+ <th>Content Type</th>
+ <td tal:content="context/type"></td>
+ </tr>
+</table>
+
+<tal:block tal:condition="python:context.id and context.is_view_ok()"
+ tal:replace="structure context/history" />
+
diff --git a/scripts/schema_diagram.py b/scripts/schema_diagram.py
--- /dev/null
@@ -0,0 +1,48 @@
+#! /usr/bin/python
+#
+# Schema diagram generator contributed by Stefan Seefeld of the fresco
+# project http://www.fresco.org/.
+#
+# It generates a 'dot file' that is then fed into the 'dot'
+# tool (http://www.graphviz.org) to generate a graph:
+#
+# %> ./schema.py
+# %> dot -Tps schema.dot -o schema.ps
+# %> gv schema.ps
+#
+import sys
+import roundup.instance
+
+# open the instance
+instance = roundup.instance.open(sys.argv[1])
+db = instance.open()
+
+# diagram preamble
+print 'digraph schema {'
+print 'size="8,6"'
+print 'node [shape="record" bgcolor="#ffe4c4" style=filled]'
+print 'edge [taillabel="1" headlabel="1" dir=back arrowtail=ediamond]'
+
+# get all the classes
+types = db.classes.keys()
+
+# one record node per class
+for i in range(len(types)):
+ print 'node%d [label=\"{%s|}"]'%(i, types[i])
+
+# now draw in the relations
+for name in db.classes.keys():
+ type = db.classes[name]
+ attributes = type.getprops()
+ for a in attributes.keys():
+ attribute = attributes[a]
+ if isinstance(attribute, roundup.hyperdb.Link):
+ print 'node%d -> node%d [label=%s]'%(types.index(name),
+ types.index(attribute.classname),
+ a)
+ elif isinstance(attribute, roundup.hyperdb.Multilink):
+ print 'node%d -> node%d [taillabel="*" label=%s]'%(types.index(name),
+ types.index(attribute.classname),
+ a)
+# all done
+print '}'