{ "info": { "author": "David Glick, Groundwire", "author_email": "davidglick@groundwire.org", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Framework :: Plone", "Framework :: Zope2", "Programming Language :: Python", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "RSVP for Salesforce\n===================\n\nProduct home is\nhttp://plone.org/products/collective.salesforce.rsvp\n\nA `documentation area`_ and `issue\ntracker`_ are available at\nthe linked locations.\n\n.. _documentation area: http://plone.org/documentation/manual/integrating-plone-with-salesforce.com\n.. _issue tracker: http://plone.org/products/collective.salesforce.rsvp/issues\n\nA Google Group, called `Plone Salesforce Integration`_ exists with the sole aim\nof discussing and developing tools to make Plone integrate well with\nSalesforce.com. If you have a question, joining this group and posting to the\nmailing list is the likely best way to get support.\n\n.. _Plone Salesforce Integration: http://groups.google.com/group/plonesf\n\nFailing that, please try using the Plone users' mailing list or the #plone irc\nchannel for support requests. If you are unable to get your questions answered\nthere, or are interested in helping develop the product, see the credits below\nfor individuals you might contact.\n\nOverview\n========\n\nUsing Plone's Archetypes system and archetypes.schemaextender, the RSVP for\nSalesforce add-on product enables a mechanism for \"marking\" pieces of content\nas eligible to accept RSVPs (i.e. registrations) from site visitors. The act of\n\"marking\" content extends the existing piece of content with several additional\nfields for custom RSVP behaviors.\n\nHowever, this is not a generic RSVP/registration system, but as the name\nsuggests, is optimized to work with the Salesforce.com Customer Relationship\nManagement system, which is a generic system that can be used to manage Leads,\nContacts, Campaigns, and Events. By default, registrants are stored as Lead\nobjects with an associated CampaignMember object serving as the \"junction\"\nbetween an organization's configured \"Campaign\" and those interested in\nparticipating. This can be useful in cases of in person and/or virtual events\n(i.e. a training, a conference, a political rally, etc.) and online campaigns\nallowing participant sign-on (signature drives, pledge drives, etc.). The\ndefault behavior of creating a Lead and CampaignMember associated with the\nconfigured Campaign can be fully customized with the optional add-on Plone\nproducts PloneFormGen (and dependencies) and Salesforce PFG Adapter.\n\nFeatures of RSVP for Salesforce include:\n\n - Complete integration with the robust and powerful CRM system \n Salesforce.com\n \n - Ability to mark and configure any Archetypes content object as RSVP-aware\n \n - Default registration form requiring minimal attendee information and \n completely free of complex configuration demands.\n \n - Optional maximum capacity for RSVP-enabled activities\n \n - Optional acceptance of \"waitlist\" registrations in the event of \n cancellations\n \n - Optional expiration date for the automatic disabling of RSVP\n \n - Ability to model \"first come first served\" or \"apply for acceptance after \n further consideration\" type events. This can be done by setting the \n default signup \"status\" from within Salesforce.com for the RSVP-enabled \n event (i.e. the status for a newly created CampaignMember could be \"sent\", \n \"applied\", \"responded\", etc. depending upon how event attendance is \n modeled in each case.\n \n - Optional Add-on Capability: Using PloneFormGen with Salesforce PFG Adapter \n create enhanced and completely customizable registration forms requesting \n and/or requiring arbitrary sign-up data that can be mapped to arbitrary \n Salesforce.com objects. The referring \"RSVP\" accepting Salesforce.com \n object id is passed to the custom form for appropriate association.\n\n\nWhat this isn't...\n==================\n... and may or may not ever be:\n\n - A general, feature complete ticketing, online registration system. This is \n simple and optimized to integrate well with Salesforce.com and is optimized \n towards events with a flexible amount of capacity. While one can certainly \n use this to lock down capacity a bit more tightly, the burden is upon a \n correct configuration of the capacity related fields.\n\n - A system for accepting online payment to secure event attendance -- though \n we're placing bets internally on how long it will be until this feature is \n requested.\n\n - A fail safe system for absolutely capping attendance at a hard capacity. \n Because a greater than max capacity # of participants could load a custom \n PloneFormGen-based registration form (or the default registration form for \n that matter) that suggests available capacity, we advise you to set \n expectations appropriately during the signup process and via any \n auto-response emails that are sent. In other words, text like the \n following goes a long way towards expectation management: \"Thanks for \n expressing your interest in attending our event. A follow-up email will be \n sent within 24 hours confirming your space for the event.\"\n\n\nDEPENDENCIES\n============\n\nRSVP for Salesforce requires Plone 3.0 or greater.\n\nThe following dependencies should be pulled in automatically when you install\nthe egg:\n\n * beatbox >= 0.9.1.1\n * Products.salesforcebaseconnector >= 1.0\n * archetypes.schemaextender\n\nIf you want to use custom PloneFormGen-based registration forms, then you must\nhave PloneFormGen >= 1.5b2.\n\nCONFIGURATION TIPS\n==================\n\nQ: But I only want content type X or Y (i.e. Event objects) to be configured as RSVP-aware...\n A: To limit which content types the user can easily configure as RSVP-aware, the \n condition_expr for the \"allowRSVPs\" and \"disableRSVPs\" actions, could be changed to something \n like (replace 'Event' with the name(s) of your preferred content type below)::\n\n condition_expr=\"python:not object.restrictedTraverse('@@rsvp-configuration').isRSVPEnabled() and object.portal_type in ('Event',) \"\n\n\nQ: How can I customize the registration form and messages?\n A: You can configure a PloneFormGen form as a custom registration form. In this case RSVP for\n Salesforce displays the form and checks for whether capacity has been reached, but does not\n actually handle the management of records in Salesforce.com. To achieve that with a custom\n registration form, use the Salesforce PFG Adapter (Products.salesforcepfgadapter). In a typical\n use case, you might use two PFG adapters to create a Contact and a CampaignMember object linking\n that contact to a particular campaign.\n \n Note: This requires PloneFormGen >= 1.5b2.\n\n RSVP for Salesforce will pass the configured Salesforce object (typically a Campaign) to the form\n in the 'signup-object-id' variable of the request, so that it is possible to optionally use the\n same registration form to register people for multiple campaigns. For instance, you might create\n a 'CampaignID' string field in the PloneFormGen form with the server-side only flag set (so that\n the field doesn't render) and with a default value override like\n python:request.get('signup-object-id', ''), and map this field to the Salesforce CampaignID field\n via the salesforcepfgadapter edit screen.\n\n If you need to modify the messages regarding waitlist status and successful registration,\n the best approach is to override the rsvp.register viewlet on a theme-specific browser layer.\n The ZMCL to do so might look something like this::\n\n \n\n where my_custom_template.pt would be a modified copy of browser/templates/registration-viewlet.pt\n from this package.\n\nCredits\n=======\nThe Plone & Salesforce crew in Seattle and Portland:\n\n- Jon Baldivieso \n- Andrew Burkhalter \n- Brian Gershon \n- David Glick \n- Jesse Snyder \n\nSalesforce.com Foundation and Enfold Systems for their gift and work on beatbox\nand the original proof of concept code that has become Salesforce Auth Plugin (see: \nhttp://gokubi.com/archives/onenorthwest-gets-grant-from-salesforcecom-to-integrate-with-plone)\n\nCHANGELOG\n=========\n\n1.3 (2010-10-04)\n----------------\n\n- Fix issue with extended characters in form prologue/epilogue.\n [davisagli]\n\n1.2 (2010-06-01)\n----------------\n\n- Keep the custom registration form reference when RSVPable items are\n copied. Fixes\n http://plone.org/products/collective.salesforce.rsvp/issues/11.\n Thanks to Steve Allgood.\n [davisagli]\n\n- Cache the types and fields lookups to Salesforce. This improves speed at\n the cost of needing to restart Zope if you add/remove fields or types in\n Salesforce.\n [davisagli]\n\n- Don't include the friendly label for Salesforce object types; it requires\n calling describeSObjects which takes forever to run.\n [davisagli]\n\n1.2b1 (2009-09-08)\n------------------\n\n- Updated salesforcebaseconnector query calls to use the new syntax\n where a full SOQL query is specified. Beatbox 16.0dev or greater\n is now required.\n [davisagli]\n\n1.1 (2009-08-13)\n----------------\n\n- Include the form prologue and epilogue in the registration viewlet\n when using a custom PloneFormGen form.\n [davisagli]\n\n- Make sure the schema extender fields don't show up in base_view.\n [davisagli]\n\n- Fixed a test to work with v16 of the Salesforce API, which is stricter\n about ID field format.\n [davisagli]\n\n1.0 (2009-01-13)\n----------------\n\n- Updated salesforcebaseconnector dependency to v1.0 final.\n [davisagli]\n\n- Show both the id and label for Salesforce objects and fields.\n [davisagli]\n\n- Refactored to wrap the form rendering in the capacity check regardless of\n which type of form is being used.\n [davisagli]\n\n- Take advantage of new embedded forms support in PloneFormGen when rendering a\n custom registration form. This requires PloneFormGen >= 1.5b2.\n [davisagli]\n\n- Refactored the registration form viewlet and default registration form to be\n rendered in a much saner fashion.\n [davisagli]\n\n- Add i18n message ids.\n [davisagli]\n\n- Make the \"limit registration capacity\" field actually have an effect rather than\n just controlling display of other form fields. This helps in the edge case where\n the user clicks this to turn capacity off, but the hidden fields are still selected.\n [davisagli]\n\n- Make the \"enable custom registration form\" actually have an effect rather than\n just controlling display of another form field. This helps workaround the issue\n with not being able to un-reference an item with the ATReferenceBrowserWidget.\n [davisagli]\n\n1.0a4\n-----\n\n- Fix for kss configuration issue within Plone 3.0.x. See:\n http://plone.org/products/collective.salesforce.rsvp/issues/1 [andrewb]\n \n- provide zcml declarations for all registration-based browser:page templates, this \n allows for standard customization via layers for others using this product, \n traverse to browser pages, so that layers are accounted for [andrewb]\n\n1.0a3\n-----\n\n- Fixing kss configuration tests and uninstallation tests, so that we can better claim support \n for Plone 3.1.x along with 3.0.x [andrewb]\n\n- Package branding changed to 'RSVP for Salesforce' [andrewb, thanks jonstahl]\n\n1.0a2\n-----\n\n- Cleanup of some problematic RST formatting pulled into the long desc on PyPI [andrewb]\n\n1.0a1\n-----\n\n- Initial experimental release of RSVP for Salesforce feature allowing for\n Plone content objects to be tied to \"registerable\" Salesforce.com objects [andrewb]\n\nRUNNING TESTS\n=============\nIt is strongly recommended that you run your tests\nagainst a free developer account, rather than a real\nproduction Salesforce.com instance. ... With that said,\nto run the tests for Salesforce Auth Plugin do the following:\n\n=======================================\nConfigure your Salesforce.com instance:\n=======================================\nIn order to successfully run all of the automated unit tests, \nsome modifications need to happen within your Salesforce.com \ninstance.\n\nIn many of the tests, a dummy campaign within your Salesforce.com\ninstance is created. In a few cases, we test the logic for presentation\nof the registration/waitlist signup/registration closed options for the\nRSVP-enabled content object. This assumes that the following fields have\nbeen added to the \"Campaign\" object via Setup --> Customize --> Campaigns \n--> Fields --> \"New\" button under \"Campaign Custom Fields & Relationships\"::\n\n Field Label Field Name Field Type Field Description\n \n ----------- ---------- ---------- -----------------\n \n Allow Waitlists? Allow_Waitlists Checkbox Will you accept waitlist \n registrations for this campaign? \n Only required if you plan to enable \n RSVPs in a capacity limited way \n via your website.\n \n Max Capacity Max_Capacity Number(18, 0)\n \n\nNote: You can accept the defaults for the other field attributes.\n\n=====\nRead:\n=====\n\nRunning Tests --> \"To run tests in a unix-like environment\" from\n`SalesforceBaseConnector`_, which is a dependency, so you should have it :)\n\n.. _SalesforceBaseConnector: http://plone.org/products/salesforcebaseconnector\n\n=================\nDo the following:\n=================\nRather than running the test suite for salesforcebaseconnector\ndo the following:\n\n $INSTANCE/bin/zopectl test -s collective.salesforce.rsvp\n\n=======================\nFAQ about running tests\n=======================\nIf you have trouble running tests, consult \"FAQ about running tests\" from\nSalesforceBaseConnector.\n\n\nDOWNLOAD\n========", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://groups.google.com/group/plonesf", "keywords": "Zope CMF Plone Salesforce.com CRM registration", "license": "GPL", "maintainer": null, "maintainer_email": null, "name": "collective.salesforce.rsvp", "package_url": "https://pypi.org/project/collective.salesforce.rsvp/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/collective.salesforce.rsvp/", "project_urls": { "Download": "UNKNOWN", "Homepage": "http://groups.google.com/group/plonesf" }, "release_url": "https://pypi.org/project/collective.salesforce.rsvp/1.3/", "requires_dist": null, "requires_python": null, "summary": "RSVP/Event registration system integrating the Plone content management system with the Salesforce.com customer relationship management system.", "version": "1.3" }, "last_serial": 788185, "releases": { "1.0": [ { "comment_text": "", "digests": { "md5": "ce0e0af7eee7170b232fdf3fabdc7297", "sha256": "69d1ad4c302c870e70ede51bd475ad78c48645d6d970a4e5a9a84f8c70622286" }, "downloads": -1, "filename": "collective.salesforce.rsvp-1.0-py2.4.egg", "has_sig": false, "md5_digest": "ce0e0af7eee7170b232fdf3fabdc7297", "packagetype": "bdist_egg", "python_version": "2.4", "requires_python": null, "size": 85632, "upload_time": "2009-01-13T22:11:05", "url": "https://files.pythonhosted.org/packages/eb/89/30c619ae06b87f1a16d0e59db5e59ff02e720a3a34fc83acbc6cb92080ab/collective.salesforce.rsvp-1.0-py2.4.egg" }, { "comment_text": "", "digests": { "md5": "d8b186bf4e5bed91ee3f0f0a58de8b2c", "sha256": "f3d32e903fcd8daf2b2a237af2485170555ab88e6f9e4257332b64da07608bea" }, "downloads": -1, "filename": "collective.salesforce.rsvp-1.0.tar.gz", "has_sig": false, "md5_digest": "d8b186bf4e5bed91ee3f0f0a58de8b2c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 44092, "upload_time": "2009-01-13T22:11:03", "url": "https://files.pythonhosted.org/packages/18/79/e901e289206ea79dce4dfd85294ac0f626d760c7445c21e7bdef4457090c/collective.salesforce.rsvp-1.0.tar.gz" } ], "1.0a1": [ { "comment_text": "", "digests": { "md5": "1f4b2b487ee557bca56411851d6137cc", "sha256": "3dc623764419d1b25f5de8c5c3861ffe69b4d180cbacb79b3bdfd93408e8fc59" }, "downloads": -1, "filename": "collective.salesforce.rsvp-1.0a1-py2.4.egg", "has_sig": false, "md5_digest": "1f4b2b487ee557bca56411851d6137cc", "packagetype": "bdist_egg", "python_version": "2.4", "requires_python": null, "size": 86079, "upload_time": "2008-05-01T21:02:17", "url": "https://files.pythonhosted.org/packages/cb/07/f8d2caa68aeddda3e15bc990eae8c7891c02cabf23d17e6d58d5609b4c3b/collective.salesforce.rsvp-1.0a1-py2.4.egg" }, { "comment_text": "", "digests": { "md5": "21a4dfb48542c04b606fba1050d6c87d", "sha256": "03ffacf4d058e2468b632ea592ab1599ec29f9da1972da28e8f6563dc625653c" }, "downloads": -1, "filename": "collective.salesforce.rsvp-1.0a1.tar.gz", "has_sig": false, "md5_digest": "21a4dfb48542c04b606fba1050d6c87d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 45636, "upload_time": "2008-05-01T21:02:13", "url": "https://files.pythonhosted.org/packages/73/17/29011638cdae6e4e7f61d432a68db510236c880c5b548a09024e00be6d69/collective.salesforce.rsvp-1.0a1.tar.gz" } ], "1.0a2": [ { "comment_text": "", "digests": { "md5": "064c4ea63b638727947bc0dd5d135f35", "sha256": "7fdb73f79eb4ff976335eada2b8dc98a5ea13246c3634bd7a79d81e4b7f29390" }, "downloads": -1, "filename": "collective.salesforce.rsvp-1.0a2-py2.4.egg", "has_sig": false, "md5_digest": "064c4ea63b638727947bc0dd5d135f35", "packagetype": "bdist_egg", "python_version": "2.4", "requires_python": null, "size": 84337, "upload_time": "2008-05-01T21:46:15", "url": "https://files.pythonhosted.org/packages/19/21/7c7060bf6ad7fd8ffbc28399cfeee9a6247fb2c56f1955176a387122599e/collective.salesforce.rsvp-1.0a2-py2.4.egg" }, { "comment_text": "", "digests": { "md5": "154e182db4479e283cea6b768c995946", "sha256": "72db8b2b6d22fc2b9a3aeba19c0050f0bff099f64988f2910c37a156a06dc942" }, "downloads": -1, "filename": "collective.salesforce.rsvp-1.0a2.tar.gz", "has_sig": false, "md5_digest": "154e182db4479e283cea6b768c995946", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 44321, "upload_time": "2008-05-01T21:46:13", "url": "https://files.pythonhosted.org/packages/ab/24/57abec1c84e1bcd0d733e0272922653635356d6ce03b46080867ea470e76/collective.salesforce.rsvp-1.0a2.tar.gz" } ], "1.0a3": [ { "comment_text": "", "digests": { "md5": "305b6023ada0e97dd4927259adc57629", "sha256": "ed979160f6c19b78875fc0bae355bee82dbaa67071a5525763875248d97899a8" }, "downloads": -1, "filename": "collective.salesforce.rsvp-1.0a3-py2.4.egg", "has_sig": false, "md5_digest": "305b6023ada0e97dd4927259adc57629", "packagetype": "bdist_egg", "python_version": "2.4", "requires_python": null, "size": 84181, "upload_time": "2008-05-09T22:19:45", "url": "https://files.pythonhosted.org/packages/a9/ef/e8f3963f8a358d89c2d30aefc4b985f38215ac555bc26850cedd25709b79/collective.salesforce.rsvp-1.0a3-py2.4.egg" }, { "comment_text": "", "digests": { "md5": "57d7c633929ccace6ec8b1c82e772ffb", "sha256": "2724e01ccf8b0b58077818304ce121a7af93c95d9814e5feb3fa8bfd314d09a5" }, "downloads": -1, "filename": "collective.salesforce.rsvp-1.0a3.tar.gz", "has_sig": false, "md5_digest": "57d7c633929ccace6ec8b1c82e772ffb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 42082, "upload_time": "2008-05-09T22:19:42", "url": "https://files.pythonhosted.org/packages/67/0a/bb8cd45c576484fb121acecea1ad3253105ea78050c987b7913b4b2701bd/collective.salesforce.rsvp-1.0a3.tar.gz" } ], "1.0a4": [ { "comment_text": "", "digests": { "md5": "b98014187dfb1b08780c970787ca9ade", "sha256": "b0607f94ea61c57b1a9e4fdb85a4cedf715996d6f91da227ebbafeeed91bbc1b" }, "downloads": -1, "filename": "collective.salesforce.rsvp-1.0a4-py2.4.egg", "has_sig": false, "md5_digest": "b98014187dfb1b08780c970787ca9ade", "packagetype": "bdist_egg", "python_version": "2.4", "requires_python": null, "size": 84916, "upload_time": "2008-06-11T20:55:37", "url": "https://files.pythonhosted.org/packages/c1/86/6d9d1462d121c3454f579488ab071d37cc4d6c7189a1c37ee38fa22d94ca/collective.salesforce.rsvp-1.0a4-py2.4.egg" }, { "comment_text": "", "digests": { "md5": "ec21fc13e07e911d171c9e8ccffecdbf", "sha256": "abe4a89a0c16468ba148fccfd78d8565e9d7cddb3fb11e4e6bf29255ebcb5bb0" }, "downloads": -1, "filename": "collective.salesforce.rsvp-1.0a4.tar.gz", "has_sig": false, "md5_digest": "ec21fc13e07e911d171c9e8ccffecdbf", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 42855, "upload_time": "2008-06-11T20:55:35", "url": "https://files.pythonhosted.org/packages/c9/3b/c19d453ea61e82e2c70a705cf7c5e8d15e24cc5f7e74de63f241fc7092ed/collective.salesforce.rsvp-1.0a4.tar.gz" } ], "1.1": [ { "comment_text": "", "digests": { "md5": "dce080f0213181c9e18ba47c15f90a04", "sha256": "c694680f4013b5dda8fa2add6073f70324ec0f03c8c6e3f59085f7aa34dda375" }, "downloads": -1, "filename": "collective.salesforce.rsvp-1.1.tar.gz", "has_sig": false, "md5_digest": "dce080f0213181c9e18ba47c15f90a04", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 44338, "upload_time": "2009-08-13T19:03:57", "url": "https://files.pythonhosted.org/packages/2f/0f/83de9335bcf86ce16eb22aa3b6d266d97811f4a7ae4599ee7ac1ef9e1cba/collective.salesforce.rsvp-1.1.tar.gz" } ], "1.2": [ { "comment_text": "", "digests": { "md5": "2d128af66565f71b8c46844252618f1d", "sha256": "3549a4552af740055c6f2047f9e2fd08857a54da7cebe72b92c0008cd754db8c" }, "downloads": -1, "filename": "collective.salesforce.rsvp-1.2.zip", "has_sig": true, "md5_digest": "2d128af66565f71b8c46844252618f1d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 72481, "upload_time": "2010-06-01T21:44:40", "url": "https://files.pythonhosted.org/packages/b9/93/e594ac7fcca577728b7a33d5c9a988cab45b69662d66ddb70b9e551d509e/collective.salesforce.rsvp-1.2.zip" } ], "1.2b1": [ { "comment_text": "", "digests": { "md5": "7a595faa4b0463c5fa3bad43b4f5b147", "sha256": "d883f2e26a4bd4f2af251cfb0d33aafee5e4a1c020ee180a6c3040d2724125e3" }, "downloads": -1, "filename": "collective.salesforce.rsvp-1.2b1.zip", "has_sig": false, "md5_digest": "7a595faa4b0463c5fa3bad43b4f5b147", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 69405, "upload_time": "2009-09-08T22:02:01", "url": "https://files.pythonhosted.org/packages/49/69/fbb6a6c24152e5b54cd3985811e6afa72babcee2acc8a7c7685527c6f2c5/collective.salesforce.rsvp-1.2b1.zip" } ], "1.3": [ { "comment_text": "", "digests": { "md5": "386ad7c8e0d6a7590837fd6d6e050f3b", "sha256": "aaac0036a61244068d7763a431ae3a125f62d0a278b8900829a2771ce7204903" }, "downloads": -1, "filename": "collective.salesforce.rsvp-1.3.zip", "has_sig": true, "md5_digest": "386ad7c8e0d6a7590837fd6d6e050f3b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 72479, "upload_time": "2010-10-04T19:43:11", "url": "https://files.pythonhosted.org/packages/22/e3/524f650068425a8e43ac1a11e740a738db0a24fa47871b4d5d8a0bb46c2e/collective.salesforce.rsvp-1.3.zip" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "386ad7c8e0d6a7590837fd6d6e050f3b", "sha256": "aaac0036a61244068d7763a431ae3a125f62d0a278b8900829a2771ce7204903" }, "downloads": -1, "filename": "collective.salesforce.rsvp-1.3.zip", "has_sig": true, "md5_digest": "386ad7c8e0d6a7590837fd6d6e050f3b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 72479, "upload_time": "2010-10-04T19:43:11", "url": "https://files.pythonhosted.org/packages/22/e3/524f650068425a8e43ac1a11e740a738db0a24fa47871b4d5d8a0bb46c2e/collective.salesforce.rsvp-1.3.zip" } ] }