Permalink
Browse files

First commit.

- fixed a bug with sorting desc / asc.
- added allocating money for financial suport.
- added PAYMENTS_INCTUCTIONS on how to process payments.
  • Loading branch information...
0 parents commit d9007b6e2762a205d21fd1c768dfc45c5261e47e @alexksikes committed Jun 26, 2009
Showing with 3,379 additions and 0 deletions.
  1. +57 −0 INSTALL
  2. +165 −0 LICENSE
  3. +53 −0 PAYMENTS_INSTRUCTIONS
  4. +6 −0 README
  5. +24 −0 TODO
  6. 0 __init__.py
  7. 0 app/__init__.py
  8. 0 app/controllers/__init__.py
  9. +126 −0 app/controllers/account.py
  10. +78 −0 app/controllers/actions.py
  11. +75 −0 app/controllers/browse.py
  12. +17 −0 app/controllers/public.py
  13. +94 −0 app/controllers/settings.py
  14. +256 −0 app/controllers/submit_application.py
  15. +51 −0 app/controllers/submit_reference.py
  16. 0 app/helpers/__init__.py
  17. +151 −0 app/helpers/email_templates.py
  18. +100 −0 app/helpers/misc.py
  19. +72 −0 app/helpers/paging.py
  20. +68 −0 app/helpers/session.py
  21. +52 −0 app/helpers/utils.py
  22. 0 app/models/__init__.py
  23. +142 −0 app/models/applicants.py
  24. +23 −0 app/models/comments.py
  25. +79 −0 app/models/submissions.py
  26. +34 −0 app/models/users.py
  27. +34 −0 app/models/votes.py
  28. +13 −0 app/tests/test_sessions.py
  29. +63 −0 app/tests/test_uploads.py
  30. +32 −0 app/views/account.html
  31. +245 −0 app/views/applicant.html
  32. +178 −0 app/views/applicants.html
  33. +44 −0 app/views/application_form.html
  34. +34 −0 app/views/application_form_simple.html
  35. +32 −0 app/views/base.html
  36. +14 −0 app/views/help.html
  37. +81 −0 app/views/layout.html
  38. +31 −0 app/views/reference_form.html
  39. +34 −0 app/views/settings.html
  40. +61 −0 application.py
  41. +35 −0 config_example.py
  42. +88 −0 public/css/application_forms.css
  43. +503 −0 public/css/defaults.css
  44. BIN public/img/accept.png
  45. BIN public/img/bullet_add.png
  46. BIN public/img/bullet_delete.png
  47. BIN public/img/bullet_error.png
  48. BIN public/img/cambridge.png
  49. BIN public/img/cancel.png
  50. BIN public/img/comment.png
  51. BIN public/img/comment_add.png
  52. BIN public/img/comments.png
  53. BIN public/img/delete.png
  54. BIN public/img/error.png
  55. BIN public/img/external.png
  56. BIN public/img/favicon.ico
  57. BIN public/img/logo_mini.png
  58. BIN public/img/money.png
  59. BIN public/img/money_add.png
  60. BIN public/img/pencil_add.png
  61. BIN public/img/stars/empty.gif
  62. BIN public/img/stars/empty_small.gif
  63. BIN public/img/stars/full.gif
  64. BIN public/img/stars/full_green.gif
  65. BIN public/img/stars/full_small.gif
  66. BIN public/img/stars/full_small_green.gif
  67. BIN public/img/stars/half.gif
  68. BIN public/img/stars/half_small.gif
  69. BIN public/img/trophy.png
  70. BIN public/img/weather_cloudy.png
  71. +53 −0 public/js/defaults.js
  72. +81 −0 schema.sql
57 INSTALL
@@ -0,0 +1,57 @@
+1) Download the latest tar ball: http://github.com/alexksikes/mlss/tarball/master.
+
+2) tar xvzf "the tar ball"
+
+3) Download install webpy, follow instructions here: http://webpy.org/install.
+
+4) Setup lighttpd, here is a part your config file:
+
+ ...
+
+ name = "mlss_admin"
+ script = "path to ./application.py"
+
+ server.document-root = "path to ./public/"
+
+ # make sure users can access the application forms but not the admin
+ $HTTP["url"] !~ "/(submit_application|submit_reference|css|img|js)/?" {
+ auth.require = ( "" =>
+ (
+ "method" => "digest",
+ "realm" => "Authorized users only",
+ "require" => "valid-user",
+ ))
+ }
+
+ url.rewrite += (
+ # Commented for development
+ #"^/img/(.*)$" => "/img/$1",
+ #"^/css/(.*)$" => "/css/$1",
+ #"^/js/(.*)$" => "/js/$1",
+
+ "^/resumes/(.*)$" => "/resumes/$1",
+ "^/(.*)$" => script + "/$1",
+ )
+
+ fastcgi.server += ( script =>
+ ((
+ "socket" => "/tmp/" + name + var.PID + ".socket",
+ "bin-path" => script,
+ "check-local" => "disable",
+ "max-procs" => 1,
+ "bin-environment" => (
+ "REAL_SCRIPT_NAME" => ""
+ ),
+ ))
+ )
+
+ ...
+
+5) Setup your database: mysql -p mlss < ./schema.sql. Note you first need to create a database called mlss.
+
+6) Make sure lighttpd has write access to the directory ./public/resumes/
+You'd do something like this: sudo chgrp www-data ./public/resumes; chmod 775 ./public/resumes;
+
+7) Go over your site settings ./config_example.py and rename this file ./config.py
+
+8) Restart lighttpd and you're done.
165 LICENSE
@@ -0,0 +1,165 @@
+ GNU LESSER GENERAL PUBLIC LICENSE
+ Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+
+ This version of the GNU Lesser General Public License incorporates
+the terms and conditions of version 3 of the GNU General Public
+License, supplemented by the additional permissions listed below.
+
+ 0. Additional Definitions.
+
+ As used herein, "this License" refers to version 3 of the GNU Lesser
+General Public License, and the "GNU GPL" refers to version 3 of the GNU
+General Public License.
+
+ "The Library" refers to a covered work governed by this License,
+other than an Application or a Combined Work as defined below.
+
+ An "Application" is any work that makes use of an interface provided
+by the Library, but which is not otherwise based on the Library.
+Defining a subclass of a class defined by the Library is deemed a mode
+of using an interface provided by the Library.
+
+ A "Combined Work" is a work produced by combining or linking an
+Application with the Library. The particular version of the Library
+with which the Combined Work was made is also called the "Linked
+Version".
+
+ The "Minimal Corresponding Source" for a Combined Work means the
+Corresponding Source for the Combined Work, excluding any source code
+for portions of the Combined Work that, considered in isolation, are
+based on the Application, and not on the Linked Version.
+
+ The "Corresponding Application Code" for a Combined Work means the
+object code and/or source code for the Application, including any data
+and utility programs needed for reproducing the Combined Work from the
+Application, but excluding the System Libraries of the Combined Work.
+
+ 1. Exception to Section 3 of the GNU GPL.
+
+ You may convey a covered work under sections 3 and 4 of this License
+without being bound by section 3 of the GNU GPL.
+
+ 2. Conveying Modified Versions.
+
+ If you modify a copy of the Library, and, in your modifications, a
+facility refers to a function or data to be supplied by an Application
+that uses the facility (other than as an argument passed when the
+facility is invoked), then you may convey a copy of the modified
+version:
+
+ a) under this License, provided that you make a good faith effort to
+ ensure that, in the event an Application does not supply the
+ function or data, the facility still operates, and performs
+ whatever part of its purpose remains meaningful, or
+
+ b) under the GNU GPL, with none of the additional permissions of
+ this License applicable to that copy.
+
+ 3. Object Code Incorporating Material from Library Header Files.
+
+ The object code form of an Application may incorporate material from
+a header file that is part of the Library. You may convey such object
+code under terms of your choice, provided that, if the incorporated
+material is not limited to numerical parameters, data structure
+layouts and accessors, or small macros, inline functions and templates
+(ten or fewer lines in length), you do both of the following:
+
+ a) Give prominent notice with each copy of the object code that the
+ Library is used in it and that the Library and its use are
+ covered by this License.
+
+ b) Accompany the object code with a copy of the GNU GPL and this license
+ document.
+
+ 4. Combined Works.
+
+ You may convey a Combined Work under terms of your choice that,
+taken together, effectively do not restrict modification of the
+portions of the Library contained in the Combined Work and reverse
+engineering for debugging such modifications, if you also do each of
+the following:
+
+ a) Give prominent notice with each copy of the Combined Work that
+ the Library is used in it and that the Library and its use are
+ covered by this License.
+
+ b) Accompany the Combined Work with a copy of the GNU GPL and this license
+ document.
+
+ c) For a Combined Work that displays copyright notices during
+ execution, include the copyright notice for the Library among
+ these notices, as well as a reference directing the user to the
+ copies of the GNU GPL and this license document.
+
+ d) Do one of the following:
+
+ 0) Convey the Minimal Corresponding Source under the terms of this
+ License, and the Corresponding Application Code in a form
+ suitable for, and under terms that permit, the user to
+ recombine or relink the Application with a modified version of
+ the Linked Version to produce a modified Combined Work, in the
+ manner specified by section 6 of the GNU GPL for conveying
+ Corresponding Source.
+
+ 1) Use a suitable shared library mechanism for linking with the
+ Library. A suitable mechanism is one that (a) uses at run time
+ a copy of the Library already present on the user's computer
+ system, and (b) will operate properly with a modified version
+ of the Library that is interface-compatible with the Linked
+ Version.
+
+ e) Provide Installation Information, but only if you would otherwise
+ be required to provide such information under section 6 of the
+ GNU GPL, and only to the extent that such information is
+ necessary to install and execute a modified version of the
+ Combined Work produced by recombining or relinking the
+ Application with a modified version of the Linked Version. (If
+ you use option 4d0, the Installation Information must accompany
+ the Minimal Corresponding Source and Corresponding Application
+ Code. If you use option 4d1, you must provide the Installation
+ Information in the manner specified by section 6 of the GNU GPL
+ for conveying Corresponding Source.)
+
+ 5. Combined Libraries.
+
+ You may place library facilities that are a work based on the
+Library side by side in a single library together with other library
+facilities that are not Applications and are not covered by this
+License, and convey such a combined library under terms of your
+choice, if you do both of the following:
+
+ a) Accompany the combined library with a copy of the same work based
+ on the Library, uncombined with any other library facilities,
+ conveyed under the terms of this License.
+
+ b) Give prominent notice with the combined library that part of it
+ is a work based on the Library, and explaining where to find the
+ accompanying uncombined form of the same work.
+
+ 6. Revised Versions of the GNU Lesser General Public License.
+
+ The Free Software Foundation may publish revised and/or new versions
+of the GNU Lesser General Public License from time to time. Such new
+versions will be similar in spirit to the present version, but may
+differ in detail to address new problems or concerns.
+
+ Each version is given a distinguishing version number. If the
+Library as you received it specifies that a certain numbered version
+of the GNU Lesser General Public License "or any later version"
+applies to it, you have the option of following the terms and
+conditions either of that published version or of any later version
+published by the Free Software Foundation. If the Library as you
+received it does not specify a version number of the GNU Lesser
+General Public License, you may choose any version of the GNU Lesser
+General Public License ever published by the Free Software Foundation.
+
+ If the Library as you received it specifies that a proxy can decide
+whether future versions of the GNU Lesser General Public License shall
+apply, that proxy's public statement of acceptance of any version is
+permanent authorization for you to choose that version for the
+Library.
@@ -0,0 +1,53 @@
+Here are the final instructions in order to process the payments for the MLSS:
+
+1) A feature was added to allocate money to applicants needing
+financial support. So go through each applicant needing financial
+support or maybe order the applicants by ratings and page through the
+results one by one allocating money as needed.
+
+2) Open a Google Checkout seller account for a given bank account:
+https://checkout.google.com/sell/ It's very easy to open an account.
+Use the mlss09cam@googlemail.com Google account to setup the account.
+
+3) I will then send you a list of admitted applicants containing the
+following fields:
+
+applicant email, name, affiliated with cambridge, industry
+researcher?, money given for financial support if any, money applicant
+has to pay
+
+The money the applicant has to pay depends on whether he was given
+financial support, is an industry researcher or is affiliated with
+Cambridge. Should this amount be in pounds or in dollars? The amount
+we asked for financial support was in dollars, so should I do the
+conversion?
+
+4) Go to Tools > Send an invoice on your newly created Google Checkout
+account. Send an email to each admitted applicant making sure the
+right amount due is put. There should probably be a paragraph
+explaining the amount due depending on whether the applicant received
+financial support, is an industry researcher or is affiliated with
+Cambridge. IMPORTANT make sure you check the option "Send me a copy of
+this email". This email is the only way we can keep track of whether
+the applicant has paid or not. There is also the Merchant admin
+(https://checkout.google.com/sell/orders) but I think there isn't an
+exact match between the applicant's email and the actual payee.
+
+5) I will send you coma separated list of all undecided applicant's
+emails (should we put these people on a waiting list?). The same with
+all rejected applicants. A group bcc email could be sent to each group
+using the MLSS Google email address.
+
+6) After some deadline we then go through the emails received by
+Google when a payment has been made. I could add a quick feature in
+the admin to mark that the applicant has actually paid which will be
+useful when making the badges. We can also start processing the
+applicants who are on the waiting list.
+
+This process could have been automatic using a low level API provided
+by Google but I ran out of time. However if the admin is used for
+subsequent MLSS then I'd be happy to add these features along with
+with some simple stats such as admitted applicants by countries,
+expertise etc ... as a pie.
+
+Alex
6 README
@@ -0,0 +1,6 @@
+This is the system we used in order to process the vast number of applicants for the machine learning summer shcool (MLSS) at Cambridge.
+This code has been made available open source so it could be re-used for subsequent summer schools.
+
+Read INSTALL on how to install and PAYMENTS_INSTRUCTIONS on to how process payments.
+
+For questions / suggestion please email Alex Ksikes (ak469 at cam dot ac dot uk).
24 TODO
@@ -0,0 +1,24 @@
+BUG:
+- bug when no data in applicant table (add an applicant go to /submit_application).
+- paging by single result does not behave as exptected when adding a comment or a rating.
+
+QUICK:
+- dummy data useful for a demo.
+- update the source code link.
+- put explanation on resume.
+- test on IE (fix bug with form input rendering)
+
+MINOR ADDITIONS:
+- ratings could also be removed by the user if he wants to.
+- fix bug no data is in the applicants table.
+- trim out white spaces in references etc...
+
+MORE ADDITONS:
+
+- have flag country for affiliation and nationality (flag for affiliation could be next university field).
+>> use http://opencountrycodes.appspot.com/python/ and for icons //www.famfamfam.com/lab/icons/silk
+- integration with Google Checkout
+>> need SSL certificates, look into gchecky: http://code.google.com/p/gchecky/wiki/TutorialForLevel2
+- use Google Chart APIS (http://code.google.com/apis/chart/) for rough statistics of applicants (countries of admitted applicants, background ...)
+- automate emails sent to accepted / rejected / waiting list applicants.
+- lightbox (modal box) for signups.
No changes.
No changes.
No changes.
Oops, something went wrong.

0 comments on commit d9007b6

Please sign in to comment.