allura
修訂 | 61c60486d7217ab38dc1725aac15af983c341384 (tree) |
---|---|
時間 | 2011-05-28 00:35:05 |
作者 | Jenny Steele <jsteele@geek...> |
Commiter | Dave Brondsema |
[#1914] Added trove categories to allura
Signed-off-by: Jenny Steele <jsteele@geek.net>
@@ -3,3 +3,4 @@ from show_models import ShowModelsCommand, ReindexCommand, EnsureIndexCommand | ||
3 | 3 | from script import ScriptCommand, SetToolAccessCommand |
4 | 4 | from smtp_server import SMTPServerCommand |
5 | 5 | from create_neighborhood import CreateNeighborhoodCommand |
6 | +from create_trove_categories import CreateTroveCategoriesCommand |
@@ -0,0 +1,656 @@ | ||
1 | +import logging | |
2 | +from tg import config | |
3 | +from ming.orm import session | |
4 | + | |
5 | +from . import base | |
6 | + | |
7 | +from allura import model as M | |
8 | +from allura.lib import helpers as h | |
9 | + | |
10 | +log = logging.getLogger(__name__) | |
11 | + | |
12 | +class CreateTroveCategoriesCommand(base.Command): | |
13 | + min_args=None | |
14 | + max_args=None | |
15 | + usage = '<ini file>' | |
16 | + summary = 'Remove any existing trove categories and load new ones' | |
17 | + parser = base.Command.standard_parser(verbose=True) | |
18 | + | |
19 | + def create_trove_cat(self,cat_data): | |
20 | + M.TroveCategory(trove_cat_id=cat_data[0], trove_parent_id=cat_data[1], | |
21 | + shortname=cat_data[2], fullname=cat_data[3], fullpath=cat_data[4]) | |
22 | + | |
23 | + def command(self): | |
24 | + self.basic_setup() | |
25 | + M.TroveCategory.query.remove() | |
26 | + self.create_trove_cat((617,274,"kirghiz","Kirghiz","Translations :: Kirghiz")) | |
27 | + self.create_trove_cat((372,274,"croatian","Croatian","Translations :: Croatian")) | |
28 | + self.create_trove_cat((351,274,"thai","Thai","Translations :: Thai")) | |
29 | + self.create_trove_cat((349,274,"tamil","Tamil","Translations :: Tamil")) | |
30 | + self.create_trove_cat((347,274,"romanian","Romanian","Translations :: Romanian")) | |
31 | + self.create_trove_cat((339,274,"korean","Korean","Translations :: Korean")) | |
32 | + self.create_trove_cat((632,160,"cobol","COBOL","Programming Language :: COBOL")) | |
33 | + self.create_trove_cat((598,160,"aspectj","AspectJ","Programming Language :: AspectJ")) | |
34 | + self.create_trove_cat((167,160,"euler","Euler","Programming Language :: Euler")) | |
35 | + self.create_trove_cat((185,160,"shell","Unix Shell","Programming Language :: Unix Shell")) | |
36 | + self.create_trove_cat((184,160,"asp","ASP","Programming Language :: ASP")) | |
37 | + self.create_trove_cat((273,160,"Pike","Pike","Programming Language :: Pike")) | |
38 | + self.create_trove_cat((271,160,"csharp","C#","Programming Language :: C#")) | |
39 | + self.create_trove_cat((170,160,"lisp","Lisp","Programming Language :: Lisp")) | |
40 | + self.create_trove_cat((169,160,"fortran","Fortran","Programming Language :: Fortran")) | |
41 | + self.create_trove_cat((625,160,"simulink","Simulink","Programming Language :: Simulink")) | |
42 | + self.create_trove_cat((626,160,"matlab","MATLAB","Programming Language :: MATLAB")) | |
43 | + self.create_trove_cat((1,0,"audience","Intended Audience","Intended Audience")) | |
44 | + self.create_trove_cat((618,535,"nonprofit","Non-Profit Organizations","Intended Audience :: by Industry or Sector :: Non-Profit Organizations")) | |
45 | + self.create_trove_cat((599,535,"aerospace","Aerospace","Intended Audience :: by Industry or Sector :: Aerospace")) | |
46 | + self.create_trove_cat((569,535,"government","Government","Intended Audience :: by Industry or Sector :: Government")) | |
47 | + self.create_trove_cat((363,535,"informationtechnology","Information Technology","Intended Audience :: by Industry or Sector :: Information Technology")) | |
48 | + self.create_trove_cat((361,535,"financialinsurance","Financial and Insurance Industry","Intended Audience :: by Industry or Sector :: Financial and Insurance Industry")) | |
49 | + self.create_trove_cat((362,535,"healthcareindustry","Healthcare Industry","Intended Audience :: by Industry or Sector :: Healthcare Industry")) | |
50 | + self.create_trove_cat((367,535,"scienceresearch","Science/Research","Intended Audience :: by Industry or Sector :: Science/Research")) | |
51 | + self.create_trove_cat((359,535,"customerservice","Customer Service","Intended Audience :: by Industry or Sector :: Customer Service")) | |
52 | + self.create_trove_cat((360,535,"education","Education","Intended Audience :: by Industry or Sector :: Education")) | |
53 | + self.create_trove_cat((365,535,"manufacturing","Manufacturing","Intended Audience :: by Industry or Sector :: Manufacturing")) | |
54 | + self.create_trove_cat((368,535,"telecommunications","Telecommunications Industry","Intended Audience :: by Industry or Sector :: Telecommunications Industry")) | |
55 | + self.create_trove_cat((166,160,"eiffel","Eiffel","Programming Language :: Eiffel")) | |
56 | + self.create_trove_cat((550,160,"oberon","Oberon","Programming Language :: Oberon")) | |
57 | + self.create_trove_cat((553,160,"realbasic","REALbasic","Programming Language :: REALbasic")) | |
58 | + self.create_trove_cat((178,160,"python","Python","Programming Language :: Python")) | |
59 | + self.create_trove_cat((179,160,"rexx","Rexx","Programming Language :: Rexx")) | |
60 | + self.create_trove_cat((177,160,"prolog","Prolog","Programming Language :: Prolog")) | |
61 | + self.create_trove_cat((176,160,"perl","Perl","Programming Language :: Perl")) | |
62 | + self.create_trove_cat((175,160,"pascal","Pascal","Programming Language :: Pascal")) | |
63 | + self.create_trove_cat((536,534,"enduser_advanced","Advanced End Users","Intended Audience :: by End-User Class :: Advanced End Users")) | |
64 | + self.create_trove_cat((4,534,"sysadmins","System Administrators","Intended Audience :: by End-User Class :: System Administrators")) | |
65 | + self.create_trove_cat((471,456,"ui_swing","Java Swing","User Interface :: Graphical :: Java Swing")) | |
66 | + self.create_trove_cat((469,456,"ui_dotnet",".NET/Mono","User Interface :: Graphical :: .NET/Mono")) | |
67 | + self.create_trove_cat((231,456,"gnome","Gnome","User Interface :: Graphical :: Gnome")) | |
68 | + self.create_trove_cat((229,456,"x11","X Window System (X11)","User Interface :: Graphical :: X Window System (X11)")) | |
69 | + self.create_trove_cat((475,456,"ui_opengl","OpenGL","User Interface :: Graphical :: OpenGL")) | |
70 | + self.create_trove_cat((474,456,"ui_framebuffer","Framebuffer","User Interface :: Graphical :: Framebuffer")) | |
71 | + self.create_trove_cat((472,456,"ui_swt","Java SWT","User Interface :: Graphical :: Java SWT")) | |
72 | + self.create_trove_cat((470,456,"ui_awt","Java AWT","User Interface :: Graphical :: Java AWT")) | |
73 | + self.create_trove_cat((230,456,"win32","Win32 (MS Windows)","User Interface :: Graphical :: Win32 (MS Windows)")) | |
74 | + self.create_trove_cat((232,456,"kde","KDE","User Interface :: Graphical :: KDE")) | |
75 | + self.create_trove_cat((310,456,"cocoa","Cocoa (MacOS X)","User Interface :: Graphical :: Cocoa (MacOS X)")) | |
76 | + self.create_trove_cat((476,456,"ui_tabletpc","TabletPC","User Interface :: Graphical :: TabletPC")) | |
77 | + self.create_trove_cat((314,456,"handhelds","Handheld/Mobile/PDA","User Interface :: Graphical :: Handheld/Mobile/PDA")) | |
78 | + self.create_trove_cat((462,225,"ui_groupingdesc","Grouping and Descriptive Categories (UI)","User Interface :: Grouping and Descriptive Categories (UI)")) | |
79 | + self.create_trove_cat((466,462,"ui_meta_3d","Project is a 3D engine","User Interface :: Grouping and Descriptive Categories (UI) :: Project is a 3D engine")) | |
80 | + self.create_trove_cat((464,462,"ui_meta_template","Project is a templating system","User Interface :: Grouping and Descriptive Categories (UI) :: Project is a templating system")) | |
81 | + self.create_trove_cat((463,462,"ui_meta_system","Project is a user interface (UI) system","User Interface :: Grouping and Descriptive Categories (UI) :: Project is a user interface (UI) system")) | |
82 | + self.create_trove_cat((465,462,"ui_meta_windowmanager","Project is a window manager","User Interface :: Grouping and Descriptive Categories (UI) :: Project is a window manager")) | |
83 | + self.create_trove_cat((467,462,"ui_meta_toolkit","Project is a graphics toolkit","User Interface :: Grouping and Descriptive Categories (UI) :: Project is a graphics toolkit")) | |
84 | + self.create_trove_cat((468,462,"ui_meta_remotecontrol","Project is a remote control application","User Interface :: Grouping and Descriptive Categories (UI) :: Project is a remote control application")) | |
85 | + self.create_trove_cat((237,225,"web","Web-based","User Interface :: Web-based")) | |
86 | + self.create_trove_cat((238,225,"daemon","Non-interactive (Daemon)","User Interface :: Non-interactive (Daemon)")) | |
87 | + self.create_trove_cat((457,225,"textual_ui","Textual","User Interface :: Textual")) | |
88 | + self.create_trove_cat((460,457,"ui_consoleterm","Console/Terminal","User Interface :: Textual :: Console/Terminal")) | |
89 | + self.create_trove_cat((459,457,"ui_commandline","Command-line","User Interface :: Textual :: Command-line")) | |
90 | + self.create_trove_cat((225,0,"environment","User Interface","User Interface")) | |
91 | + self.create_trove_cat((461,225,"ui_plugins","Plugins","User Interface :: Plugins")) | |
92 | + self.create_trove_cat((583,461,"eclipse_plugins","Eclipse","User Interface :: Plugins :: Eclipse")) | |
93 | + self.create_trove_cat((458,225,"ui_toolkit","Toolkits/Libraries","User Interface :: Toolkits/Libraries")) | |
94 | + self.create_trove_cat((495,458,"ui_othertoolkit","Other toolkit","User Interface :: Toolkits/Libraries :: Other toolkit")) | |
95 | + self.create_trove_cat((493,458,"ui_motif","Motif/LessTif","User Interface :: Toolkits/Libraries :: Motif/LessTif")) | |
96 | + self.create_trove_cat((491,458,"ui_crystalspace","Crystal Space","User Interface :: Toolkits/Libraries :: Crystal Space")) | |
97 | + self.create_trove_cat((489,458,"ui_clanlib","ClanLib","User Interface :: Toolkits/Libraries :: ClanLib")) | |
98 | + self.create_trove_cat((516,500,"db_group_objmap","Project is a relational object mapper","Database Environment :: Grouping and Descriptive Categories (DB) :: Project is a relational object mapper")) | |
99 | + self.create_trove_cat((487,458,"ui_ggi","GGI","User Interface :: Toolkits/Libraries :: GGI")) | |
100 | + self.create_trove_cat((485,458,"ui_directx","DirectX","User Interface :: Toolkits/Libraries :: DirectX")) | |
101 | + self.create_trove_cat((483,458,"ui_svgalib","SVGAlib","User Interface :: Toolkits/Libraries :: SVGAlib")) | |
102 | + self.create_trove_cat((481,458,"ui_wxwidgets","wxWidgets","User Interface :: Toolkits/Libraries :: wxWidgets")) | |
103 | + self.create_trove_cat((511,500,"db_group_mgmt","Project is a database management tool","Database Environment :: Grouping and Descriptive Categories (DB) :: Project is a database management tool")) | |
104 | + self.create_trove_cat((479,458,"ui_qt","Qt","User Interface :: Toolkits/Libraries :: Qt")) | |
105 | + self.create_trove_cat((477,458,"ui_gtk","GTK+","User Interface :: Toolkits/Libraries :: GTK+")) | |
106 | + self.create_trove_cat((513,500,"db_group_netdbms","Project is a network-based DBMS (database system)","Database Environment :: Grouping and Descriptive Categories (DB) :: Project is a network-based DBMS (database system)")) | |
107 | + self.create_trove_cat((228,458,"newt","Newt","User Interface :: Toolkits/Libraries :: Newt")) | |
108 | + self.create_trove_cat((227,458,"curses","Curses/Ncurses","User Interface :: Toolkits/Libraries :: Curses/Ncurses")) | |
109 | + self.create_trove_cat((515,500,"db_group_conv","Project is a database conversion tool","Database Environment :: Grouping and Descriptive Categories (DB) :: Project is a database conversion tool")) | |
110 | + self.create_trove_cat((478,458,"ui_tk","Tk","User Interface :: Toolkits/Libraries :: Tk")) | |
111 | + self.create_trove_cat((480,458,"ui_sdl","SDL","User Interface :: Toolkits/Libraries :: SDL")) | |
112 | + self.create_trove_cat((33,28,"postoffice","Post-Office","Topic :: Communications :: Email :: Post-Office")) | |
113 | + self.create_trove_cat((514,500,"db_group_propfmt","Project is a tool for a proprietary database file format","Database Environment :: Grouping and Descriptive Categories (DB) :: Project is a tool for a proprietary database file format")) | |
114 | + self.create_trove_cat((482,458,"ui_aalib","AAlib","User Interface :: Toolkits/Libraries :: AAlib")) | |
115 | + self.create_trove_cat((484,458,"ui_fltk","FLTK","User Interface :: Toolkits/Libraries :: FLTK")) | |
116 | + self.create_trove_cat((512,500,"db_group_filedbms","Project is a file-based DBMS (database system)","Database Environment :: Grouping and Descriptive Categories (DB) :: Project is a file-based DBMS (database system)")) | |
117 | + self.create_trove_cat((486,458,"ui_plib","Plib","User Interface :: Toolkits/Libraries :: Plib")) | |
118 | + self.create_trove_cat((488,458,"ui_glide","Glide","User Interface :: Toolkits/Libraries :: Glide")) | |
119 | + self.create_trove_cat((510,500,"db_group_api","Project is a database abstraction layer (API)","Database Environment :: Grouping and Descriptive Categories (DB) :: Project is a database abstraction layer (API)")) | |
120 | + self.create_trove_cat((490,458,"ui_glut","GLUT","User Interface :: Toolkits/Libraries :: GLUT")) | |
121 | + self.create_trove_cat((492,458,"ui_allegro","Allegro","User Interface :: Toolkits/Libraries :: Allegro")) | |
122 | + self.create_trove_cat((500,496,"db_grouping","Grouping and Descriptive Categories (DB)","Database Environment :: Grouping and Descriptive Categories (DB)")) | |
123 | + self.create_trove_cat((494,458,"ui_quartz","Quartz","User Interface :: Toolkits/Libraries :: Quartz")) | |
124 | + self.create_trove_cat((456,225,"graphical_ui","Graphical","User Interface :: Graphical")) | |
125 | + self.create_trove_cat((276,274,"french","French","Translations :: French")) | |
126 | + self.create_trove_cat((473,456,"ui_carbon","Carbon (Mac OS X)","User Interface :: Graphical :: Carbon (Mac OS X)")) | |
127 | + self.create_trove_cat((535,1,"by_industrysector","by Industry or Sector","Intended Audience :: by Industry or Sector")) | |
128 | + self.create_trove_cat((364,535,"legalindustry","Legal Industry","Intended Audience :: by Industry or Sector :: Legal Industry")) | |
129 | + self.create_trove_cat((353,274,"ukrainian","Ukrainian","Translations :: Ukrainian")) | |
130 | + self.create_trove_cat((330,274,"dutch","Dutch","Translations :: Dutch")) | |
131 | + self.create_trove_cat((343,274,"persian","Persian","Translations :: Persian")) | |
132 | + self.create_trove_cat((344,274,"polish","Polish","Translations :: Polish")) | |
133 | + self.create_trove_cat((455,274,"irish_gaelic","Irish Gaelic","Translations :: Irish Gaelic")) | |
134 | + self.create_trove_cat((413,274,"lithuanian","Lithuanian","Translations :: Lithuanian")) | |
135 | + self.create_trove_cat((414,274,"albanian","Albanian","Translations :: Albanian")) | |
136 | + self.create_trove_cat((415,274,"malagasy","Malagasy","Translations :: Malagasy")) | |
137 | + self.create_trove_cat((416,274,"mongolian","Mongolian","Translations :: Mongolian")) | |
138 | + self.create_trove_cat((417,274,"maltese","Maltese","Translations :: Maltese")) | |
139 | + self.create_trove_cat((380,274,"slovenian","Slovene","Translations :: Slovene")) | |
140 | + self.create_trove_cat((374,274,"icelandic","Icelandic","Translations :: Icelandic")) | |
141 | + self.create_trove_cat((376,274,"macedonian","Macedonian","Translations :: Macedonian")) | |
142 | + self.create_trove_cat((377,274,"latin","Latin","Translations :: Latin")) | |
143 | + self.create_trove_cat((375,274,"latvian","Latvian","Translations :: Latvian")) | |
144 | + self.create_trove_cat((373,274,"czech","Czech","Translations :: Czech")) | |
145 | + self.create_trove_cat((369,274,"afrikaans","Afrikaans","Translations :: Afrikaans")) | |
146 | + self.create_trove_cat((357,274,"finnish","Finnish","Translations :: Finnish")) | |
147 | + self.create_trove_cat((186,160,"visualbasic","Visual Basic","Programming Language :: Visual Basic")) | |
148 | + self.create_trove_cat((505,499,"db_pear","PHP Pear::DB","Database Environment :: Database API :: PHP Pear::DB")) | |
149 | + self.create_trove_cat((507,499,"db_api_xml","XML-based","Database Environment :: Database API :: XML-based")) | |
150 | + self.create_trove_cat((509,499,"db_api_other","Other API","Database Environment :: Database API :: Other API")) | |
151 | + self.create_trove_cat((532,497,"db_net_hsql","HSQL","Database Environment :: Network-based DBMS :: HSQL")) | |
152 | + self.create_trove_cat((547,160,"applescript","AppleScript","Programming Language :: AppleScript")) | |
153 | + self.create_trove_cat((173,160,"modula","Modula","Programming Language :: Modula")) | |
154 | + self.create_trove_cat((337,274,"italian","Italian","Translations :: Italian")) | |
155 | + self.create_trove_cat((333,274,"hebrew","Hebrew","Translations :: Hebrew")) | |
156 | + self.create_trove_cat((331,274,"esperanto","Esperanto","Translations :: Esperanto")) | |
157 | + self.create_trove_cat((329,274,"catalan","Catalan","Translations :: Catalan")) | |
158 | + self.create_trove_cat((327,274,"bengali","Bengali","Translations :: Bengali")) | |
159 | + self.create_trove_cat((332,274,"greek","Greek","Translations :: Greek")) | |
160 | + self.create_trove_cat((341,274,"marathi","Marathi","Translations :: Marathi")) | |
161 | + self.create_trove_cat((355,274,"vietnamese","Vietnamese","Translations :: Vietnamese")) | |
162 | + self.create_trove_cat((275,274,"english","English","Translations :: English")) | |
163 | + self.create_trove_cat((345,274,"portuguese","Portuguese","Translations :: Portuguese")) | |
164 | + self.create_trove_cat((171,160,"logo","Logo","Programming Language :: Logo")) | |
165 | + self.create_trove_cat((502,499,"db_api_jdbc","JDBC","Database Environment :: Database API :: JDBC")) | |
166 | + self.create_trove_cat((504,499,"db_api_perldbi","Perl DBI/DBD","Database Environment :: Database API :: Perl DBI/DBD")) | |
167 | + self.create_trove_cat((274,0,"natlanguage","Translations","Translations")) | |
168 | + self.create_trove_cat((506,499,"db_python","Python Database API","Database Environment :: Database API :: Python Database API")) | |
169 | + self.create_trove_cat((526,497,"db_net_oracle","Oracle","Database Environment :: Network-based DBMS :: Oracle")) | |
170 | + self.create_trove_cat((524,497,"db_net_mysql","MySQL","Database Environment :: Network-based DBMS :: MySQL")) | |
171 | + self.create_trove_cat((525,497,"db_net_pgsql","PostgreSQL (pgsql)","Database Environment :: Network-based DBMS :: PostgreSQL (pgsql)")) | |
172 | + self.create_trove_cat((527,497,"db_net_ibmdb2","IBM DB2","Database Environment :: Network-based DBMS :: IBM DB2")) | |
173 | + self.create_trove_cat((529,497,"db_net_sybase","Sybase","Database Environment :: Network-based DBMS :: Sybase")) | |
174 | + self.create_trove_cat((531,497,"db_net_sqlite","SQLite","Database Environment :: Network-based DBMS :: SQLite")) | |
175 | + self.create_trove_cat((533,497,"db_net_other","Other network-based DBMS","Database Environment :: Network-based DBMS :: Other network-based DBMS")) | |
176 | + self.create_trove_cat((497,496,"db_networkbased","Network-based DBMS","Database Environment :: Network-based DBMS")) | |
177 | + self.create_trove_cat((426,199,"os_emu_api","Emulation and API Compatibility","Operating System :: Emulation and API Compatibility")) | |
178 | + self.create_trove_cat((311,236,"macos9","Apple Mac OS Classic","Operating System :: Other Operating Systems :: Apple Mac OS Classic")) | |
179 | + self.create_trove_cat((224,236,"beos","BeOS","Operating System :: Other Operating Systems :: BeOS")) | |
180 | + self.create_trove_cat((215,236,"msdos","MS-DOS","Operating System :: Other Operating Systems :: MS-DOS")) | |
181 | + self.create_trove_cat((421,236,"mswin_95","Win95","Operating System :: Other Operating Systems :: Win95")) | |
182 | + self.create_trove_cat((508,499,"db_api_sql","SQL-based","Database Environment :: Database API :: SQL-based")) | |
183 | + self.create_trove_cat((499,496,"db_api","Database API","Database Environment :: Database API")) | |
184 | + self.create_trove_cat((378,274,"serbian","Serbian","Translations :: Serbian")) | |
185 | + self.create_trove_cat((379,274,"slovak","Slovak","Translations :: Slovak")) | |
186 | + self.create_trove_cat((371,274,"chinesetraditional","Chinese (Traditional)","Translations :: Chinese (Traditional)")) | |
187 | + self.create_trove_cat((410,274,"belarusian","Belarusian","Translations :: Belarusian")) | |
188 | + self.create_trove_cat((411,274,"estonian","Estonian","Translations :: Estonian")) | |
189 | + self.create_trove_cat((412,274,"galician","Galician","Translations :: Galician")) | |
190 | + self.create_trove_cat((34,33,"pop3","POP3","Topic :: Communications :: Email :: Post-Office :: POP3")) | |
191 | + self.create_trove_cat((35,33,"imap","IMAP","Topic :: Communications :: Email :: Post-Office :: IMAP")) | |
192 | + self.create_trove_cat((29,28,"filters","Filters","Topic :: Communications :: Email :: Filters")) | |
193 | + self.create_trove_cat((30,28,"listservers","Mailing List Servers","Topic :: Communications :: Email :: Mailing List Servers")) | |
194 | + self.create_trove_cat((597,80,"card_games","Card Games","Topic :: Games/Entertainment :: Card Games")) | |
195 | + self.create_trove_cat((63,18,"editors","Text Editors","Topic :: Text Editors")) | |
196 | + self.create_trove_cat((366,535,"religion","Religion","Intended Audience :: by Industry or Sector :: Religion")) | |
197 | + self.create_trove_cat((534,1,"by_enduser","by End-User Class","Intended Audience :: by End-User Class")) | |
198 | + self.create_trove_cat((528,497,"db_net_firebird","Firebird/InterBase","Database Environment :: Network-based DBMS :: Firebird/InterBase")) | |
199 | + self.create_trove_cat((3,534,"developers","Developers","Intended Audience :: by End-User Class :: Developers")) | |
200 | + self.create_trove_cat((530,497,"db_net_mssql","Microsoft SQL Server","Database Environment :: Network-based DBMS :: Microsoft SQL Server")) | |
201 | + self.create_trove_cat((2,534,"endusers","End Users/Desktop","Intended Audience :: by End-User Class :: End Users/Desktop")) | |
202 | + self.create_trove_cat((498,496,"db_filebased","File-based DBMS","Database Environment :: File-based DBMS")) | |
203 | + self.create_trove_cat((537,534,"enduser_qa","Quality Engineers","Intended Audience :: by End-User Class :: Quality Engineers")) | |
204 | + self.create_trove_cat((5,1,"other","Other Audience","Intended Audience :: Other Audience")) | |
205 | + self.create_trove_cat((517,498,"db_file_dbm","Berkeley/Sleepycat/Gdbm (DBM)","Database Environment :: File-based DBMS :: Berkeley/Sleepycat/Gdbm (DBM)")) | |
206 | + self.create_trove_cat((358,6,"inactive","7 - Inactive","Development Status :: 7 - Inactive")) | |
207 | + self.create_trove_cat((520,498,"db_file_palm","PalmOS PDB","Database Environment :: File-based DBMS :: PalmOS PDB")) | |
208 | + self.create_trove_cat((523,498,"db_file_other","Other file-based DBMS","Database Environment :: File-based DBMS :: Other file-based DBMS")) | |
209 | + self.create_trove_cat((165,160,"cpp","C++","Programming Language :: C++")) | |
210 | + self.create_trove_cat((163,160,"ada","Ada","Programming Language :: Ada")) | |
211 | + self.create_trove_cat((328,274,"bulgarian","Bulgarian","Translations :: Bulgarian")) | |
212 | + self.create_trove_cat((546,274,"swahili","Swahili","Translations :: Swahili")) | |
213 | + self.create_trove_cat((348,274,"swedish","Swedish","Translations :: Swedish")) | |
214 | + self.create_trove_cat((350,274,"telugu","Telugu","Translations :: Telugu")) | |
215 | + self.create_trove_cat((162,160,"assembly","Assembly","Programming Language :: Assembly")) | |
216 | + self.create_trove_cat((164,160,"c","C","Programming Language :: C")) | |
217 | + self.create_trove_cat((161,160,"apl","APL","Programming Language :: APL")) | |
218 | + self.create_trove_cat((267,160,"zope","Zope","Programming Language :: Zope")) | |
219 | + self.create_trove_cat((264,160,"erlang","Erlang","Programming Language :: Erlang")) | |
220 | + self.create_trove_cat((263,160,"euphoria","Euphoria","Programming Language :: Euphoria")) | |
221 | + self.create_trove_cat((183,160,"php","PHP","Programming Language :: PHP")) | |
222 | + self.create_trove_cat((182,160,"tcl","Tcl","Programming Language :: Tcl")) | |
223 | + self.create_trove_cat((181,160,"smalltalk","Smalltalk","Programming Language :: Smalltalk")) | |
224 | + self.create_trove_cat((180,160,"simula","Simula","Programming Language :: Simula")) | |
225 | + self.create_trove_cat((174,160,"objectivec","Objective C","Programming Language :: Objective C")) | |
226 | + self.create_trove_cat((560,160,"xsl","XSL (XSLT/XPath/XSL-FO)","Programming Language :: XSL (XSLT/XPath/XSL-FO)")) | |
227 | + self.create_trove_cat((293,160,"ruby","Ruby","Programming Language :: Ruby")) | |
228 | + self.create_trove_cat((265,160,"Delphi","Delphi/Kylix","Programming Language :: Delphi/Kylix")) | |
229 | + self.create_trove_cat((281,160,"REBOL","REBOL","Programming Language :: REBOL")) | |
230 | + self.create_trove_cat((454,160,"ocaml","OCaml (Objective Caml)","Programming Language :: OCaml (Objective Caml)")) | |
231 | + self.create_trove_cat((453,160,"vb_net","Visual Basic .NET","Programming Language :: Visual Basic .NET")) | |
232 | + self.create_trove_cat((452,160,"visual_foxpro","Visual FoxPro","Programming Language :: Visual FoxPro")) | |
233 | + self.create_trove_cat((451,160,"haskell","Haskell","Programming Language :: Haskell")) | |
234 | + self.create_trove_cat((450,160,"lua","Lua","Programming Language :: Lua")) | |
235 | + self.create_trove_cat((280,160,"JavaScript","JavaScript","Programming Language :: JavaScript")) | |
236 | + self.create_trove_cat((262,160,"coldfusion","Cold Fusion","Programming Language :: Cold Fusion")) | |
237 | + self.create_trove_cat((261,160,"xbasic","XBasic","Programming Language :: XBasic")) | |
238 | + self.create_trove_cat((258,160,"objectpascal","Object Pascal","Programming Language :: Object Pascal")) | |
239 | + self.create_trove_cat((539,160,"proglang_basic","BASIC","Programming Language :: BASIC")) | |
240 | + self.create_trove_cat((543,160,"groovy","Groovy","Programming Language :: Groovy")) | |
241 | + self.create_trove_cat((545,160,"proglang_labview","LabVIEW","Programming Language :: LabVIEW")) | |
242 | + self.create_trove_cat((548,160,"vbscript","VBScript","Programming Language :: VBScript")) | |
243 | + self.create_trove_cat((552,160,"d_proglang","D","Programming Language :: D")) | |
244 | + self.create_trove_cat((551,160,"vhdl_verilog","VHDL/Verilog","Programming Language :: VHDL/Verilog")) | |
245 | + self.create_trove_cat((549,160,"proglang_lpc","LPC","Programming Language :: LPC")) | |
246 | + self.create_trove_cat((544,160,"yacc","Yacc","Programming Language :: Yacc")) | |
247 | + self.create_trove_cat((352,274,"turkish","Turkish","Translations :: Turkish")) | |
248 | + self.create_trove_cat((354,274,"urdu","Urdu","Translations :: Urdu")) | |
249 | + self.create_trove_cat((160,0,"language","Programming Language","Programming Language")) | |
250 | + self.create_trove_cat((542,160,"emacs_lisp","Emacs-Lisp","Programming Language :: Emacs-Lisp")) | |
251 | + self.create_trove_cat((540,160,"clisp","Common Lisp","Programming Language :: Common Lisp")) | |
252 | + self.create_trove_cat((12,6,"mature","6 - Mature","Development Status :: 6 - Mature")) | |
253 | + self.create_trove_cat((538,160,"awk","AWK","Programming Language :: AWK")) | |
254 | + self.create_trove_cat((572,160,"jsp","JSP","Programming Language :: JSP")) | |
255 | + self.create_trove_cat((172,160,"ml","Standard ML","Programming Language :: Standard ML")) | |
256 | + self.create_trove_cat((255,160,"progress","PROGRESS","Programming Language :: PROGRESS")) | |
257 | + self.create_trove_cat((254,160,"plsql","PL/SQL","Programming Language :: PL/SQL")) | |
258 | + self.create_trove_cat((242,160,"scheme","Scheme","Programming Language :: Scheme")) | |
259 | + self.create_trove_cat((624,160,"idl","IDL","Programming Language :: IDL")) | |
260 | + self.create_trove_cat((198,160,"java","Java","Programming Language :: Java")) | |
261 | + self.create_trove_cat((589,160,"asp_dot_net","ASP.NET","Programming Language :: ASP.NET")) | |
262 | + self.create_trove_cat((608,160,"mumps","MUMPS","Programming Language :: MUMPS")) | |
263 | + self.create_trove_cat((541,160,"dylan","Dylan","Programming Language :: Dylan")) | |
264 | + self.create_trove_cat((573,160,"s_slash_r","S/R","Programming Language :: S/R")) | |
265 | + self.create_trove_cat((584,160,"actionscript","ActionScript","Programming Language :: ActionScript")) | |
266 | + self.create_trove_cat((168,160,"forth","Forth","Programming Language :: Forth")) | |
267 | + self.create_trove_cat((334,274,"hindi","Hindi","Translations :: Hindi")) | |
268 | + self.create_trove_cat((336,274,"indonesian","Indonesian","Translations :: Indonesian")) | |
269 | + self.create_trove_cat((521,498,"db_file_flat","Flat-file","Database Environment :: File-based DBMS :: Flat-file")) | |
270 | + self.create_trove_cat((519,498,"db_file_xbase","xBase","Database Environment :: File-based DBMS :: xBase")) | |
271 | + self.create_trove_cat((338,274,"javanese","Javanese","Translations :: Javanese")) | |
272 | + self.create_trove_cat((518,498,"db_msaccess","Microsoft Access","Database Environment :: File-based DBMS :: Microsoft Access")) | |
273 | + self.create_trove_cat((522,498,"db_file_proprietary","Proprietary file format","Database Environment :: File-based DBMS :: Proprietary file format")) | |
274 | + self.create_trove_cat((496,0,"root_database","Database Environment","Database Environment")) | |
275 | + self.create_trove_cat((501,499,"db_api_odbc","ODBC","Database Environment :: Database API :: ODBC")) | |
276 | + self.create_trove_cat((503,499,"db_adodb","ADOdb","Database Environment :: Database API :: ADOdb")) | |
277 | + self.create_trove_cat((340,274,"malay","Malay","Translations :: Malay")) | |
278 | + self.create_trove_cat((6,0,"developmentstatus","Development Status","Development Status")) | |
279 | + self.create_trove_cat((342,274,"norwegian","Norwegian","Translations :: Norwegian")) | |
280 | + self.create_trove_cat((381,274,"portuguesebrazilian","Brazilian Portuguese","Translations :: Brazilian Portuguese")) | |
281 | + self.create_trove_cat((382,274,"chinesesimplified","Chinese (Simplified)","Translations :: Chinese (Simplified)")) | |
282 | + self.create_trove_cat((356,274,"danish","Danish","Translations :: Danish")) | |
283 | + self.create_trove_cat((346,274,"panjabi","Panjabi","Translations :: Panjabi")) | |
284 | + self.create_trove_cat((370,274,"bosnian","Bosnian","Translations :: Bosnian")) | |
285 | + self.create_trove_cat((279,274,"german","German","Translations :: German")) | |
286 | + self.create_trove_cat((278,274,"japanese","Japanese","Translations :: Japanese")) | |
287 | + self.create_trove_cat((277,274,"spanish","Spanish","Translations :: Spanish")) | |
288 | + self.create_trove_cat((11,6,"production","5 - Production/Stable","Development Status :: 5 - Production/Stable")) | |
289 | + self.create_trove_cat((10,6,"beta","4 - Beta","Development Status :: 4 - Beta")) | |
290 | + self.create_trove_cat((9,6,"alpha","3 - Alpha","Development Status :: 3 - Alpha")) | |
291 | + self.create_trove_cat((8,6,"prealpha","2 - Pre-Alpha","Development Status :: 2 - Pre-Alpha")) | |
292 | + self.create_trove_cat((7,6,"planning","1 - Planning","Development Status :: 1 - Planning")) | |
293 | + self.create_trove_cat((295,274,"russian","Russian","Translations :: Russian")) | |
294 | + self.create_trove_cat((326,274,"arabic","Arabic","Translations :: Arabic")) | |
295 | + self.create_trove_cat((335,274,"hungarian","Hungarian","Translations :: Hungarian")) | |
296 | + self.create_trove_cat((13,0,"license","License","License")) | |
297 | + self.create_trove_cat((14,13,"osi","OSI-Approved Open Source","License :: OSI-Approved Open Source")) | |
298 | + self.create_trove_cat((388,14,"osl","Open Software License","License :: OSI-Approved Open Source :: Open Software License")) | |
299 | + self.create_trove_cat((321,14,"motosoto","Motosoto License","License :: OSI-Approved Open Source :: Motosoto License")) | |
300 | + self.create_trove_cat((325,14,"attribut","Attribution Assurance License","License :: OSI-Approved Open Source :: Attribution Assurance License")) | |
301 | + self.create_trove_cat((304,14,"mpl","Mozilla Public License 1.0 (MPL)","License :: OSI-Approved Open Source :: Mozilla Public License 1.0 (MPL)")) | |
302 | + self.create_trove_cat((398,14,"plan9","Lucent Public License (Plan9)","License :: OSI-Approved Open Source :: Lucent Public License (Plan9)")) | |
303 | + self.create_trove_cat((187,14,"bsd","BSD License","License :: OSI-Approved Open Source :: BSD License")) | |
304 | + self.create_trove_cat((393,14,"historical","Historical Permission Notice and Disclaimer","License :: OSI-Approved Open Source :: Historical Permission Notice and Disclaimer")) | |
305 | + self.create_trove_cat((395,14,"real","RealNetworks Public Source License V1.0","License :: OSI-Approved Open Source :: RealNetworks Public Source License V1.0")) | |
306 | + self.create_trove_cat((396,14,"rpl","Reciprocal Public License","License :: OSI-Approved Open Source :: Reciprocal Public License")) | |
307 | + self.create_trove_cat((392,14,"eiffel2","Eiffel Forum License V2.0","License :: OSI-Approved Open Source :: Eiffel Forum License V2.0")) | |
308 | + self.create_trove_cat((320,14,"w3c","W3C License","License :: OSI-Approved Open Source :: W3C License")) | |
309 | + self.create_trove_cat((400,14,"frameworx","Frameworx Open License","License :: OSI-Approved Open Source :: Frameworx Open License")) | |
310 | + self.create_trove_cat((194,14,"python","Python License (CNRI Python License)","License :: OSI-Approved Open Source :: Python License (CNRI Python License)")) | |
311 | + self.create_trove_cat((296,14,"apache","Apache Software License","License :: OSI-Approved Open Source :: Apache Software License")) | |
312 | + self.create_trove_cat((298,14,"sissl","Sun Industry Standards Source License (SISSL)","License :: OSI-Approved Open Source :: Sun Industry Standards Source License (SISSL)")) | |
313 | + self.create_trove_cat((196,13,"other","Other/Proprietary License","License :: Other/Proprietary License")) | |
314 | + self.create_trove_cat((197,13,"publicdomain","Public Domain","License :: Public Domain")) | |
315 | + self.create_trove_cat((301,14,"nokia","Nokia Open Source License","License :: OSI-Approved Open Source :: Nokia Open Source License")) | |
316 | + self.create_trove_cat((319,14,"eiffel","Eiffel Forum License","License :: OSI-Approved Open Source :: Eiffel Forum License")) | |
317 | + self.create_trove_cat((318,14,"sunpublic","Sun Public License","License :: OSI-Approved Open Source :: Sun Public License")) | |
318 | + self.create_trove_cat((190,14,"qpl","Qt Public License (QPL)","License :: OSI-Approved Open Source :: Qt Public License (QPL)")) | |
319 | + self.create_trove_cat((390,14,"oclc","OCLC Research Public License 2.0","License :: OSI-Approved Open Source :: OCLC Research Public License 2.0")) | |
320 | + self.create_trove_cat((407,14,"nasalicense","NASA Open Source Agreement","License :: OSI-Approved Open Source :: NASA Open Source Agreement")) | |
321 | + self.create_trove_cat((406,14,"eclipselicense","Eclipse Public License","License :: OSI-Approved Open Source :: Eclipse Public License")) | |
322 | + self.create_trove_cat((316,14,"opengroup","Open Group Test Suite License","License :: OSI-Approved Open Source :: Open Group Test Suite License")) | |
323 | + self.create_trove_cat((300,14,"jabber","Jabber Open Source License","License :: OSI-Approved Open Source :: Jabber Open Source License")) | |
324 | + self.create_trove_cat((297,14,"vovida","Vovida Software License 1.0","License :: OSI-Approved Open Source :: Vovida Software License 1.0")) | |
325 | + self.create_trove_cat((324,14,"afl","Academic Free License (AFL)","License :: OSI-Approved Open Source :: Academic Free License (AFL)")) | |
326 | + self.create_trove_cat((189,14,"psfl","Python Software Foundation License","License :: OSI-Approved Open Source :: Python Software Foundation License")) | |
327 | + self.create_trove_cat((193,14,"rscpl","Ricoh Source Code Public License","License :: OSI-Approved Open Source :: Ricoh Source Code Public License")) | |
328 | + self.create_trove_cat((17,14,"artistic","Artistic License","License :: OSI-Approved Open Source :: Artistic License")) | |
329 | + self.create_trove_cat((389,14,"sybase","Sybase Open Watcom Public License","License :: OSI-Approved Open Source :: Sybase Open Watcom Public License")) | |
330 | + self.create_trove_cat((391,14,"wxwindows","wxWindows Library Licence","License :: OSI-Approved Open Source :: wxWindows Library Licence")) | |
331 | + self.create_trove_cat((397,14,"entessa","Entessa Public License","License :: OSI-Approved Open Source :: Entessa Public License")) | |
332 | + self.create_trove_cat((16,14,"lgpl","GNU Library or Lesser General Public License (LGPL)","License :: OSI-Approved Open Source :: GNU Library or Lesser General Public License (LGPL)")) | |
333 | + self.create_trove_cat((629,14,"educom","Educational Community License","License :: OSI-Approved Open Source :: Educational Community License")) | |
334 | + self.create_trove_cat((15,14,"gpl","GNU General Public License (GPL)","License :: OSI-Approved Open Source :: GNU General Public License (GPL)")) | |
335 | + self.create_trove_cat((191,14,"ibm","IBM Public License","License :: OSI-Approved Open Source :: IBM Public License")) | |
336 | + self.create_trove_cat((192,14,"cvw","MITRE Collaborative Virtual Workspace License (CVW)","License :: OSI-Approved Open Source :: MITRE Collaborative Virtual Workspace License (CVW)")) | |
337 | + self.create_trove_cat((299,14,"iosl","Intel Open Source License","License :: OSI-Approved Open Source :: Intel Open Source License")) | |
338 | + self.create_trove_cat((399,14,"php-license","PHP License","License :: OSI-Approved Open Source :: PHP License")) | |
339 | + self.create_trove_cat((188,14,"mit","MIT License","License :: OSI-Approved Open Source :: MIT License")) | |
340 | + self.create_trove_cat((405,14,"public102","Lucent Public License Version 1.02","License :: OSI-Approved Open Source :: Lucent Public License Version 1.02")) | |
341 | + self.create_trove_cat((404,14,"fair","Fair License","License :: OSI-Approved Open Source :: Fair License")) | |
342 | + self.create_trove_cat((403,14,"datagrid","EU DataGrid Software License","License :: OSI-Approved Open Source :: EU DataGrid Software License")) | |
343 | + self.create_trove_cat((307,14,"ibmcpl","Common Public License","License :: OSI-Approved Open Source :: Common Public License")) | |
344 | + self.create_trove_cat((402,14,"cua","CUA Office Public License Version 1.0","License :: OSI-Approved Open Source :: CUA Office Public License Version 1.0")) | |
345 | + self.create_trove_cat((401,14,"apache2","Apache License V2.0","License :: OSI-Approved Open Source :: Apache License V2.0")) | |
346 | + self.create_trove_cat((394,14,"nausite","Naumen Public License","License :: OSI-Approved Open Source :: Naumen Public License")) | |
347 | + self.create_trove_cat((317,14,"xnet","X.Net License","License :: OSI-Approved Open Source :: X.Net License")) | |
348 | + self.create_trove_cat((195,14,"zlib","zlib/libpng License","License :: OSI-Approved Open Source :: zlib/libpng License")) | |
349 | + self.create_trove_cat((323,14,"ncsa","University of Illinois/NCSA Open Source License","License :: OSI-Approved Open Source :: University of Illinois/NCSA Open Source License")) | |
350 | + self.create_trove_cat((322,14,"zope","Zope Public License","License :: OSI-Approved Open Source :: Zope Public License")) | |
351 | + self.create_trove_cat((302,14,"sleepycat","Sleepycat License","License :: OSI-Approved Open Source :: Sleepycat License")) | |
352 | + self.create_trove_cat((303,14,"nethack","Nethack General Public License","License :: OSI-Approved Open Source :: Nethack General Public License")) | |
353 | + self.create_trove_cat((306,14,"apsl","Apple Public Source License","License :: OSI-Approved Open Source :: Apple Public Source License")) | |
354 | + self.create_trove_cat((305,14,"mpl11","Mozilla Public License 1.1 (MPL 1.1)","License :: OSI-Approved Open Source :: Mozilla Public License 1.1 (MPL 1.1)")) | |
355 | + self.create_trove_cat((628,14,"adaptive","Adaptive Public License","License :: OSI-Approved Open Source :: Adaptive Public License")) | |
356 | + self.create_trove_cat((630,14,"cddl","Common Development and Distribution License","License :: OSI-Approved Open Source :: Common Development and Distribution License")) | |
357 | + self.create_trove_cat((631,14,"catosl","Computer Associates Trusted Open Source License","License :: OSI-Approved Open Source :: Computer Associates Trusted Open Source License")) | |
358 | + self.create_trove_cat((199,0,"os","Operating System","Operating System")) | |
359 | + self.create_trove_cat((429,426,"fink","Fink (Mac OS X)","Operating System :: Emulation and API Compatibility :: Fink (Mac OS X)")) | |
360 | + self.create_trove_cat((427,426,"cygwin","Cygwin (MS Windows)","Operating System :: Emulation and API Compatibility :: Cygwin (MS Windows)")) | |
361 | + self.create_trove_cat((428,426,"dosemu","DOSEMU","Operating System :: Emulation and API Compatibility :: DOSEMU")) | |
362 | + self.create_trove_cat((430,426,"wine","WINE","Operating System :: Emulation and API Compatibility :: WINE")) | |
363 | + self.create_trove_cat((431,426,"emx","EMX (OS/2 and MS-DOS)","Operating System :: Emulation and API Compatibility :: EMX (OS/2 and MS-DOS)")) | |
364 | + self.create_trove_cat((445,426,"mingw_msys","MinGW/MSYS (MS Windows)","Operating System :: Emulation and API Compatibility :: MinGW/MSYS (MS Windows)")) | |
365 | + self.create_trove_cat((315,199,"pdasystems","Handheld/Embedded Operating Systems","Operating System :: Handheld/Embedded Operating Systems")) | |
366 | + self.create_trove_cat((222,315,"wince","WinCE","Operating System :: Handheld/Embedded Operating Systems :: WinCE")) | |
367 | + self.create_trove_cat((223,315,"palmos","PalmOS","Operating System :: Handheld/Embedded Operating Systems :: PalmOS")) | |
368 | + self.create_trove_cat((441,315,"ecos","eCos","Operating System :: Handheld/Embedded Operating Systems :: eCos")) | |
369 | + self.create_trove_cat((443,315,"vxworks","VxWorks","Operating System :: Handheld/Embedded Operating Systems :: VxWorks")) | |
370 | + self.create_trove_cat((444,315,"symbianos","SymbianOS","Operating System :: Handheld/Embedded Operating Systems :: SymbianOS")) | |
371 | + self.create_trove_cat((442,315,"qnx","QNX","Operating System :: Handheld/Embedded Operating Systems :: QNX")) | |
372 | + self.create_trove_cat((440,315,"uclinux","uClinux","Operating System :: Handheld/Embedded Operating Systems :: uClinux")) | |
373 | + self.create_trove_cat((418,199,"modern_oses","Modern (Vendor-Supported) Desktop Operating Systems","Operating System :: Modern (Vendor-Supported) Desktop Operating Systems")) | |
374 | + self.create_trove_cat((420,418,"mswin_2000","Win2K","Operating System :: Modern (Vendor-Supported) Desktop Operating Systems :: Win2K")) | |
375 | + self.create_trove_cat((207,418,"sun","Solaris","Operating System :: Modern (Vendor-Supported) Desktop Operating Systems :: Solaris")) | |
376 | + self.create_trove_cat((201,418,"linux","Linux","Operating System :: Modern (Vendor-Supported) Desktop Operating Systems :: Linux")) | |
377 | + self.create_trove_cat((205,418,"openbsd","OpenBSD","Operating System :: Modern (Vendor-Supported) Desktop Operating Systems :: OpenBSD")) | |
378 | + self.create_trove_cat((203,418,"freebsd","FreeBSD","Operating System :: Modern (Vendor-Supported) Desktop Operating Systems :: FreeBSD")) | |
379 | + self.create_trove_cat((204,418,"netbsd","NetBSD","Operating System :: Modern (Vendor-Supported) Desktop Operating Systems :: NetBSD")) | |
380 | + self.create_trove_cat((309,418,"macosx","OS X","Operating System :: Modern (Vendor-Supported) Desktop Operating Systems :: OS X")) | |
381 | + self.create_trove_cat((419,418,"mswin_xp","WinXP","Operating System :: Modern (Vendor-Supported) Desktop Operating Systems :: WinXP")) | |
382 | + self.create_trove_cat((236,199,"other","Other Operating Systems","Operating System :: Other Operating Systems")) | |
383 | + self.create_trove_cat((206,236,"bsdos","BSD/OS","Operating System :: Other Operating Systems :: BSD/OS")) | |
384 | + self.create_trove_cat((634,236,"console-platforms","Console-based Platforms","Operating System :: Other Operating Systems :: Console-based Platforms")) | |
385 | + self.create_trove_cat((637,634,"sega-dreamcast","Sega Dreamcast","Operating System :: Other Operating Systems :: Console-based Platforms :: Sega Dreamcast")) | |
386 | + self.create_trove_cat((635,634,"xbox","Microsoft Xbox","Operating System :: Other Operating Systems :: Console-based Platforms :: Microsoft Xbox")) | |
387 | + self.create_trove_cat((636,634,"sony-ps2","Sony Playstation 2","Operating System :: Other Operating Systems :: Console-based Platforms :: Sony Playstation 2")) | |
388 | + self.create_trove_cat((422,236,"mswin_98","Win98","Operating System :: Other Operating Systems :: Win98")) | |
389 | + self.create_trove_cat((425,422,"mswin_98_osr2","Win98 OSR2","Operating System :: Other Operating Systems :: Win98 :: Win98 OSR2")) | |
390 | + self.create_trove_cat((424,236,"mswin_me","WinME","Operating System :: Other Operating Systems :: WinME")) | |
391 | + self.create_trove_cat((423,236,"mswin_nt","WinNT","Operating System :: Other Operating Systems :: WinNT")) | |
392 | + self.create_trove_cat((220,236,"os2","IBM OS/2","Operating System :: Other Operating Systems :: IBM OS/2")) | |
393 | + self.create_trove_cat((211,236,"irix","SGI IRIX","Operating System :: Other Operating Systems :: SGI IRIX")) | |
394 | + self.create_trove_cat((210,236,"aix","IBM AIX","Operating System :: Other Operating Systems :: IBM AIX")) | |
395 | + self.create_trove_cat((212,236,"other","Other","Operating System :: Other Operating Systems :: Other")) | |
396 | + self.create_trove_cat((446,236,"openvms","OpenVMS","Operating System :: Other Operating Systems :: OpenVMS")) | |
397 | + self.create_trove_cat((434,236,"amigaos","AmigaOS","Operating System :: Other Operating Systems :: AmigaOS")) | |
398 | + self.create_trove_cat((448,236,"mswin_server2003","Microsoft Windows Server 2003","Operating System :: Other Operating Systems :: Microsoft Windows Server 2003")) | |
399 | + self.create_trove_cat((447,236,"morphos","MorphOS","Operating System :: Other Operating Systems :: MorphOS")) | |
400 | + self.create_trove_cat((209,236,"hpux","HP-UX","Operating System :: Other Operating Systems :: HP-UX")) | |
401 | + self.create_trove_cat((208,236,"sco","SCO","Operating System :: Other Operating Systems :: SCO")) | |
402 | + self.create_trove_cat((240,236,"gnuhurd","GNU Hurd","Operating System :: Other Operating Systems :: GNU Hurd")) | |
403 | + self.create_trove_cat((217,236,"win31","Microsoft Windows 3.x","Operating System :: Other Operating Systems :: Microsoft Windows 3.x")) | |
404 | + self.create_trove_cat((432,199,"os_groups","Grouping and Descriptive Categories","Operating System :: Grouping and Descriptive Categories")) | |
405 | + self.create_trove_cat((218,432,"win95","32-bit MS Windows (95/98)","Operating System :: Grouping and Descriptive Categories :: 32-bit MS Windows (95/98)")) | |
406 | + self.create_trove_cat((439,432,"os_projectdistrospecific","Project is OS Distribution-Specific","Operating System :: Grouping and Descriptive Categories :: Project is OS Distribution-Specific")) | |
407 | + self.create_trove_cat((449,432,"eightbit_oses","Classic 8-bit Operating Systems (Apple, Atari, Commodore, etc.)","Operating System :: Grouping and Descriptive Categories :: Classic 8-bit Operating Systems (Apple, Atari, Commodore, etc.)")) | |
408 | + self.create_trove_cat((436,432,"os_portable","OS Portable (Source code to work with many OS platforms)","Operating System :: Grouping and Descriptive Categories :: OS Portable (Source code to work with many OS platforms)")) | |
409 | + self.create_trove_cat((438,432,"os_projectdistro","Project is an Operating System Distribution","Operating System :: Grouping and Descriptive Categories :: Project is an Operating System Distribution")) | |
410 | + self.create_trove_cat((235,432,"independent","OS Independent (Written in an interpreted language)","Operating System :: Grouping and Descriptive Categories :: OS Independent (Written in an interpreted language)")) | |
411 | + self.create_trove_cat((200,432,"posix","All POSIX (Linux/BSD/UNIX-like OSes)","Operating System :: Grouping and Descriptive Categories :: All POSIX (Linux/BSD/UNIX-like OSes)")) | |
412 | + self.create_trove_cat((219,432,"winnt","32-bit MS Windows (NT/2000/XP)","Operating System :: Grouping and Descriptive Categories :: 32-bit MS Windows (NT/2000/XP)")) | |
413 | + self.create_trove_cat((202,432,"bsd","All BSD Platforms (FreeBSD/NetBSD/OpenBSD/Apple Mac OS X)","Operating System :: Grouping and Descriptive Categories :: All BSD Platforms (FreeBSD/NetBSD/OpenBSD/Apple Mac OS X)")) | |
414 | + self.create_trove_cat((435,432,"mswin_all32bit","All 32-bit MS Windows (95/98/NT/2000/XP)","Operating System :: Grouping and Descriptive Categories :: All 32-bit MS Windows (95/98/NT/2000/XP)")) | |
415 | + self.create_trove_cat((437,432,"os_projectkernel","Project is an Operating System Kernel","Operating System :: Grouping and Descriptive Categories :: Project is an Operating System Kernel")) | |
416 | + self.create_trove_cat((64,63,"emacs","Emacs","Topic :: Text Editors :: Emacs")) | |
417 | + self.create_trove_cat((65,63,"ide","Integrated Development Environments (IDE)","Topic :: Text Editors :: Integrated Development Environments (IDE)")) | |
418 | + self.create_trove_cat((69,63,"documentation","Documentation","Topic :: Text Editors :: Documentation")) | |
419 | + self.create_trove_cat((70,63,"wordprocessors","Word Processors","Topic :: Text Editors :: Word Processors")) | |
420 | + self.create_trove_cat((285,63,"textprocessing","Text Processing","Topic :: Text Editors :: Text Processing")) | |
421 | + self.create_trove_cat((611,18,"formats_and_protocols","Formats and Protocols","Topic :: Formats and Protocols")) | |
422 | + self.create_trove_cat((554,611,"data_formats","Data Formats","Topic :: Formats and Protocols :: Data Formats")) | |
423 | + self.create_trove_cat((559,554,"xml","XML","Topic :: Formats and Protocols :: Data Formats :: XML")) | |
424 | + self.create_trove_cat((557,554,"sgml","SGML","Topic :: Formats and Protocols :: Data Formats :: SGML")) | |
425 | + self.create_trove_cat((555,554,"docbook","DocBook","Topic :: Formats and Protocols :: Data Formats :: DocBook")) | |
426 | + self.create_trove_cat((556,554,"html_xhtml","HTML/XHTML","Topic :: Formats and Protocols :: Data Formats :: HTML/XHTML")) | |
427 | + self.create_trove_cat((558,554,"tex_latex","TeX/LaTeX","Topic :: Formats and Protocols :: Data Formats :: TeX/LaTeX")) | |
428 | + self.create_trove_cat((612,611,"protocols","Protocols","Topic :: Formats and Protocols :: Protocols")) | |
429 | + self.create_trove_cat((616,612,"xml_rpc","XML-RPC","Topic :: Formats and Protocols :: Protocols :: XML-RPC")) | |
430 | + self.create_trove_cat((614,612,"nntp","NNTP","Topic :: Formats and Protocols :: Protocols :: NNTP")) | |
431 | + self.create_trove_cat((613,612,"soap","SOAP","Topic :: Formats and Protocols :: Protocols :: SOAP")) | |
432 | + self.create_trove_cat((615,612,"rss","RSS","Topic :: Formats and Protocols :: Protocols :: RSS")) | |
433 | + self.create_trove_cat((156,18,"terminals","Terminals","Topic :: Terminals")) | |
434 | + self.create_trove_cat((157,156,"serial","Serial","Topic :: Terminals :: Serial")) | |
435 | + self.create_trove_cat((158,156,"virtual","Terminal Emulators/X Terminals","Topic :: Terminals :: Terminal Emulators/X Terminals")) | |
436 | + self.create_trove_cat((159,156,"telnet","Telnet","Topic :: Terminals :: Telnet")) | |
437 | + self.create_trove_cat((20,18,"communications","Communications","Topic :: Communications")) | |
438 | + self.create_trove_cat((37,20,"fido","FIDO","Topic :: Communications :: FIDO")) | |
439 | + self.create_trove_cat((38,20,"hamradio","Ham Radio","Topic :: Communications :: Ham Radio")) | |
440 | + self.create_trove_cat((39,20,"usenet","Usenet News","Topic :: Communications :: Usenet News")) | |
441 | + self.create_trove_cat((40,20,"internetphone","Internet Phone","Topic :: Communications :: Internet Phone")) | |
442 | + self.create_trove_cat((36,20,"fax","Fax","Topic :: Communications :: Fax")) | |
443 | + self.create_trove_cat((22,20,"chat","Chat","Topic :: Communications :: Chat")) | |
444 | + self.create_trove_cat((574,22,"msn_messenger","MSN Messenger","Topic :: Communications :: Chat :: MSN Messenger")) | |
445 | + self.create_trove_cat((26,22,"aim","AOL Instant Messenger","Topic :: Communications :: Chat :: AOL Instant Messenger")) | |
446 | + self.create_trove_cat((24,22,"irc","Internet Relay Chat","Topic :: Communications :: Chat :: Internet Relay Chat")) | |
447 | + self.create_trove_cat((25,22,"talk","Unix Talk","Topic :: Communications :: Chat :: Unix Talk")) | |
448 | + self.create_trove_cat((23,22,"icq","ICQ","Topic :: Communications :: Chat :: ICQ")) | |
449 | + self.create_trove_cat((590,20,"streaming_comms","Streaming","Topic :: Communications :: Streaming")) | |
450 | + self.create_trove_cat((27,20,"conferencing","Conferencing","Topic :: Communications :: Conferencing")) | |
451 | + self.create_trove_cat((247,20,"telephony","Telephony","Topic :: Communications :: Telephony")) | |
452 | + self.create_trove_cat((251,20,"filesharing","File Sharing","Topic :: Communications :: File Sharing")) | |
453 | + self.create_trove_cat((622,251,"bittorrent","BitTorrent","Topic :: Communications :: File Sharing :: BitTorrent")) | |
454 | + self.create_trove_cat((286,251,"gnutella","Gnutella","Topic :: Communications :: File Sharing :: Gnutella")) | |
455 | + self.create_trove_cat((241,251,"napster","Napster","Topic :: Communications :: File Sharing :: Napster")) | |
456 | + self.create_trove_cat((21,20,"bbs","BBS","Topic :: Communications :: BBS")) | |
457 | + self.create_trove_cat((28,20,"email","Email","Topic :: Communications :: Email")) | |
458 | + self.create_trove_cat((31,28,"mua","Email Clients (MUA)","Topic :: Communications :: Email :: Email Clients (MUA)")) | |
459 | + self.create_trove_cat((32,28,"mta","Mail Transport Agents","Topic :: Communications :: Email :: Mail Transport Agents")) | |
460 | + self.create_trove_cat((234,18,"other","Other/Nonlisted Topic","Topic :: Other/Nonlisted Topic")) | |
461 | + self.create_trove_cat((129,18,"office","Office/Business","Topic :: Office/Business")) | |
462 | + self.create_trove_cat((576,129,"enterprise","Enterprise","Topic :: Office/Business :: Enterprise")) | |
463 | + self.create_trove_cat((579,576,"crm","CRM","Topic :: Office/Business :: Enterprise :: CRM")) | |
464 | + self.create_trove_cat((577,576,"erp","ERP","Topic :: Office/Business :: Enterprise :: ERP")) | |
465 | + self.create_trove_cat((578,576,"olap","OLAP","Topic :: Office/Business :: Enterprise :: OLAP")) | |
466 | + self.create_trove_cat((580,576,"data_warehousing","Data Warehousing","Topic :: Office/Business :: Enterprise :: Data Warehousing")) | |
467 | + self.create_trove_cat((587,129,"time_tracking","Time Tracking","Topic :: Office/Business :: Time Tracking")) | |
468 | + self.create_trove_cat((75,129,"financial","Financial","Topic :: Office/Business :: Financial")) | |
469 | + self.create_trove_cat((76,75,"accounting","Accounting","Topic :: Office/Business :: Financial :: Accounting")) | |
470 | + self.create_trove_cat((77,75,"investment","Investment","Topic :: Office/Business :: Financial :: Investment")) | |
471 | + self.create_trove_cat((78,75,"spreadsheet","Spreadsheet","Topic :: Office/Business :: Financial :: Spreadsheet")) | |
472 | + self.create_trove_cat((79,75,"pointofsale","Point-Of-Sale","Topic :: Office/Business :: Financial :: Point-Of-Sale")) | |
473 | + self.create_trove_cat((130,129,"scheduling","Scheduling","Topic :: Office/Business :: Scheduling")) | |
474 | + self.create_trove_cat((585,130,"calendar","Calendar","Topic :: Office/Business :: Scheduling :: Calendar")) | |
475 | + self.create_trove_cat((586,130,"resource_booking","Resource Booking","Topic :: Office/Business :: Scheduling :: Resource Booking")) | |
476 | + self.create_trove_cat((131,129,"suites","Office Suites","Topic :: Office/Business :: Office Suites")) | |
477 | + self.create_trove_cat((588,129,"todo_lists","To-Do Lists","Topic :: Office/Business :: To-Do Lists")) | |
478 | + self.create_trove_cat((607,129,"project_management","Project Management","Topic :: Office/Business :: Project Management")) | |
479 | + self.create_trove_cat((66,18,"database","Database","Topic :: Database")) | |
480 | + self.create_trove_cat((68,66,"frontends","Front-Ends","Topic :: Database :: Front-Ends")) | |
481 | + self.create_trove_cat((67,66,"engines","Database Engines/Servers","Topic :: Database :: Database Engines/Servers")) | |
482 | + self.create_trove_cat((43,18,"security","Security","Topic :: Security")) | |
483 | + self.create_trove_cat((44,43,"cryptography","Cryptography","Topic :: Security :: Cryptography")) | |
484 | + self.create_trove_cat((55,18,"desktop","Desktop Environment","Topic :: Desktop Environment")) | |
485 | + self.create_trove_cat((56,55,"windowmanagers","Window Managers","Topic :: Desktop Environment :: Window Managers")) | |
486 | + self.create_trove_cat((59,56,"enlightenment","Enlightenment","Topic :: Desktop Environment :: Window Managers :: Enlightenment")) | |
487 | + self.create_trove_cat((60,59,"themes","Themes","Topic :: Desktop Environment :: Window Managers :: Enlightenment :: Themes")) | |
488 | + self.create_trove_cat((57,55,"kde","K Desktop Environment (KDE)","Topic :: Desktop Environment :: K Desktop Environment (KDE)")) | |
489 | + self.create_trove_cat((61,57,"themes","Themes","Topic :: Desktop Environment :: K Desktop Environment (KDE) :: Themes")) | |
490 | + self.create_trove_cat((58,55,"gnome","Gnome","Topic :: Desktop Environment :: Gnome")) | |
491 | + self.create_trove_cat((62,55,"screensavers","Screen Savers","Topic :: Desktop Environment :: Screen Savers")) | |
492 | + self.create_trove_cat((80,18,"games","Games/Entertainment","Topic :: Games/Entertainment")) | |
493 | + self.create_trove_cat((633,80,"console-games","Console-based Games","Topic :: Games/Entertainment :: Console-based Games")) | |
494 | + self.create_trove_cat((287,80,"boardgames","Board Games","Topic :: Games/Entertainment :: Board Games")) | |
495 | + self.create_trove_cat((288,80,"sidescrolling","Side-Scrolling/Arcade Games","Topic :: Games/Entertainment :: Side-Scrolling/Arcade Games")) | |
496 | + self.create_trove_cat((81,80,"realtimestrategy","Real Time Strategy","Topic :: Games/Entertainment :: Real Time Strategy")) | |
497 | + self.create_trove_cat((82,80,"firstpersonshooters","First Person Shooters","Topic :: Games/Entertainment :: First Person Shooters")) | |
498 | + self.create_trove_cat((83,80,"turnbasedstrategy","Turn Based Strategy","Topic :: Games/Entertainment :: Turn Based Strategy")) | |
499 | + self.create_trove_cat((84,80,"rpg","Role-Playing","Topic :: Games/Entertainment :: Role-Playing")) | |
500 | + self.create_trove_cat((85,80,"simulation","Simulation","Topic :: Games/Entertainment :: Simulation")) | |
501 | + self.create_trove_cat((86,80,"mud","Multi-User Dungeons (MUD)","Topic :: Games/Entertainment :: Multi-User Dungeons (MUD)")) | |
502 | + self.create_trove_cat((268,80,"Puzzles","Puzzle Games","Topic :: Games/Entertainment :: Puzzle Games")) | |
503 | + self.create_trove_cat((88,87,"finger","Finger","Topic :: Internet :: Finger")) | |
504 | + self.create_trove_cat((89,87,"ftp","File Transfer Protocol (FTP)","Topic :: Internet :: File Transfer Protocol (FTP)")) | |
505 | + self.create_trove_cat((270,87,"WAP","WAP","Topic :: Internet :: WAP")) | |
506 | + self.create_trove_cat((90,87,"www","WWW/HTTP","Topic :: Internet :: WWW/HTTP")) | |
507 | + self.create_trove_cat((91,90,"browsers","Browsers","Topic :: Internet :: WWW/HTTP :: Browsers")) | |
508 | + self.create_trove_cat((92,90,"dynamic","Dynamic Content","Topic :: Internet :: WWW/HTTP :: Dynamic Content")) | |
509 | + self.create_trove_cat((95,92,"messageboards","Message Boards","Topic :: Internet :: WWW/HTTP :: Dynamic Content :: Message Boards")) | |
510 | + self.create_trove_cat((96,92,"cgi","CGI Tools/Libraries","Topic :: Internet :: WWW/HTTP :: Dynamic Content :: CGI Tools/Libraries")) | |
511 | + self.create_trove_cat((94,92,"counters","Page Counters","Topic :: Internet :: WWW/HTTP :: Dynamic Content :: Page Counters")) | |
512 | + self.create_trove_cat((93,90,"indexing","Indexing/Search","Topic :: Internet :: WWW/HTTP :: Indexing/Search")) | |
513 | + self.create_trove_cat((243,90,"sitemanagement","Site Management","Topic :: Internet :: WWW/HTTP :: Site Management")) | |
514 | + self.create_trove_cat((244,243,"linkchecking","Link Checking","Topic :: Internet :: WWW/HTTP :: Site Management :: Link Checking")) | |
515 | + self.create_trove_cat((250,90,"httpservers","HTTP Servers","Topic :: Internet :: WWW/HTTP :: HTTP Servers")) | |
516 | + self.create_trove_cat((149,87,"dns","Name Service (DNS)","Topic :: Internet :: Name Service (DNS)")) | |
517 | + self.create_trove_cat((245,87,"loganalysis","Log Analysis","Topic :: Internet :: Log Analysis")) | |
518 | + self.create_trove_cat((45,18,"development","Software Development","Topic :: Software Development")) | |
519 | + self.create_trove_cat((563,45,"modeling","Modeling","Topic :: Software Development :: Modeling")) | |
520 | + self.create_trove_cat((46,45,"build","Build Tools","Topic :: Software Development :: Build Tools")) | |
521 | + self.create_trove_cat((575,45,"testing","Testing","Topic :: Software Development :: Testing")) | |
522 | + self.create_trove_cat((620,45,"algorithms","Algorithms","Topic :: Software Development :: Algorithms")) | |
523 | + self.create_trove_cat((621,620,"genetic_algorithms","Genetic Algorithms","Topic :: Software Development :: Algorithms :: Genetic Algorithms")) | |
524 | + self.create_trove_cat((606,45,"frameworks","Frameworks","Topic :: Software Development :: Frameworks")) | |
525 | + self.create_trove_cat((564,45,"documentation","Documentation","Topic :: Software Development :: Documentation")) | |
526 | + self.create_trove_cat((562,45,"swdev_oo","Object Oriented","Topic :: Software Development :: Object Oriented")) | |
527 | + self.create_trove_cat((409,45,"l10n","L10N (Localization)","Topic :: Software Development :: L10N (Localization)")) | |
528 | + self.create_trove_cat((408,45,"i18n","I18N (Internationalization)","Topic :: Software Development :: I18N (Internationalization)")) | |
529 | + self.create_trove_cat((50,45,"objectbrokering","Object Brokering","Topic :: Software Development :: Object Brokering")) | |
530 | + self.create_trove_cat((51,50,"corba","CORBA","Topic :: Software Development :: Object Brokering :: CORBA")) | |
531 | + self.create_trove_cat((52,45,"versioncontrol","Version Control","Topic :: Software Development :: Version Control")) | |
532 | + self.create_trove_cat((53,52,"cvs","CVS","Topic :: Software Development :: Version Control :: CVS")) | |
533 | + self.create_trove_cat((54,52,"rcs","RCS","Topic :: Software Development :: Version Control :: RCS")) | |
534 | + self.create_trove_cat((260,52,"SCCS","SCCS","Topic :: Software Development :: Version Control :: SCCS")) | |
535 | + self.create_trove_cat((259,45,"codegen","Code Generators","Topic :: Software Development :: Code Generators")) | |
536 | + self.create_trove_cat((47,45,"debuggers","Debuggers","Topic :: Software Development :: Debuggers")) | |
537 | + self.create_trove_cat((48,45,"compilers","Compilers","Topic :: Software Development :: Compilers")) | |
538 | + self.create_trove_cat((49,45,"interpreters","Interpreters","Topic :: Software Development :: Interpreters")) | |
539 | + self.create_trove_cat((561,45,"softwaredev_ui","User Interfaces","Topic :: Software Development :: User Interfaces")) | |
540 | + self.create_trove_cat((565,45,"quality_assurance","Quality Assurance","Topic :: Software Development :: Quality Assurance")) | |
541 | + self.create_trove_cat((570,45,"case_tools","CASE","Topic :: Software Development :: CASE")) | |
542 | + self.create_trove_cat((582,45,"design","Design","Topic :: Software Development :: Design")) | |
543 | + self.create_trove_cat((593,45,"cross_compilers","Cross Compilers","Topic :: Software Development :: Cross Compilers")) | |
544 | + self.create_trove_cat((603,45,"profilers","Profiling","Topic :: Software Development :: Profiling")) | |
545 | + self.create_trove_cat((610,45,"virtual_machines","Virtual Machines","Topic :: Software Development :: Virtual Machines")) | |
546 | + self.create_trove_cat((619,45,"usability","Usability","Topic :: Software Development :: Usability")) | |
547 | + self.create_trove_cat((581,71,"library","Library","Topic :: Education :: Library")) | |
548 | + self.create_trove_cat((604,581,"opac","OPAC","Topic :: Education :: Library :: OPAC")) | |
549 | + self.create_trove_cat((605,581,"marc_and_metadata","MARC and Book/Library Metadata","Topic :: Education :: Library :: MARC and Book/Library Metadata")) | |
550 | + self.create_trove_cat((132,18,"religion","Religion and Philosophy","Topic :: Religion and Philosophy")) | |
551 | + self.create_trove_cat((571,132,"new_age","New Age","Topic :: Religion and Philosophy :: New Age")) | |
552 | + self.create_trove_cat((136,18,"system","System","Topic :: System")) | |
553 | + self.create_trove_cat((638,136,"storage","Storage","Topic :: System :: Storage")) | |
554 | + self.create_trove_cat((601,638,"file_management","File Management","Topic :: System :: Storage :: File Management")) | |
555 | + self.create_trove_cat((19,638,"archiving","Archiving","Topic :: System :: Storage :: Archiving")) | |
556 | + self.create_trove_cat((42,19,"compression","Compression","Topic :: System :: Storage :: Archiving :: Compression")) | |
557 | + self.create_trove_cat((137,19,"backup","Backup","Topic :: System :: Storage :: Archiving :: Backup")) | |
558 | + self.create_trove_cat((41,19,"packaging","Packaging","Topic :: System :: Storage :: Archiving :: Packaging")) | |
559 | + self.create_trove_cat((294,136,"shells","System Shells","Topic :: System :: System Shells")) | |
560 | + self.create_trove_cat((74,136,"emulators","Emulators","Topic :: System :: Emulators")) | |
561 | + self.create_trove_cat((627,136,"system_search","Search","Topic :: System :: Search")) | |
562 | + self.create_trove_cat((257,136,"softwaredist","Software Distribution","Topic :: System :: Software Distribution")) | |
563 | + self.create_trove_cat((122,113,"players","Players","Topic :: Multimedia :: Sound/Audio :: Players")) | |
564 | + self.create_trove_cat((253,136,"sysadministration","Systems Administration","Topic :: System :: Systems Administration")) | |
565 | + self.create_trove_cat((289,253,"authentication","Authentication/Directory","Topic :: System :: Systems Administration :: Authentication/Directory")) | |
566 | + self.create_trove_cat((290,289,"nis","NIS","Topic :: System :: Systems Administration :: Authentication/Directory :: NIS")) | |
567 | + self.create_trove_cat((291,289,"ldap","LDAP","Topic :: System :: Systems Administration :: Authentication/Directory :: LDAP")) | |
568 | + self.create_trove_cat((153,136,"power","Power (UPS)","Topic :: System :: Power (UPS)")) | |
569 | + self.create_trove_cat((150,136,"networking","Networking","Topic :: System :: Networking")) | |
570 | + self.create_trove_cat((566,150,"wireless","Wireless","Topic :: System :: Networking :: Wireless")) | |
571 | + self.create_trove_cat((151,150,"firewalls","Firewalls","Topic :: System :: Networking :: Firewalls")) | |
572 | + self.create_trove_cat((152,150,"monitoring","Monitoring","Topic :: System :: Networking :: Monitoring")) | |
573 | + self.create_trove_cat((155,152,"watchdog","Hardware Watchdog","Topic :: System :: Networking :: Monitoring :: Hardware Watchdog")) | |
574 | + self.create_trove_cat((148,136,"logging","Logging","Topic :: System :: Logging")) | |
575 | + self.create_trove_cat((592,148,"log_rotation","Log Rotation","Topic :: System :: Logging :: Log Rotation")) | |
576 | + self.create_trove_cat((144,136,"kernels","Operating System Kernels","Topic :: System :: Operating System Kernels")) | |
577 | + self.create_trove_cat((145,144,"bsd","BSD","Topic :: System :: Operating System Kernels :: BSD")) | |
578 | + self.create_trove_cat((239,144,"gnuhurd","GNU Hurd","Topic :: System :: Operating System Kernels :: GNU Hurd")) | |
579 | + self.create_trove_cat((143,144,"linux","Linux","Topic :: System :: Operating System Kernels :: Linux")) | |
580 | + self.create_trove_cat((147,136,"setup","Installation/Setup","Topic :: System :: Installation/Setup")) | |
581 | + self.create_trove_cat((146,136,"hardware","Hardware","Topic :: System :: Hardware")) | |
582 | + self.create_trove_cat((313,146,"mainframe","Mainframes","Topic :: System :: Hardware :: Mainframes")) | |
583 | + self.create_trove_cat((312,146,"smp","Symmetric Multi-processing","Topic :: System :: Hardware :: Symmetric Multi-processing")) | |
584 | + self.create_trove_cat((292,146,"drivers","Hardware Drivers","Topic :: System :: Hardware :: Hardware Drivers")) | |
585 | + self.create_trove_cat((138,136,"benchmark","Benchmark","Topic :: System :: Benchmark")) | |
586 | + self.create_trove_cat((139,136,"boot","Boot","Topic :: System :: Boot")) | |
587 | + self.create_trove_cat((140,139,"init","Init","Topic :: System :: Boot :: Init")) | |
588 | + self.create_trove_cat((141,136,"clustering","Clustering","Topic :: System :: Clustering")) | |
589 | + self.create_trove_cat((308,136,"distributed_computing","Distributed Computing","Topic :: System :: Distributed Computing")) | |
590 | + self.create_trove_cat((142,136,"filesystems","Filesystems","Topic :: System :: Filesystems")) | |
591 | + self.create_trove_cat((154,18,"printing","Printing","Topic :: Printing")) | |
592 | + self.create_trove_cat((87,18,"internet","Internet","Topic :: Internet")) | |
593 | + self.create_trove_cat((118,116,"cdripping","CD Ripping","Topic :: Multimedia :: Sound/Audio :: CD Audio :: CD Ripping")) | |
594 | + self.create_trove_cat((119,113,"conversion","Conversion","Topic :: Multimedia :: Sound/Audio :: Conversion")) | |
595 | + self.create_trove_cat((120,113,"editors","Editors","Topic :: Multimedia :: Sound/Audio :: Editors")) | |
596 | + self.create_trove_cat((121,113,"mixers","Mixers","Topic :: Multimedia :: Sound/Audio :: Mixers")) | |
597 | + self.create_trove_cat((100,99,"graphics","Graphics","Topic :: Multimedia :: Graphics")) | |
598 | + self.create_trove_cat((109,100,"3dmodeling","3D Modeling","Topic :: Multimedia :: Graphics :: 3D Modeling")) | |
599 | + self.create_trove_cat((110,100,"3drendering","3D Rendering","Topic :: Multimedia :: Graphics :: 3D Rendering")) | |
600 | + self.create_trove_cat((111,100,"presentation","Presentation","Topic :: Multimedia :: Graphics :: Presentation")) | |
601 | + self.create_trove_cat((112,100,"viewers","Viewers","Topic :: Multimedia :: Graphics :: Viewers")) | |
602 | + self.create_trove_cat((101,100,"capture","Capture","Topic :: Multimedia :: Graphics :: Capture")) | |
603 | + self.create_trove_cat((104,101,"screencapture","Screen Capture","Topic :: Multimedia :: Graphics :: Capture :: Screen Capture")) | |
604 | + self.create_trove_cat((103,101,"cameras","Digital Camera","Topic :: Multimedia :: Graphics :: Capture :: Digital Camera")) | |
605 | + self.create_trove_cat((102,101,"scanners","Scanners","Topic :: Multimedia :: Graphics :: Capture :: Scanners")) | |
606 | + self.create_trove_cat((105,100,"conversion","Graphics Conversion","Topic :: Multimedia :: Graphics :: Graphics Conversion")) | |
607 | + self.create_trove_cat((106,100,"editors","Editors","Topic :: Multimedia :: Graphics :: Editors")) | |
608 | + self.create_trove_cat((108,106,"raster","Raster-Based","Topic :: Multimedia :: Graphics :: Editors :: Raster-Based")) | |
609 | + self.create_trove_cat((107,106,"vector","Vector-Based","Topic :: Multimedia :: Graphics :: Editors :: Vector-Based")) | |
610 | + self.create_trove_cat((97,18,"scientific","Scientific/Engineering","Topic :: Scientific/Engineering")) | |
611 | + self.create_trove_cat((609,97,"molecular_science","Molecular Science","Topic :: Scientific/Engineering :: Molecular Science")) | |
612 | + self.create_trove_cat((602,97,"robotics","Robotics","Topic :: Scientific/Engineering :: Robotics")) | |
613 | + self.create_trove_cat((600,97,"simulations","Simulations","Topic :: Scientific/Engineering :: Simulations")) | |
614 | + self.create_trove_cat((568,97,"ecosystem_sciences","Ecosystem Sciences","Topic :: Scientific/Engineering :: Ecosystem Sciences")) | |
615 | + self.create_trove_cat((386,97,"interfaceengine","Interface Engine/Protocol Translator","Topic :: Scientific/Engineering :: Interface Engine/Protocol Translator")) | |
616 | + self.create_trove_cat((384,97,"chemistry","Chemistry","Topic :: Scientific/Engineering :: Chemistry")) | |
617 | + self.create_trove_cat((252,97,"bioinformatics","Bio-Informatics","Topic :: Scientific/Engineering :: Bio-Informatics")) | |
618 | + self.create_trove_cat((246,97,"eda","Electronic Design Automation (EDA)","Topic :: Scientific/Engineering :: Electronic Design Automation (EDA)")) | |
619 | + self.create_trove_cat((135,97,"visualization","Visualization","Topic :: Scientific/Engineering :: Visualization")) | |
620 | + self.create_trove_cat((134,97,"astronomy","Astronomy","Topic :: Scientific/Engineering :: Astronomy")) | |
621 | + self.create_trove_cat((133,97,"ai","Artificial Intelligence","Topic :: Scientific/Engineering :: Artificial Intelligence")) | |
622 | + self.create_trove_cat((591,133,"intelligent_agents","Intelligent Agents","Topic :: Scientific/Engineering :: Artificial Intelligence :: Intelligent Agents")) | |
623 | + self.create_trove_cat((98,97,"mathematics","Mathematics","Topic :: Scientific/Engineering :: Mathematics")) | |
624 | + self.create_trove_cat((272,97,"HMI","Human Machine Interfaces","Topic :: Scientific/Engineering :: Human Machine Interfaces")) | |
625 | + self.create_trove_cat((266,97,"medical","Medical Science Apps.","Topic :: Scientific/Engineering :: Medical Science Apps.")) | |
626 | + self.create_trove_cat((383,97,"gis","GIS","Topic :: Scientific/Engineering :: GIS")) | |
627 | + self.create_trove_cat((385,97,"informationanalysis","Information Analysis","Topic :: Scientific/Engineering :: Information Analysis")) | |
628 | + self.create_trove_cat((387,97,"physics","Physics","Topic :: Scientific/Engineering :: Physics")) | |
629 | + self.create_trove_cat((567,97,"earth_science","Earth Sciences","Topic :: Scientific/Engineering :: Earth Sciences")) | |
630 | + self.create_trove_cat((282,18,"Sociology","Sociology","Topic :: Sociology")) | |
631 | + self.create_trove_cat((284,282,"Genealogy","Genealogy","Topic :: Sociology :: Genealogy")) | |
632 | + self.create_trove_cat((283,282,"History","History","Topic :: Sociology :: History")) | |
633 | + self.create_trove_cat((71,18,"education","Education","Topic :: Education")) | |
634 | + self.create_trove_cat((73,71,"testing","Testing","Topic :: Education :: Testing")) | |
635 | + self.create_trove_cat((72,71,"cai","Computer Aided Instruction (CAI)","Topic :: Education :: Computer Aided Instruction (CAI)")) | |
636 | + self.create_trove_cat((18,0,"topic","Topic","Topic")) | |
637 | + self.create_trove_cat((125,99,"video","Video","Topic :: Multimedia :: Video")) | |
638 | + self.create_trove_cat((594,125,"still_capture","Still Capture","Topic :: Multimedia :: Video :: Still Capture")) | |
639 | + self.create_trove_cat((596,125,"codec","Codec","Topic :: Multimedia :: Video :: Codec")) | |
640 | + self.create_trove_cat((127,125,"conversion","Conversion","Topic :: Multimedia :: Video :: Conversion")) | |
641 | + self.create_trove_cat((128,125,"display","Display","Topic :: Multimedia :: Video :: Display")) | |
642 | + self.create_trove_cat((256,125,"nonlineareditor","Non-Linear Editor","Topic :: Multimedia :: Video :: Non-Linear Editor")) | |
643 | + self.create_trove_cat((595,125,"special_effects","Special Effects","Topic :: Multimedia :: Video :: Special Effects")) | |
644 | + self.create_trove_cat((623,125,"video_realtime","Realtime Processing","Topic :: Multimedia :: Video :: Realtime Processing")) | |
645 | + self.create_trove_cat((126,125,"vidcapture","Video Capture","Topic :: Multimedia :: Video :: Video Capture")) | |
646 | + self.create_trove_cat((113,99,"sound","Sound/Audio","Topic :: Multimedia :: Sound/Audio")) | |
647 | + self.create_trove_cat((123,122,"mp3","MP3","Topic :: Multimedia :: Sound/Audio :: Players :: MP3")) | |
648 | + self.create_trove_cat((124,113,"speech","Speech","Topic :: Multimedia :: Sound/Audio :: Speech")) | |
649 | + self.create_trove_cat((114,113,"analysis","Analysis","Topic :: Multimedia :: Sound/Audio :: Analysis")) | |
650 | + self.create_trove_cat((115,113,"capture","Capture/Recording","Topic :: Multimedia :: Sound/Audio :: Capture/Recording")) | |
651 | + self.create_trove_cat((248,113,"midi","MIDI","Topic :: Multimedia :: Sound/Audio :: MIDI")) | |
652 | + self.create_trove_cat((249,113,"synthesis","Sound Synthesis","Topic :: Multimedia :: Sound/Audio :: Sound Synthesis")) | |
653 | + self.create_trove_cat((116,113,"cdaudio","CD Audio","Topic :: Multimedia :: Sound/Audio :: CD Audio")) | |
654 | + self.create_trove_cat((117,116,"cdplay","CD Playing","Topic :: Multimedia :: Sound/Audio :: CD Audio :: CD Playing")) | |
655 | + self.create_trove_cat((99,18,"multimedia","Multimedia","Topic :: Multimedia")) | |
656 | + session(M.TroveCategory).flush() | |
\ No newline at end of file |
@@ -128,7 +128,8 @@ class AdminApp(Application): | ||
128 | 128 | links += [ |
129 | 129 | SitemapEntry('Metadata', admin_url+'overview', className='nav_child'), |
130 | 130 | SitemapEntry('Homepage', admin_url+'homepage', className='nav_child'), |
131 | - SitemapEntry('Screenshots', admin_url+'screenshots', className='nav_child') | |
131 | + SitemapEntry('Screenshots', admin_url+'screenshots', className='nav_child'), | |
132 | + SitemapEntry('Categorization', admin_url+'trove', className='nav_child') | |
132 | 133 | ] |
133 | 134 | if has_access(c.project, 'admin')(): |
134 | 135 | links.append(SitemapEntry('Permissions', admin_url+'permissions/', className='nav_child')) |
@@ -190,6 +191,14 @@ class ProjectAdminController(BaseController): | ||
190 | 191 | return dict() |
191 | 192 | |
192 | 193 | @without_trailing_slash |
194 | + @expose('jinja:allura.ext.admin:templates/project_trove.html') | |
195 | + def trove(self): | |
196 | + base_troves = M.TroveCategory.query.find(dict(trove_parent_id=0)).sort('fullname').all() | |
197 | + topic_trove = M.TroveCategory.query.get(trove_parent_id=0,shortname='topic') | |
198 | + license_trove = M.TroveCategory.query.get(trove_parent_id=0,shortname='license') | |
199 | + return dict(base_troves=base_troves,license_trove=license_trove,topic_trove=topic_trove) | |
200 | + | |
201 | + @without_trailing_slash | |
193 | 202 | @expose('jinja:allura.ext.admin:templates/project_tools.html') |
194 | 203 | def tools(self, **kw): |
195 | 204 | c.markdown_editor = W.markdown_editor |
@@ -336,6 +345,55 @@ class ProjectAdminController(BaseController): | ||
336 | 345 | g.post_event('project_updated') |
337 | 346 | redirect('homepage') |
338 | 347 | |
348 | + @expose('json:') | |
349 | + def get_trove_children(self, trove_id, **kw): | |
350 | + cats = M.TroveCategory.query.find(dict(trove_parent_id=int(trove_id))).all() | |
351 | + return dict(cats = [dict(id=c.trove_cat_id,label=c.fullname) for c in cats]) | |
352 | + | |
353 | + def _add_trove(self, type, new_trove): | |
354 | + current_troves = getattr(c.project,'trove_%s'%type) | |
355 | + trove_obj = M.TroveCategory.query.get(trove_cat_id=int(new_trove)) | |
356 | + error_msg = None | |
357 | + if type in ['license','audience','developmentstatus','language'] and len(current_troves) >= 6: | |
358 | + error_msg = 'You may not have more than 6 of this category.' | |
359 | + elif type in ['topic'] and len(current_troves) >= 3: | |
360 | + error_msg = 'You may not have more than 3 of this category.' | |
361 | + elif trove_obj is not None: | |
362 | + if trove_obj._id not in current_troves: | |
363 | + current_troves.append(trove_obj._id) | |
364 | + g.post_event('project_updated') | |
365 | + else: | |
366 | + error_msg = 'This category has already been assigned to the project.' | |
367 | + return (trove_obj, error_msg) | |
368 | + | |
369 | + @expose('json:') | |
370 | + @require_post() | |
371 | + def add_trove_js(self, type, new_trove, **kw): | |
372 | + require_access(c.project, 'update') | |
373 | + trove_obj, error_msg = self._add_trove(type, new_trove) | |
374 | + return dict(trove_full_path = trove_obj.fullpath, trove_cat_id = trove_obj.trove_cat_id, error_msg=error_msg) | |
375 | + redirect('trove') | |
376 | + | |
377 | + @expose() | |
378 | + @require_post() | |
379 | + def add_trove(self, type, new_trove, **kw): | |
380 | + require_access(c.project, 'update') | |
381 | + trove_obj, error_msg = self._add_trove(type, new_trove) | |
382 | + if error_msg: | |
383 | + flash(error_msg,'error') | |
384 | + redirect('trove') | |
385 | + | |
386 | + @expose() | |
387 | + @require_post() | |
388 | + def delete_trove(self, type, trove, **kw): | |
389 | + require_access(c.project, 'update') | |
390 | + trove_obj = M.TroveCategory.query.get(trove_cat_id=int(trove)) | |
391 | + current_troves = getattr(c.project,'trove_%s'%type) | |
392 | + if trove_obj is not None and trove_obj._id in current_troves: | |
393 | + current_troves.remove(trove_obj._id) | |
394 | + g.post_event('project_updated') | |
395 | + redirect('trove') | |
396 | + | |
339 | 397 | @expose() |
340 | 398 | @require_post() |
341 | 399 | @validate(W.screenshot_admin) |
@@ -0,0 +1,145 @@ | ||
1 | +{% extends g.theme.master %} | |
2 | + | |
3 | +{% block title %}{{c.project.name}} / Categorization{% endblock %} | |
4 | + | |
5 | +{% block header %}Project Categorization{% endblock %} | |
6 | + | |
7 | +{% macro show_trove_base_cat(base) %} | |
8 | + <h3>{{base.fullname}}</h3> | |
9 | + <div id="trove_existing_{{base.shortname}}" class="trove_existing grid-19"> | |
10 | + {% for cat in c.project.troves_by_type(base.shortname) %} | |
11 | + <div style="clear: both"> | |
12 | + <span class="trove_fullpath">{{cat.fullpath}}</span> | |
13 | + <form action="delete_trove" method="post" class="trove_deleter"> | |
14 | + <input type="hidden" name="type" value="{{base.shortname}}"> | |
15 | + <input type="hidden" name="trove" value="{{cat.trove_cat_id}}"> | |
16 | + <input type="submit" value="Delete"> | |
17 | + </form> | |
18 | + </div> | |
19 | + {% else %} | |
20 | + <span class="empty_msg">No {{base.fullname}} categories have been selected.</span> | |
21 | + {% endfor %} | |
22 | + </div> | |
23 | + <div class="grid-19 trove_add_container"> | |
24 | + <form action="add_trove" method="post" class="trove_adder"> | |
25 | + <input type="hidden" name="type" value="{{base.shortname}}"> | |
26 | + <label for="new_trove_{{base.shortname}}">Add a new {{base.fullname}} category:</label> | |
27 | + <br> | |
28 | + <select name="new_trove" id="new_trove_{{base.shortname}}"> | |
29 | + {% for cat in base.subcategories %} | |
30 | + <option value="{{cat.trove_cat_id}}">{{cat.fullname}}</option> | |
31 | + {% endfor %} | |
32 | + </select> | |
33 | + <br> | |
34 | + <input type="submit" value="Add"> | |
35 | + </form> | |
36 | + </div> | |
37 | +{% endmacro %} | |
38 | + | |
39 | +{% block content %} | |
40 | + {% if c.project.deleted %} | |
41 | + <div class="notice">This project has been deleted and is not visible to non-admin users</div> | |
42 | + {% endif %} | |
43 | + {{show_trove_base_cat(topic_trove)}} | |
44 | + {{show_trove_base_cat(license_trove)}} | |
45 | + {% for base in base_troves if base.shortname != 'topic' and base.shortname != 'license' %} | |
46 | + {{show_trove_base_cat(base)}} | |
47 | + {% endfor %} | |
48 | +{% endblock %} | |
49 | + | |
50 | +{% block extra_js %} | |
51 | + <script type="text/javascript"> | |
52 | + $(document).ready(function () { | |
53 | + var session_id = $('input[name=_session_id]').val(); | |
54 | + var del_btn = '<a href="#" class="del_btn" title="Delete"><b data-icon="{{g.icons["delete"].char}}" class="ico {{g.icons["delete"].css}}"></b></a>'; | |
55 | + var find_sub_cats = function(trove_field){ | |
56 | + var val = trove_field.val(); | |
57 | + trove_field.nextAll().remove(); | |
58 | + trove_field.parent().append('<br><input type="submit" value="Add">'); | |
59 | + if(val){ | |
60 | + $.get('get_trove_children',{'trove_id':val},function(resp){ | |
61 | + if(resp.cats && resp.cats.length){ | |
62 | + var num_subs = trove_field.parent().find('select').length; | |
63 | + var new_select = $('<select style="margin-left:'+1*num_subs+'em"></select>'); | |
64 | + trove_field.after(new_select); | |
65 | + new_select.before('<br>'); | |
66 | + for(var i=0,len=resp.cats.length;i<len;++i){ | |
67 | + new_select.append('<option value="'+resp.cats[i].id+'">'+resp.cats[i].label+'</option>'); | |
68 | + } | |
69 | + find_sub_cats(new_select); | |
70 | + } | |
71 | + }); | |
72 | + } | |
73 | + }; | |
74 | + | |
75 | + $('form.trove_adder select').each(function(){ | |
76 | + find_sub_cats($(this)); | |
77 | + }); | |
78 | + $('form.trove_adder').submit(function(evt){ | |
79 | + evt.preventDefault(); | |
80 | + var $this = $(this); | |
81 | + var type = $this.find('input[name=type]').val(); | |
82 | + var new_id = $this.find('select').last().val(); | |
83 | + $.post('add_trove_js',{ | |
84 | + _session_id:session_id, | |
85 | + type:type, | |
86 | + new_trove:new_id},function(resp){ | |
87 | + if(resp.error_msg){ | |
88 | + $('#messages').notify(resp.error_msg, { | |
89 | + title: 'Error', | |
90 | + status: 'error' | |
91 | + }); | |
92 | + } | |
93 | + else{ | |
94 | + $('#trove_existing_'+type).find('span.empty_msg').remove(); | |
95 | + $('#trove_existing_'+type).prepend('<div><span class="trove_fullpath">'+resp.trove_full_path+'</span> <form class="trove_deleter"><input type="hidden" name="type" value="'+type+'"><input type="hidden" name="trove" value="'+new_id+'">'+del_btn+'</form></div>'); | |
96 | + } | |
97 | + }); | |
98 | + }).delegate("select", "change", function(){ | |
99 | + find_sub_cats($(this)); | |
100 | + }); | |
101 | + $('form.trove_deleter').each(function(){ | |
102 | + $(this).find('input[type="submit"]').remove(); | |
103 | + $(this).append($(del_btn)); | |
104 | + }); | |
105 | + $('div.trove_existing').delegate("a.del_btn", "click", function(evt){ | |
106 | + evt.preventDefault(); | |
107 | + var $form = $(this).closest('form'); | |
108 | + var type = $form.find('input[name="type"]').val(); | |
109 | + $.post('delete_trove',{ | |
110 | + _session_id:session_id, | |
111 | + type:type, | |
112 | + trove:$form.find('input[name="trove"]').val()},function(){ | |
113 | + $form.closest('div').remove(); | |
114 | + var holder = $('#trove_existing_'+type); | |
115 | + if(!holder.find('div').length){ | |
116 | + holder.append('<span class="empty_msg">No categories have been selected.</span>') | |
117 | + } | |
118 | + }); | |
119 | + }); | |
120 | + }); | |
121 | + </script> | |
122 | +{% endblock %} | |
123 | + | |
124 | +{% block extra_css %} | |
125 | + <style type="text/css"> | |
126 | + .trove_deleter{ | |
127 | + display:inline; | |
128 | + } | |
129 | + .trove_deleter input[type="submit"]{ | |
130 | + float:none; | |
131 | + } | |
132 | + .trove_fullpath{ | |
133 | + vertical-align:middle; | |
134 | + } | |
135 | + .trove_existing{ | |
136 | + margin-bottom: 1em; | |
137 | + } | |
138 | + .trove_add_container{ | |
139 | + margin-bottom: 1em; | |
140 | + padding-bottom: 1em; | |
141 | + border: 0 solid #ccc; | |
142 | + border-width: 0 0 1px 0; | |
143 | + } | |
144 | + </style> | |
145 | +{% endblock %} | |
\ No newline at end of file |
@@ -2,7 +2,7 @@ | ||
2 | 2 | """The application's model objects""" |
3 | 3 | |
4 | 4 | from .neighborhood import Neighborhood, NeighborhoodFile |
5 | -from .project import Project, ProjectCategory, ProjectFile, AppConfig | |
5 | +from .project import Project, ProjectCategory, TroveCategory, ProjectFile, AppConfig | |
6 | 6 | from .index import ArtifactReference, Shortlink |
7 | 7 | from .artifact import Artifact, Message, VersionedArtifact, Snapshot, Feed, AwardFile, Award, AwardGrant |
8 | 8 | from .discuss import Discussion, Thread, PostHistory, Post, DiscussionAttachment |
@@ -56,6 +56,27 @@ class ProjectCategory(MappedClass): | ||
56 | 56 | def subcategories(self): |
57 | 57 | return self.query.find(dict(parent_id=self._id)).all() |
58 | 58 | |
59 | +class TroveCategory(MappedClass): | |
60 | + class __mongometa__: | |
61 | + session = main_orm_session | |
62 | + name='trove_category' | |
63 | + indexes = [ 'trove_cat_id', 'trove_parent_id' ] | |
64 | + | |
65 | + _id=FieldProperty(S.ObjectId) | |
66 | + trove_cat_id = FieldProperty(int, if_missing=None) | |
67 | + trove_parent_id = FieldProperty(int, if_missing=None) | |
68 | + shortname = FieldProperty(str, if_missing='') | |
69 | + fullname = FieldProperty(str, if_missing='') | |
70 | + fullpath = FieldProperty(str, if_missing='') | |
71 | + | |
72 | + @property | |
73 | + def parent_category(self): | |
74 | + return self.query.get(trove_cat_id=self.trove_parent_id) | |
75 | + | |
76 | + @property | |
77 | + def subcategories(self): | |
78 | + return self.query.find(dict(trove_parent_id=self.trove_cat_id)).sort('fullname').all() | |
79 | + | |
59 | 80 | class Project(MappedClass): |
60 | 81 | _perms_base = [ 'read', 'update', 'admin', 'create'] |
61 | 82 | _perms_init = _perms_base + [ 'register' ] |
@@ -100,6 +121,15 @@ class Project(MappedClass): | ||
100 | 121 | ordinal = FieldProperty(int, if_missing=0) |
101 | 122 | database_configured = FieldProperty(bool, if_missing=True) |
102 | 123 | _extra_tool_status = FieldProperty([str]) |
124 | + trove_root_database=FieldProperty([S.ObjectId]) | |
125 | + trove_developmentstatus=FieldProperty([S.ObjectId]) | |
126 | + trove_audience=FieldProperty([S.ObjectId]) | |
127 | + trove_license=FieldProperty([S.ObjectId]) | |
128 | + trove_os=FieldProperty([S.ObjectId]) | |
129 | + trove_language=FieldProperty([S.ObjectId]) | |
130 | + trove_topic=FieldProperty([S.ObjectId]) | |
131 | + trove_natlanguage=FieldProperty([S.ObjectId]) | |
132 | + trove_environment=FieldProperty([S.ObjectId]) | |
103 | 133 | |
104 | 134 | @property |
105 | 135 | def permissions(self): |
@@ -138,6 +168,9 @@ class Project(MappedClass): | ||
138 | 168 | for p in sps ] |
139 | 169 | return result |
140 | 170 | |
171 | + def troves_by_type(self, trove_type): | |
172 | + return TroveCategory.query.find({'_id':{'$in':getattr(self,'trove_%s' % trove_type)}}).all() | |
173 | + | |
141 | 174 | def get_tool_data(self, tool, key, default=None): |
142 | 175 | return self.tool_data.get(tool, {}).get(key, None) |
143 | 176 |
@@ -226,6 +226,23 @@ class TestProjectAdmin(TestController): | ||
226 | 226 | assert r.html.find('input',{'name':'removal','value':''}).has_key('checked') |
227 | 227 | assert not r.html.find('input',{'name':'removal','value':'deleted'}).has_key('checked') |
228 | 228 | |
229 | + def test_add_remove_trove_cat(self): | |
230 | + r = self.app.get('/admin/trove') | |
231 | + assert 'No Database Environment categories have been selected.' in r | |
232 | + assert '<span class="trove_fullpath">Database Environment :: Database API</span>' not in r | |
233 | + # add a cat | |
234 | + form = r.forms[0] | |
235 | + form['new_trove'].value = '499' | |
236 | + r = form.submit().follow() | |
237 | + # make sure it worked | |
238 | + assert 'No Database Environment categories have been selected.' not in r | |
239 | + assert '<span class="trove_fullpath">Database Environment :: Database API</span>' in r | |
240 | + # delete the cat | |
241 | + r = r.forms[0].submit().follow() | |
242 | + # make sure it worked | |
243 | + assert 'No Database Environment categories have been selected.' in r | |
244 | + assert '<span class="trove_fullpath">Database Environment :: Database API</span>' not in r | |
245 | + | |
229 | 246 | def test_project_homepage(self): |
230 | 247 | r = self.app.get('/admin/homepage') |
231 | 248 | assert 'Awesome description' not in r |
@@ -22,6 +22,7 @@ from allura.lib import plugin | ||
22 | 22 | from allura import model as M |
23 | 23 | from allura.websetup import schema |
24 | 24 | from allura.command import EnsureIndexCommand |
25 | +from allura.command import CreateTroveCategoriesCommand | |
25 | 26 | |
26 | 27 | log = logging.getLogger(__name__) |
27 | 28 |
@@ -186,6 +187,7 @@ def bootstrap(command, conf, vars): | ||
186 | 187 | def wipe_database(): |
187 | 188 | conn = M.main_doc_session.bind.conn |
188 | 189 | flyway = MigrateCommand('flyway') |
190 | + create_trove_categories = CreateTroveCategoriesCommand('create_trove_categories') | |
189 | 191 | index = EnsureIndexCommand('ensure_index') |
190 | 192 | if isinstance(conn, mim.Connection): |
191 | 193 | clear_all_database_tables() |
@@ -205,9 +207,11 @@ def wipe_database(): | ||
205 | 207 | pass |
206 | 208 | # Run flyway |
207 | 209 | flyway.run(['--force', '-u', 'mongodb://%s:%s/' % (conn.host, conn.port)]) |
210 | + create_trove_categories.run([]) | |
208 | 211 | index.run([]) |
209 | 212 | |
210 | 213 | |
214 | + | |
211 | 215 | def clear_all_database_tables(): |
212 | 216 | conn = M.main_doc_session.bind.conn |
213 | 217 | for db in conn.database_names(): |
@@ -117,6 +117,7 @@ setup( | ||
117 | 117 | set-tool-access = allura.command:SetToolAccessCommand |
118 | 118 | smtp_server=allura.command:SMTPServerCommand |
119 | 119 | create-neighborhood = allura.command:CreateNeighborhoodCommand |
120 | + create-trove-categories = allura.command:CreateTroveCategoriesCommand | |
120 | 121 | |
121 | 122 | [easy_widgets.resources] |
122 | 123 | ew_resources=allura.config.resources:register_ew_resources |