Mercurial > p > roundup > code
comparison doc/reference.txt @ 7359:3a98a81c6e57
Reorg multiple sections
consolidate what you can/can't do to the schema into one section and
move to the top of the Tracker Schema section.. Also outline how you
*can* change the type of a property.
In the "Classes and Properties - creating a new information store
section", add new Method subsection after Properties subsection. Place
all 4 method sections in there moving them from below.
Move IssueClass section before FileClass section because IssueClass
incorporates links to FileClass not the other way around.
Fix indexes.
| author | John Rouillard <rouilj@ieee.org> |
|---|---|
| date | Tue, 16 May 2023 02:33:39 -0400 |
| parents | 0cb4541bad71 |
| children | 23abe048d1de |
comparison
equal
deleted
inserted
replaced
| 7358:79fd1bf20543 | 7359:3a98a81c6e57 |
|---|---|
| 658 | 658 |
| 659 A tracker schema defines what data is stored in the tracker's database. | 659 A tracker schema defines what data is stored in the tracker's database. |
| 660 Schemas are defined using Python code in the ``schema.py`` module of your | 660 Schemas are defined using Python code in the ``schema.py`` module of your |
| 661 tracker. | 661 tracker. |
| 662 | 662 |
| 663 What you can/can't do to the schema | |
| 664 ----------------------------------- | |
| 665 | |
| 666 Your schema may be changed at any time before or after the tracker has been | |
| 667 initialised (or used). You may: | |
| 668 | |
| 669 **Add new properties to classes, or add whole new classes** | |
| 670 This is painless and easy to do - there are generally no repercussions | |
| 671 from adding new information to a tracker's schema. | |
| 672 | |
| 673 **Remove properties** | |
| 674 Removing properties is a little more tricky - you need to make sure that | |
| 675 the property is no longer used in the `web interface`_ *or* by the | |
| 676 detectors_. | |
| 677 | |
| 678 You must never: | |
| 679 | |
| 680 **Remove the user class** | |
| 681 This class is the only *required* class in Roundup. | |
| 682 | |
| 683 **Remove the "username", "address", "password" or "realname" user properties** | |
| 684 Various parts of Roundup require these properties. Don't remove them. | |
| 685 | |
| 686 **Change the type of a property** | |
| 687 Property types must *never* [1]_ be changed - the database simply | |
| 688 doesn't take this kind of action into account. Note that you can't | |
| 689 just remove a property and re-add it as a new type either. If you | |
| 690 wanted to make the assignedto property a Multilink, you'd need to | |
| 691 create a new property assignedto_list and remove the old assignedto | |
| 692 property. | |
| 693 | |
| 694 .. [1] If you shut down the tracker, `export the database`_, modify the | |
| 695 exported csv property data to be compatible with the new type, | |
| 696 change the property type in the schema, and finally import the | |
| 697 changed exported data, you can change the property type. It is | |
| 698 not trivial nor for the faint of heart. But it can be done. | |
| 699 | |
| 700 .. _export the database: admin_guide.html#using-roundup-admin | |
| 701 | |
| 663 The ``schema.py`` and ``initial_data.py`` modules | 702 The ``schema.py`` and ``initial_data.py`` modules |
| 664 ------------------------------------------------- | 703 ------------------------------------------------- |
| 665 | 704 |
| 666 The schema.py module is used to define what your tracker looks like | 705 The schema.py module is used to define what your tracker looks like |
| 667 on the inside, the schema of the tracker. It defines the Classes | 706 on the inside, the schema of the tracker. It defines the Classes |
| 709 status=Link("status"), assignedto=Link("user"), | 748 status=Link("status"), assignedto=Link("user"), |
| 710 priority=Link("priority")) | 749 priority=Link("priority")) |
| 711 issue.setkey('title') | 750 issue.setkey('title') |
| 712 | 751 |
| 713 .. index:: schema; allowed changes | 752 .. index:: schema; allowed changes |
| 714 | |
| 715 What you can't do to the schema | |
| 716 ------------------------------- | |
| 717 | |
| 718 You must never: | |
| 719 | |
| 720 **Remove the user class** | |
| 721 This class is the only *required* class in Roundup. | |
| 722 | |
| 723 **Remove the "username", "address", "password" or "realname" user properties** | |
| 724 Various parts of Roundup require these properties. Don't remove them. | |
| 725 | |
| 726 **Change the type of a property** | |
| 727 Property types must *never* be changed - the database simply doesn't take | |
| 728 this kind of action into account. Note that you can't just remove a | |
| 729 property and re-add it as a new type either. If you wanted to make the | |
| 730 assignedto property a Multilink, you'd need to create a new property | |
| 731 assignedto_list and remove the old assignedto property. | |
| 732 | |
| 733 | |
| 734 What you can do to the schema | |
| 735 ----------------------------- | |
| 736 | |
| 737 Your schema may be changed at any time before or after the tracker has been | |
| 738 initialised (or used). You may: | |
| 739 | |
| 740 **Add new properties to classes, or add whole new classes** | |
| 741 This is painless and easy to do - there are generally no repercussions | |
| 742 from adding new information to a tracker's schema. | |
| 743 | |
| 744 **Remove properties** | |
| 745 Removing properties is a little more tricky - you need to make sure that | |
| 746 the property is no longer used in the `web interface`_ *or* by the | |
| 747 detectors_. | |
| 748 | |
| 749 | |
| 750 | 753 |
| 751 Classes and Properties - creating a new information store | 754 Classes and Properties - creating a new information store |
| 752 --------------------------------------------------------- | 755 --------------------------------------------------------- |
| 753 | 756 |
| 754 In the tracker above, we've defined 7 classes of information: | 757 In the tracker above, we've defined 7 classes of information: |
| 1036 Link to the user that last modified the item. | 1039 Link to the user that last modified the item. |
| 1037 *activity* | 1040 *activity* |
| 1038 Date the item was last modified. | 1041 Date the item was last modified. |
| 1039 | 1042 |
| 1040 | 1043 |
| 1044 .. index:: double: schema; class methods | |
| 1045 | |
| 1046 Methods | |
| 1047 ~~~~~~~ | |
| 1048 | |
| 1049 All classes have the following methods. | |
| 1050 | |
| 1051 .. index:: triple: schema; class method; setkey | |
| 1052 | |
| 1053 setkey(property) | |
| 1054 :::::::::::::::: | |
| 1055 | |
| 1056 .. index:: roundup-admin; setting assignedto on an issue | |
| 1057 | |
| 1058 Select a String property of the class to be the key property. The key | |
| 1059 property must be unique, and allows references to the items in the class | |
| 1060 by the content of the key property. That is, we can refer to users by | |
| 1061 their username: for example, let's say that there's an issue in Roundup, | |
| 1062 issue 23. There's also a user, richard, who happens to be user 2. To | |
| 1063 assign an issue to him, we could do either of:: | |
| 1064 | |
| 1065 roundup-admin set issue23 assignedto=2 | |
| 1066 | |
| 1067 or:: | |
| 1068 | |
| 1069 roundup-admin set issue23 assignedto=richard | |
| 1070 | |
| 1071 Note, the same thing can be done in the web and e-mail interfaces. | |
| 1072 | |
| 1073 .. index:: triple: schema; class method; setlabelprop | |
| 1074 | |
| 1075 setlabelprop(property) | |
| 1076 :::::::::::::::::::::: | |
| 1077 | |
| 1078 Select a property of the class to be the label property. The label | |
| 1079 property is used whereever an item should be uniquely identified, e.g., | |
| 1080 when displaying a link to an item. If setlabelprop is not specified for | |
| 1081 a class, the following values are tried for the label: | |
| 1082 | |
| 1083 * the key of the class (see the `setkey(property)`_ section above) | |
| 1084 * the "name" property | |
| 1085 * the "title" property | |
| 1086 * the first property from the sorted property name list | |
| 1087 | |
| 1088 So in most cases you can get away without specifying setlabelprop | |
| 1089 explicitly. | |
| 1090 | |
| 1091 You should make sure that users have View access to this property or | |
| 1092 the id property for a class. If the property can not be viewed by a | |
| 1093 user, looping over items in the class (e.g. messages attached to an | |
| 1094 issue) will not work. | |
| 1095 | |
| 1096 .. index:: triple: schema; class method; setorderprop | |
| 1097 | |
| 1098 setorderprop(property) | |
| 1099 :::::::::::::::::::::: | |
| 1100 | |
| 1101 Select a property of the class to be the order property. The order | |
| 1102 property is used whenever using a default sort order for the class, | |
| 1103 e.g., when grouping or sorting class A by a link to class B in the user | |
| 1104 interface, the order property of class B is used for sorting. If | |
| 1105 setorderprop is not specified for a class, the following values are tried | |
| 1106 for the order property: | |
| 1107 | |
| 1108 * the property named "order" | |
| 1109 * the label property (see `setlabelprop(property)`_ above) | |
| 1110 | |
| 1111 So in most cases you can get away without specifying setorderprop | |
| 1112 explicitly. | |
| 1113 | |
| 1114 .. index:: triple: schema; class method; create | |
| 1115 | |
| 1116 create(information) | |
| 1117 ::::::::::::::::::: | |
| 1118 | |
| 1119 Create an item in the database. This is generally used to create items | |
| 1120 in the "definitional" classes like "priority" and "status". | |
| 1121 | |
| 1122 IssueClass | |
| 1123 ~~~~~~~~~~ | |
| 1124 | |
| 1125 IssueClasses automatically include the "messages", "files", "nosy", and | |
| 1126 "superseder" properties. | |
| 1127 | |
| 1128 The messages and files properties list the links to the messages and | |
| 1129 files related to the issue. The nosy property is a list of links to | |
| 1130 users who wish to be informed of changes to the issue - they get "CC'ed" | |
| 1131 e-mails when messages are sent to or generated by the issue. The nosy | |
| 1132 reactor (in the ``'detectors'`` directory) handles this action. The | |
| 1133 superseder link indicates an issue which has superseded this one. | |
| 1134 | |
| 1135 They also have the dynamically generated "creation", "activity" and | |
| 1136 "creator" properties. | |
| 1137 | |
| 1138 The value of the "creation" property is the date when an item was | |
| 1139 created, and the value of the "activity" property is the date when any | |
| 1140 property on the item was last edited (equivalently, these are the dates | |
| 1141 on the first and last records in the item's journal). The "creator" | |
| 1142 property holds a link to the user that created the issue. | |
| 1143 | |
| 1041 .. index:: triple: schema; class property; content | 1144 .. index:: triple: schema; class property; content |
| 1042 triple: schema; class property; type | 1145 triple: schema; class property; type |
| 1043 | 1146 |
| 1044 FileClass | 1147 FileClass |
| 1045 ~~~~~~~~~ | 1148 ~~~~~~~~~ |
| 1127 .. index:: triple: schema; class property; messages | 1230 .. index:: triple: schema; class property; messages |
| 1128 triple: schema; class property; files | 1231 triple: schema; class property; files |
| 1129 triple: schema; class property; nosy | 1232 triple: schema; class property; nosy |
| 1130 triple: schema; class property; superseder | 1233 triple: schema; class property; superseder |
| 1131 | 1234 |
| 1132 IssueClass | 1235 .. index:: schema; item ordering |
| 1133 ~~~~~~~~~~ | |
| 1134 | |
| 1135 IssueClasses automatically include the "messages", "files", "nosy", and | |
| 1136 "superseder" properties. | |
| 1137 | |
| 1138 The messages and files properties list the links to the messages and | |
| 1139 files related to the issue. The nosy property is a list of links to | |
| 1140 users who wish to be informed of changes to the issue - they get "CC'ed" | |
| 1141 e-mails when messages are sent to or generated by the issue. The nosy | |
| 1142 reactor (in the ``'detectors'`` directory) handles this action. The | |
| 1143 superseder link indicates an issue which has superseded this one. | |
| 1144 | |
| 1145 They also have the dynamically generated "creation", "activity" and | |
| 1146 "creator" properties. | |
| 1147 | |
| 1148 The value of the "creation" property is the date when an item was | |
| 1149 created, and the value of the "activity" property is the date when any | |
| 1150 property on the item was last edited (equivalently, these are the dates | |
| 1151 on the first and last records in the item's journal). The "creator" | |
| 1152 property holds a link to the user that created the issue. | |
| 1153 | |
| 1154 .. index: triple: schema; class method; setkey | |
| 1155 | |
| 1156 setkey(property) | |
| 1157 ~~~~~~~~~~~~~~~~ | |
| 1158 | |
| 1159 .. index:: roundup-admin; setting assignedto on an issue | |
| 1160 | |
| 1161 Select a String property of the class to be the key property. The key | |
| 1162 property must be unique, and allows references to the items in the class | |
| 1163 by the content of the key property. That is, we can refer to users by | |
| 1164 their username: for example, let's say that there's an issue in Roundup, | |
| 1165 issue 23. There's also a user, richard, who happens to be user 2. To | |
| 1166 assign an issue to him, we could do either of:: | |
| 1167 | |
| 1168 roundup-admin set issue23 assignedto=2 | |
| 1169 | |
| 1170 or:: | |
| 1171 | |
| 1172 roundup-admin set issue23 assignedto=richard | |
| 1173 | |
| 1174 Note, the same thing can be done in the web and e-mail interfaces. | |
| 1175 | |
| 1176 .. index: triple: schema; class method; setlabelprop | |
| 1177 | |
| 1178 setlabelprop(property) | |
| 1179 ~~~~~~~~~~~~~~~~~~~~~~ | |
| 1180 | |
| 1181 Select a property of the class to be the label property. The label | |
| 1182 property is used whereever an item should be uniquely identified, e.g., | |
| 1183 when displaying a link to an item. If setlabelprop is not specified for | |
| 1184 a class, the following values are tried for the label: | |
| 1185 | |
| 1186 * the key of the class (see the `setkey(property)`_ section above) | |
| 1187 * the "name" property | |
| 1188 * the "title" property | |
| 1189 * the first property from the sorted property name list | |
| 1190 | |
| 1191 So in most cases you can get away without specifying setlabelprop | |
| 1192 explicitly. | |
| 1193 | |
| 1194 You should make sure that users have View access to this property or | |
| 1195 the id property for a class. If the property can not be viewed by a | |
| 1196 user, looping over items in the class (e.g. messages attached to an | |
| 1197 issue) will not work. | |
| 1198 | |
| 1199 .. index: triple: schema; class method; setorderprop | |
| 1200 | |
| 1201 setorderprop(property) | |
| 1202 ~~~~~~~~~~~~~~~~~~~~~~ | |
| 1203 | |
| 1204 Select a property of the class to be the order property. The order | |
| 1205 property is used whenever using a default sort order for the class, | |
| 1206 e.g., when grouping or sorting class A by a link to class B in the user | |
| 1207 interface, the order property of class B is used for sorting. If | |
| 1208 setorderprop is not specified for a class, the following values are tried | |
| 1209 for the order property: | |
| 1210 | |
| 1211 * the property named "order" | |
| 1212 * the label property (see `setlabelprop(property)`_ above) | |
| 1213 | |
| 1214 So in most cases you can get away without specifying setorderprop | |
| 1215 explicitly. | |
| 1216 | |
| 1217 .. index: triple: schema; class method; create | |
| 1218 | |
| 1219 create(information) | |
| 1220 ~~~~~~~~~~~~~~~~~~~ | |
| 1221 | |
| 1222 Create an item in the database. This is generally used to create items | |
| 1223 in the "definitional" classes like "priority" and "status". | |
| 1224 | |
| 1225 .. index: schema; item ordering | |
| 1226 | 1236 |
| 1227 A note about ordering | 1237 A note about ordering |
| 1228 ~~~~~~~~~~~~~~~~~~~~~ | 1238 ~~~~~~~~~~~~~~~~~~~~~ |
| 1229 | 1239 |
| 1230 When we sort items in the hyperdb, we use one of a number of methods, | 1240 When we sort items in the hyperdb, we use one of a number of methods, |
