Commit graph

2180 commits

Author SHA1 Message Date
yackob03
64cbc735fb 403s on pulls have to be 404s for now. 2013-11-11 17:11:21 -05:00
yackob03
3187539509 Catch an error when trying to generate an access token. 2013-11-11 17:01:21 -05:00
yackob03
2e9f7cd19d Restore the temp_store_handler. 2013-11-11 16:41:33 -05:00
yackob03
e6926b62be Actually use the namesapce rather than the literal word namespace, doh 2013-11-11 16:31:56 -05:00
yackob03
18809842b8 Fix a typo in the index code and follow some pylint recommendations. 2013-11-11 16:28:05 -05:00
yackob03
1f1565fdaa Fix the bug where trying to unsubscribe a customer with no subscription throws an error. 2013-11-11 11:58:30 -05:00
Joseph Schorr
68e1658849 Add automatic email loading to the stripe dialog 2013-11-08 17:50:42 -05:00
Joseph Schorr
8f5710afe5 Merge branch 'orgs' of https://bitbucket.org/yackob03/quay into orgs 2013-11-07 23:36:19 -05:00
Joseph Schorr
be0fba276f Bug fixes:
- Report proper errors when trying to change permissions
  - Turn off the auto-caps of the team names
  - Fix the is_org_member checks everywhere
  - Fix resetting of roles if the change was not successful
2013-11-07 23:35:27 -05:00
yackob03
5fe1a6806e Fix the team results for the entities query. 2013-11-07 23:35:20 -05:00
yackob03
9f1bf1499d Merge branch 'orgs' of ssh://bitbucket.org/yackob03/quay into orgs
Conflicts:
	static/partials/new-organization.html
2013-11-07 22:47:27 -05:00
yackob03
d524559bce Fix the repo search to include repos that you get through a team and repos for which you have admin on the org. 2013-11-07 22:44:18 -05:00
Joseph Schorr
fe69ba5ec1 - Fix a bug with subscribing in the new repo view
- Have conversion to organization update its plan to a business plan
- Fix bug in the repo donut usage graph thingy where it had zero size when not in the default tab
2013-11-07 22:08:23 -05:00
yackob03
71f7320532 Merge branch 'orgs' of ssh://bitbucket.org/yackob03/quay into orgs 2013-11-07 17:11:10 -05:00
yackob03
05ccd4e793 Make some responses from the index api more appropriate. 2013-11-07 17:09:47 -05:00
yackob03
603ad53f6a Fix some bugs in the tags registry api. 2013-11-07 17:09:15 -05:00
Joseph Schorr
3f2d51651e Start on organization conversion. Note that this does not yet move over the user's plan to an org plan 2013-11-07 16:33:56 -05:00
Joseph Schorr
d45de5a8dd required_json_args is gone 2013-11-07 15:22:15 -05:00
Joseph Schorr
5858ba0ee0 Merge branch 'orgs' of https://bitbucket.org/yackob03/quay into orgs 2013-11-07 15:19:57 -05:00
Joseph Schorr
44f1ff0ef1 Add ability to create a new organization 2013-11-07 15:19:52 -05:00
yackob03
2663a534d7 Merge branch 'orgs' of ssh://bitbucket.org/yackob03/quay into orgs 2013-11-07 12:55:35 -05:00
yackob03
ff7cd2f0a5 Subtle tweaks to the api and a fix for one bug where teams could be added to repository permissions through the API even if they were not part of the org. 2013-11-07 12:54:21 -05:00
Joseph Schorr
70c02eae16 Work in progress: Organizations page (with a fake tour) and start on the locations for the create new org and convert to org forms 2013-11-07 01:48:58 -05:00
Joseph Schorr
0c4dec6de4 - Fix namespace drop down to save the namespace last selected (and validate)
- Add a "can_create_repo" entry to the organization and have orgs grayed out in the new repo view if the user cannot create a repo
- Fix the multiple-orgs bug in the model
- Have the "create new repository" button disappear on landing if the org is selected and the user does not have create permissions for that org
2013-11-07 00:49:13 -05:00
yackob03
babc6fa867 We were asking for too many parameters for changing the plan, token is not always necessary. 2013-11-06 23:35:37 -05:00
yackob03
2b0f3a9ba7 Merge branch 'orgs' of ssh://bitbucket.org/yackob03/quay into orgs 2013-11-06 23:22:02 -05:00
yackob03
2cd98fc58e Make the app config more powerful in terms of injecting fake dependencies. Refactor the tests to use metaclasses and to actually all run. 2013-11-06 23:21:12 -05:00
Joseph Schorr
56f777448a Add the members tab to the org admin 2013-11-06 19:06:59 -05:00
yackob03
2a849f631b Add the next batch of tests and fixes. 2013-11-06 17:56:31 -05:00
yackob03
db59b5bf9c Add some tests to verify we're not leaking anything to completely public users (we're not) 2013-11-06 17:09:22 -05:00
Joseph Schorr
934acce6d4 Fix bug around free business plan and verify that a plan requested is in the correct set 2013-11-06 14:48:59 -05:00
Joseph Schorr
e356a10378 Add support for org-based subscriptions 2013-11-06 14:19:56 -05:00
yackob03
e3a3ce0f80 Prevent the user from revoking their own admin privileges. 2013-11-05 18:37:28 -05:00
Joseph Schorr
91806ee252 Merge branch 'orgs' of https://bitbucket.org/yackob03/quay into orgs 2013-11-05 17:20:56 -05:00
Joseph Schorr
237614dcef Finish up create team 2013-11-05 17:20:43 -05:00
yackob03
a1476b32ea Fix the problem where users in normal repos are marked as outside of the organization. 2013-11-05 17:10:14 -05:00
yackob03
427ffea6b7 Fill in the remove team methods. 2013-11-05 15:50:56 -05:00
Joseph Schorr
d2601c6fe4 Merge branch 'orgs' of https://bitbucket.org/yackob03/quay into orgs
Conflicts:
	endpoints/api.py
2013-11-05 15:16:20 -05:00
yackob03
296695cb87 Fix the call that determines if an organization has enough private repositories. 2013-11-05 14:55:05 -05:00
Joseph Schorr
1f44166311 Wire up delete team UI 2013-11-05 14:53:48 -05:00
yackob03
b11ab44285 Add the business plans in. 2013-11-05 14:40:45 -05:00
Joseph Schorr
1cd4fa8d9b Add team permissions support 2013-11-04 22:58:21 -05:00
Joseph Schorr
97fa69a361 Add ability to display and edit the team's description 2013-11-04 20:17:58 -05:00
Joseph Schorr
96730965cd Merge branch 'orgs' of https://bitbucket.org/yackob03/quay into orgs 2013-11-04 19:11:17 -05:00
Joseph Schorr
e70f863350 Work in progress: Continue on org view 2013-11-04 19:11:13 -05:00
yackob03
c1b246c3b5 Remove a TODO and make sure a user is part of an org to get access to typeahead information for an org. 2013-11-04 19:11:01 -05:00
yackob03
6aeac247fa Teams are part of organizations. 2013-11-04 19:06:56 -05:00
yackob03
5838e1bc07 Fix a merge error in create_repo_api. 2013-11-04 19:01:58 -05:00
yackob03
3a11ea4229 Made a stupid assumption about when users belonged to an organization, now paying for my terrible ways. 2013-11-04 18:52:38 -05:00
Joseph Schorr
b56bb92801 Work in progress: Continue on org view 2013-11-04 16:51:25 -05:00
Joseph Schorr
17a07ea6e0 Merge branch 'orgs' of https://bitbucket.org/yackob03/quay into orgs 2013-11-04 16:44:35 -05:00
yackob03
7991c3eff8 Remove an old todo since we are actually handling the case. 2013-11-04 16:44:51 -05:00
Joseph Schorr
ba7360f2a9 Work in progress: Start on org view 2013-11-04 16:39:29 -05:00
Joseph Schorr
0175bd91bf Merge branch 'orgs' of https://bitbucket.org/yackob03/quay into orgs 2013-11-04 16:25:54 -05:00
Joseph Schorr
61e9b1629d Work in progress: Start on org view and finish up the team members view 2013-11-04 16:21:49 -05:00
yackob03
2eb7ff2442 Add a bunch of the missing permissions from the API. 2013-11-04 16:18:40 -05:00
yackob03
ad4e227aff Merge branch 'orgs' of ssh://bitbucket.org/yackob03/quay into orgs
Conflicts:
	data/model.py
	endpoints/api.py
	test/data/test.db
2013-11-04 15:47:27 -05:00
yackob03
dd77ebd64f Next batch of backend permissions for orgs. 2013-11-04 15:42:08 -05:00
Joseph Schorr
e6fadbca05 Add ability to change the members of a team 2013-11-04 15:31:38 -05:00
Joseph Schorr
633f603f9d Merge branch 'master' into orgs
Conflicts:
	endpoints/api.py
	static/partials/new-repo.html
2013-11-04 14:59:00 -05:00
Joseph Schorr
ecbd1f1ef3 Work in progress: Add the team management page 2013-11-04 14:56:54 -05:00
Joseph Schorr
100ec563fa - Add an entity-search directive for adding a nice search box for users or teams
- Add support for team-based permissions to the repos
2013-11-01 21:48:10 -04:00
Joseph Schorr
09afe0753f Merge branch 'orgs' of https://bitbucket.org/yackob03/quay into orgs 2013-11-01 19:34:56 -04:00
yackob03
1aaefe6053 Merge branch 'orgs' of ssh://bitbucket.org/yackob03/quay into orgs
Conflicts:
	data/model.py
2013-11-01 19:34:58 -04:00
Joseph Schorr
5ed85cf833 Work in progress: Start on marking user permissions on whether they are inside or outside the repo's org 2013-11-01 19:34:46 -04:00
yackob03
4c0f987af3 Flesh out some of the organization methods and fix the models. 2013-11-01 19:34:17 -04:00
Joseph Schorr
9fa77aaa48 Add proper messaging if an organization has gone over the repo limit. This change also moves plan information into the server 2013-11-01 19:13:58 -04:00
Joseph Schorr
1f0b142535 Add a namespace selector for choosing the namespace in the new repo view 2013-11-01 17:35:26 -04:00
Joseph Schorr
d7148b1711 Start on controllers and the API for organizations. Also adds fake model methods 2013-10-31 18:17:26 -04:00
Joseph Schorr
c3b10c12bb Add check for existing repo with the same name 2013-10-31 15:04:07 -04:00
Joseph Schorr
dbbec5a853 Fix description handling in new repo view 2013-10-29 20:21:18 -04:00
yackob03
78d6c9d9a3 Just use the current server as the registry server, this will work for all externally available addresses. 2013-10-29 16:11:54 -04:00
yackob03
d7f51fb764 Bug fixes and associated changes involved with spinning up build nodes and sending jobs to them. 2013-10-27 19:06:20 -04:00
yackob03
3026f83c2c Remove the test build starter as it no longer works. 2013-10-27 16:01:14 -04:00
yackob03
0ff19d5401 Filter the inactive builds when computing the is_building flag. 2013-10-27 16:00:44 -04:00
yackob03
b1a5b9c343 Fix CORS s3 upload. 2013-10-26 18:37:53 -04:00
yackob03
c276bce177 Merge branch 'dockerbuild' of ssh://bitbucket.org/yackob03/quay into dockerbuild 2013-10-26 17:41:32 -04:00
yackob03
be035637f6 Require API login for the build APIs. 2013-10-26 17:41:29 -04:00
Joseph Schorr
28f6ff1605 Get file dropping working and wire it up to call the build repo endpoint 2013-10-26 17:20:59 -04:00
Joseph Schorr
fc6e3258a8 Work in progress: Add the UI for the build status and start on the file drop stuff 2013-10-26 16:03:11 -04:00
yackob03
78d2d6cad0 Add a test endpoint that allows us to manually create builds. Add access tokens to the build data. 2013-10-25 18:17:43 -04:00
yackob03
684ce83058 Add a test api to test repositories which are currenlty building. 2013-10-25 15:47:34 -04:00
yackob03
ffc33e454c Fixes and refinements to the dockerfile build system. 2013-10-25 15:13:11 -04:00
yackob03
9b9a29c310 Flesh out the create API and wire everything up together. Next up, testing. 2013-10-25 01:14:38 -04:00
Joseph Schorr
70fd9afb2b Start on new repo page 2013-10-24 17:41:55 -04:00
Joseph Schorr
d51ab5952b - Add a repo-circle directive and change all repo icons uses to it
- Have the repo-circle directive show the padlock in all places
- Mention SSL on the landing page and the pricing page
2013-10-22 01:26:14 -04:00
yackob03
cf1b545dee Marisa trie needs a real file to read from a stream, use the bytes version instead. 2013-10-20 02:39:45 -04:00
yackob03
13b457c440 Add caching to the changes api since it is so expensive and can return large results. 2013-10-20 01:18:31 -04:00
Joseph Schorr
0afea3a779 Add the image view page with the changes view, filterable by typing into a field. Still needs pagination or some other mechanism for getting an overview 2013-10-18 22:28:46 -04:00
yackob03
4679b0dfcc Fix bugs and clean up data in the way diffs are generated. 2013-10-18 20:19:05 -04:00
yackob03
2fcd8df42b Get the worker and the registry playing nice together. 2013-10-18 17:27:09 -04:00
yackob03
63ffa52245 Make the diffs absolute and sort them. 2013-10-18 17:05:51 -04:00
yackob03
a1164269be Complete the diff generating functionality. 2013-10-18 14:31:14 -04:00
yackob03
5e43cba0f5 Merge branch 'master' of ssh://bitbucket.org/yackob03/quay into diffs 2013-10-17 18:25:44 -04:00
yackob03
93b856bdb3 First few changes for the image diffs feature. 2013-10-17 18:25:19 -04:00
Joseph Schorr
e382fa1e58 Add a status page to /v1/ so that people don't get confused by the message that docker emits 2013-10-17 17:45:08 -04:00
yackob03
283f9b81ae First stab at token auth. The UI could use a little bit of polishing. 2013-10-16 14:24:10 -04:00
yackob03
f1746417b1 Make the image delete recursive to remove any tags which depend on it. 2013-10-15 22:10:53 -04:00
yackob03
449c0b0d46 Add a rule for the base repository route too to serve the index page. 2013-10-15 21:50:14 -04:00
yackob03
053ae056ce Fix logins. 2013-10-15 17:49:03 -04:00
yackob03
984e14f9c5 Fix a bug where images can't be pushed that would remove a dependency image. 2013-10-15 16:13:10 -04:00
yackob03
1af0cb3341 Fix indentation on the StreamReader. 2013-10-15 16:12:53 -04:00
yackob03
959016a6eb Remove unnecessary calls to the database for user and permission metadata. 2013-10-15 14:48:49 -04:00
yackob03
13298be5d3 Move the register code for github login to the actual registration part, not just login. 2013-10-15 01:12:23 -04:00
yackob03
4c15072c5a Move signin to use AJAX. Render all flask templates with the common header. Move the header to a partial. Add account recovery. 2013-10-14 17:50:07 -04:00
yackob03
e3db0398ce Add routes specifically for all angular subroutes so that 404s will start working again. Add a warning in app.js to hopefully ensure that new routes get created when necessary. 2013-10-13 22:06:31 -04:00
yackob03
ce81431cd3 Enable HTML5 mode for routing. 2013-10-10 19:06:04 -04:00
yackob03
32b28df2d2 Send a registration even for github created users. Alias their new username to their old mixpanel ID passed in the OAuth state parameter. 2013-10-10 17:32:32 -04:00
yackob03
16ee147eae Add a form for changing the password and prompt the user to do so when there is no password on the account. 2013-10-10 13:44:34 -04:00
yackob03
87ff939ad2 Handle some of the error cases with github login. 2013-10-10 12:55:03 -04:00
Joseph Schorr
b924fa5336 Merge branch 'master' of https://bitbucket.org/yackob03/quay 2013-10-10 00:40:30 -04:00
yackob03
392307a937 Add a repository view with all images that has the list of tags for each image. 2013-10-10 00:40:25 -04:00
Joseph Schorr
9f094af1b2 Begin work on an image history tree view 2013-10-10 00:40:18 -04:00
yackob03
3d89227752 First iteration of sign-in with gihub. 2013-10-09 23:00:34 -04:00
yackob03
6a038bb24e PEP8 fixes. 2013-10-08 11:29:42 -04:00
yackob03
3eca5f65e1 Add a visible free plan. Tweak the plans and pricing page. Move all plans to a central plans service to have a single point for editing. Support the free plan on the user admin page. Tweak the landing page. 2013-10-04 14:35:51 -04:00
yackob03
8d40f12165 Fix a bug with anonymous pull. 2013-10-03 19:18:03 -04:00
yackob03
00b8244661 Add analytics on push and pull repo events in the backend. 2013-10-03 16:19:01 -04:00
yackob03
e90f9b37d4 Merge branch 'master' of ssh://bitbucket.org/yackob03/quay
Conflicts:
	endpoints/api.py
2013-10-02 16:35:18 -04:00
Joseph Schorr
c2e9a766f7 Make the account settings view a tiny bit nicer looking 2013-10-02 14:50:02 -04:00
yackob03
504bc7e04e Add a status endpoint that we can use to test if the instance is serving traffic. 2013-10-02 14:35:21 -04:00
yackob03
70a9e79157 Add extra logging to figure out why checksums don't match in prod. 2013-10-02 14:06:12 -04:00
yackob03
f572749ace Fix a bug in billing dealing with former customers. 2013-10-02 12:43:25 -04:00
yackob03
35c1e6e53b Allow user to unsubscribe and change their plan. 2013-10-02 02:05:53 -04:00
yackob03
c044893ff9 Add some feedback about the number of private repositories used. 2013-10-02 01:40:11 -04:00
yackob03
20765b7e37 Merge branch 'master' of ssh://bitbucket.org/yackob03/quay
Conflicts:
	static/js/app.js
2013-10-02 00:48:48 -04:00
yackob03
7bd18c1bab Checkpointing stripe work. 2013-10-02 00:48:03 -04:00
Joseph Schorr
927b280f1a Redo the landing page to:
- Show the user's top repos if they have any
  - Show a link to the guide and the repos list if they do not

- Add a getting starting guide
- Redo the repos list to show the user's repos and the top 10 public repos separately
2013-10-02 00:28:24 -04:00
Joseph Schorr
31914da4ca - Better error messages for sign up
- Show a throbber while working on sign up
- Have the front page redirect to the repositories view when logged in
2013-10-01 22:13:43 -04:00
yackob03
211fd6bcd7 Merge branch 'master' of ssh://bitbucket.org/yackob03/quay
Conflicts:
	static/js/controllers.js
2013-10-01 19:39:28 -04:00
yackob03
0d6d463fc1 Allow a user to register from the landing page. Fix spacing issues. 2013-10-01 19:37:33 -04:00
Joseph Schorr
b1ec63893d Merge branch 'master' of https://bitbucket.org/yackob03/quay 2013-10-01 17:44:21 -04:00
Joseph Schorr
f5798b4364 Add a super basic TOS and privacy policy 2013-10-01 17:44:13 -04:00
yackob03
a7537ba621 Missed some Image.image_id instances. 2013-10-01 17:23:44 -04:00
Joseph Schorr
d09c402675 Add ability to search for repos by their full path 2013-10-01 17:02:49 -04:00
yackob03
540815b943 Revert "Try moving the redirect to the app layer."
This reverts commit 0cba17efe3.
2013-10-01 16:54:05 -04:00
yackob03
0cba17efe3 Try moving the redirect to the app layer. 2013-10-01 16:48:19 -04:00
yackob03
a713555915 Notify the user when their account needs verification. 2013-10-01 15:43:16 -04:00
yackob03
cbe0590ce5 Fix s3 delete. 2013-10-01 14:46:44 -04:00
yackob03
96896b9067 Rename Image.image_id to Image.docker_image_id to reduce confusion. 2013-10-01 14:14:39 -04:00
yackob03
4746f9c324 Quick fix for the signin page, we should consider moving it over to AJAX though. 2013-10-01 13:48:37 -04:00
yackob03
f5e121d98d Fix user login from the command line. 2013-10-01 12:25:06 -04:00
yackob03
4b9c6d9aae Add api function to fully delete a repository. 2013-10-01 12:13:25 -04:00
yackob03
891f992bf2 Allow for anonymous access tokens for public repositories. 2013-10-01 01:18:05 -04:00
yackob03
6148a59b38 Merge branch 'master' of ssh://bitbucket.org/yackob03/quay
Conflicts:
	endpoints/api.py
2013-09-30 17:54:06 -04:00
yackob03
cb3d3a9a9a Add a special api_login_required which does not generate the signin redirect. 2013-09-30 17:51:07 -04:00
Joseph Schorr
e4653cd7cf Merge branch 'master' of https://bitbucket.org/yackob03/quay 2013-09-30 17:33:14 -04:00
Joseph Schorr
294d02a595 Fix public browsing 2013-09-30 17:32:03 -04:00
yackob03
b0720aac1c Update to support running on elasticbeanstalk. 2013-09-30 16:14:48 -04:00
yackob03
ea6df2b725 Add image ancestry and update the test db accordingly. 2013-09-30 15:30:00 -04:00
yackob03
abdf731f7a Combine the registry and index processes. 2013-09-30 14:39:10 -04:00
Joseph Schorr
4382ebfd20 Add ability to change the visibility of a repo, and show whether the repo is private in the repo-view screen 2013-09-28 17:11:10 -04:00
yackob03
b718dbc6e3 Full add public repository support. 2013-09-28 00:05:32 -04:00
yackob03
540dfd5343 Switch the search to use SQL query. 2013-09-27 23:25:57 -04:00
yackob03
a0adffdc8e PEP8 fixes. 2013-09-27 20:03:07 -04:00
yackob03
32581c0621 Handle the confirmation codes to validate user emails. 2013-09-27 19:55:04 -04:00
yackob03
5508402bb7 Merge branch 'master' of ssh://bitbucket.org/yackob03/quay 2013-09-27 19:29:05 -04:00
yackob03
99341f7d53 Send a confirmation email when an account is created. Links don't do anything yet. 2013-09-27 19:29:01 -04:00
Joseph Schorr
038e9afc97 Merge branch 'master' of https://bitbucket.org/yackob03/quay 2013-09-27 19:24:30 -04:00
Joseph Schorr
edaad6eea2 Add repo autocomplete for searching. 2013-09-27 19:21:54 -04:00
yackob03
87dc3b6344 Add checks for username and passwords, move checks to model. 2013-09-27 18:38:41 -04:00
yackob03
1574be3c07 Make sure usernames and emails are unique and message is sent to user. 2013-09-27 18:16:26 -04:00
yackob03
730f4f2d66 Update landing page to use gravatar. 2013-09-27 18:15:31 -04:00
Joseph Schorr
bf926aceee Get the tabs working and the UI for the image history. Note that the model changes for the image history are WRONG and need to be fixed 2013-09-27 17:01:45 -04:00
yackob03
53f2a31547 Fix some bugs with the permissions API. Prevent the user from removing themelves as admin. 2013-09-27 15:53:39 -04:00
yackob03
98dc20542c Merge branch 'master' of ssh://bitbucket.org/yackob03/quay
Conflicts:
	endpoints/api.py
2013-09-27 14:57:03 -04:00
yackob03
1883014ad9 Flesh out the API for managing permissions. 2013-09-27 14:56:14 -04:00
Joseph Schorr
685479da7b Slightly better repo list screen 2013-09-27 13:49:50 -04:00
yackob03
6bcb5cfcaa Flesh out some permissions APIs. 2013-09-27 13:24:07 -04:00
yackob03
539275d04e Add sign in and sign out. 2013-09-26 20:18:36 -04:00
yackob03
2f98c95d21 Add a user service and load the user information dynamically from the backend. 2013-09-26 19:59:58 -04:00
Joseph Schorr
2e476625de Merge and add tag descriptions for the latest image 2013-09-26 18:10:09 -04:00
Joseph Schorr
27ce5c00b2 Start on UI for Quay 2013-09-26 17:59:20 -04:00
yackob03
9278871381 Load flask principal permissions even for web and api endpoints. 2013-09-26 16:32:09 -04:00
yackob03
23cbcb2979 Make images belong to one repository only. Add a description field to the repository. Fix a bug with access tokens. Fix an embarrasing bug with multiple select criteria in peewee. Update the test db. 2013-09-26 15:58:11 -04:00
yackob03
5caa54ffb3 Fix a bug with pulls and repeate pushes, add permissions checks to all repository endpoints. 2013-09-26 13:42:24 -04:00
yackob03
44255421df Namespace the storage in the registry to prevent leaking images if one acquires the image id. 2013-09-25 20:00:22 -04:00
yackob03
deee70d53b Add the registry code. 2013-09-25 17:50:03 -04:00
yackob03
08446ef59e Fix some stuff with logins and permissions, add tags to the mode. 2013-09-25 16:46:28 -04:00
yackob03
ee5ea51532 Refactor the code into modules, it was getting unweildy. 2013-09-25 12:45:12 -04:00