Code

additions
authorrichard <richard@57a73879-2fb5-44c3-a270-3262357dd7e2>
Wed, 18 Sep 2002 05:13:11 +0000 (05:13 +0000)
committerrichard <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]
scripts/schema_diagram.py [new file with mode: 0644]

diff --git a/roundup/templates/classic/html/file.item b/roundup/templates/classic/html/file.item
new file mode 100644 (file)
index 0000000..2c2d8d5
--- /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>&nbsp;</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
new file mode 100644 (file)
index 0000000..d48cb6f
--- /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 '}'