{ "info": { "author": "Diederik van der Boor", "author_email": "opensource@edoburu.nl", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Environment :: Web Environment", "Framework :: Django", "Framework :: Django :: 1.10", "Framework :: Django :: 1.11", "Framework :: Django :: 2.0", "Intended Audience :: Developers", "License :: OSI Approved :: Apache Software License", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Topic :: Internet :: WWW/HTTP", "Topic :: Internet :: WWW/HTTP :: Dynamic Content", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": ".. image:: https://img.shields.io/travis/edoburu/fluentcms-contactform/master.svg?branch=master\n :target: http://travis-ci.org/edoburu/fluentcms-contactform\n.. image:: https://img.shields.io/pypi/v/fluentcms-contactform.svg\n :target: https://pypi.python.org/pypi/fluentcms-contactform/\n.. image:: https://img.shields.io/pypi/l/fluentcms-contactform.svg\n :target: https://pypi.python.org/pypi/fluentcms-contactform/\n.. image:: https://img.shields.io/codecov/c/github/edoburu/fluentcms-contactform/master.svg\n :target: https://codecov.io/github/edoburu/fluentcms-contactform?branch=master\n\nfluentcms-contactform\n=====================\n\nA plugin for django-fluent-contents_ to show a simple contact form.\n\nFeatures:\n\n* Configurable fields.\n* Configurable layouts.\n* Phone number validation.\n* IP-Address detection.\n* Admin panel with submitted messages.\n* Email notification to staff members for new messages.\n* Optional capcha / reCAPTCHA support.\n\nInstallation\n============\n\nFirst install the module, preferably in a virtual environment. It can be installed from PyPI::\n\n pip install fluentcms-contactform\n\n\nBackend Configuration\n---------------------\n\nFirst make sure the project is configured for django-fluent-contents_.\n\nThen add the following settings:\n\n.. code-block:: python\n\n INSTALLED_APPS += (\n 'fluentcms_contactform',\n 'crispy_forms', # for default template\n )\n\nThe database tables can be created afterwards::\n\n ./manage.py migrate\n\nNow, the ``ContactFormPlugin`` can be added to your ``PlaceholderField``\nand ``PlaceholderEditorAdmin`` admin screens.\n\nMake sure the following settings are configured:\n\n.. code-block:: python\n\n DEFAULT_FROM_EMAIL = '\"Your Name\" '\n\n FLUENTCMS_CONTACTFORM_VIA = \"Sitename\" # Will send a From: \"Username via Sitename\" email.\n\nTo have bootstrap 3 layouts, add:\n\n.. code-block:: python\n\n CRISPY_TEMPLATE_PACK = 'bootstrap3'\n\n\nIP address detection\n~~~~~~~~~~~~~~~~~~~~\n\nThis package stores the remote IP of the visitor in the model.\nThe IP Address is read from the ``REMOTE_ADDR`` meta field.\nIn case your site is behind a HTTP proxy (e.g. using Gunicorn or a load balancer),\nthis would make all contact form submissions appear to be sent from the load balancer IP.\n\nThe best and most secure way to fix this, is using WsgiUnproxy_ middleware in your ``wsgi.py``:\n\n.. code-block:: python\n\n from django.core.wsgi import get_wsgi_application\n from django.conf import settings\n from wsgiunproxy import unproxy\n\n application = get_wsgi_application()\n application = unproxy(trusted_proxies=settings.TRUSTED_X_FORWARDED_FOR_IPS)(application)\n\nIn your ``settings.py``, you can define which hosts may pass the ``X-Forwarded-For``\nheader in the HTTP request. For example:\n\n.. code-block:: python\n\n TRUSTED_X_FORWARDED_FOR_IPS = (\n '11.22.33.44',\n '192.168.0.1',\n )\n\n\nUpdating the form layout\n~~~~~~~~~~~~~~~~~~~~~~~~\n\nThe default form fields can be changed using:\n\n.. code-block:: python\n\n FLUENTCMS_CONTACTFORM_DEFAULT_FIELDS = ('name', 'email', 'phone_number', 'subject', 'message')\n\n # default CSS styles\n CRISPY_TEMPLATE_PACK = 'bootstrap3'\n FLUENTCMS_CONTACTFORM_FORM_CSS_CLASS = 'form-horizontal'\n FLUENTCMS_CONTACTFORM_LABEL_CSS_CLASS = 'col-xs-3'\n FLUENTCMS_CONTACTFORM_FIELD_CSS_CLASS = 'col-xs-9'\n\nFor example, the subject can be removed using:\n\n.. code-block:: python\n\n FLUENTCMS_CONTACTFORM_DEFAULT_FIELDS = ('name', 'email', 'phone_number', 'message')\n\n\nAdding form fields\n~~~~~~~~~~~~~~~~~~\n\nThe form layout is fully configurable, as you can select your own form classes.\nThe default settings are:\n\n.. code-block:: python\n\n FLUENTCMS_CONTACTFORM_STYLES = (\n ('default', {\n 'title': _(\"Default\"),\n 'form_class': 'fluentcms_contactform.forms.default.DefaultContactForm',\n 'required_apps': (),\n }),\n ('captcha', {\n 'title': _(\"Default with captcha\"),\n 'form_class': 'fluentcms_contactform.forms.captcha.CaptchaContactForm',\n 'required_apps': ('captcha',),\n }),\n ('recaptcha', {\n 'title': _(\"Default with reCAPTCHA\"),\n 'form_class': 'fluentcms_contactform.forms.recaptcha.ReCaptchaContactForm',\n 'required_apps': ('captcha',),\n }),\n )\n\nYou can provide any form class, as long as it inherits from ``fluentcms_contactform.forms.AbstractContactForm``.\nThe current implementation expects the form to be a model form,\nso any submitted data is safely stored in the database too.\n\nBy providing a ``helper`` function, the form fields received default styling from django-crispy-forms_.\nSee the provided form code in ``fluentcms_contactform.forms`` for examples.\n\nThe form is rendered with the ``fluentcms_contactform/forms/*name*.html`` template.\n\nDisplaying phone numbers\n~~~~~~~~~~~~~~~~~~~~~~~~\n\nThe phone number field uses django-phonenumber-field_ to validate the phone number.\nBy default, it requires an international notation starting with ``+``.\nThe ``PhoneNumberField`` can support national phone numbers too, \nwhich is useful when most visitors come from a single country.\nUpdate the ``PHONENUMBER_DEFAULT_REGION`` setting to reflect this.\n\nFor example, to auto insert a ``+31`` prefix for Dutch phone numbers, use:\n\n.. code-block:: python\n\n PHONENUMBER_DEFAULT_REGION = 'NL' # Your country code, eg. .NL to \n\nThe phone numbers can be displayed in various formats, the most human readable is:\n\n.. code-block:: python\n\n PHONENUMBER_DEFAULT_FORMAT = 'NATIONAL'\n\nThe supported formats are:\n\n* ``NATIONAL`` - nicely space separated, remove the country prefix.\n* ``INTERNATIONAL`` - nicely space separated\n* ``E164`` - all numbers, suitable for data transmission.\n* ``RFC3966`` - the ``tel:`` URL, suitable for URL display.\n\n\nDisplaying captcha's\n~~~~~~~~~~~~~~~~~~~~\n\nThe ``fluentcms_contactform.forms.captcha`` provides an example to create a captcha form.\nThis requires a properly installed django-simple-captcha_ form::\n\n pip install django-simple-captcha\n\nIn ``settings.py``:\n\n.. code-block:: python\n\n INSTALLED_APPS += (\n 'captcha',\n )\n\nIn ``urls.py``:\n\n.. code-block:: python\n\n urlpatterns = [\n # ...\n\n url(r'^api/captcha/', include('captcha.urls')),\n\n ]\n\nAdd the database tables::\n\n python manage.py migrate\n\nAnd optional settings to simplify the captcha:\n\n.. code-block:: python\n\n CAPTCHA_NOISE_FUNCTIONS = ()\n CAPTCHA_FONT_SIZE = 30\n CAPTCHA_LETTER_ROTATION = (-10,10)\n\nThis can be made more complicated when needed:\n\n.. code-block:: python\n\n CAPTCHA_CHALLENGE_FUNCT = 'captcha.helpers.math_challenge'\n CAPTCHA_NOISE_FUNCTIONS = (\n 'captcha.helpers.noise_arcs',\n 'captcha.helpers.noise_dots',\n )\n\nSee the documentation of django-simple-captcha_ for more examples.\n\nUsing reCAPTCHA\n~~~~~~~~~~~~~~~\n\nIn a similar way, you can use recapcha. Select the form option,\nand make sure everything is installed::\n\n pip install django-recaptcha\n\nIn ``settings.py``:\n\n.. code-block:: python\n\n INSTALLED_APPS += (\n 'captcha',\n )\n\n RECAPTCHA_PUBLIC_KEY = '...'\n RECAPTCHA_PRIVATE_KEY = '...'\n RECAPTCHA_USE_SSL = True\n NOCAPTCHA = True # Use the new nocapcha\n\nSee the documentation of django-recaptcha_ for more details.\n\n.. warning::\n Don't install both django-simple-captcha_ and django-recaptcha_ as they both install\n a ``captcha`` package in the same location.\n\n\nFrontend Configuration\n----------------------\n\nIf needed, the HTML code can be overwritten by redefining ``fluentcms_contactform/forms/*.html``.\n\nThe template filename corresponds with the form style defined in ``FLUENTCMS_CONTACTFORM_STYLES``.\nWhen no custom template is defined, ``fluentcms_contactform/forms/default.html`` will be used.\n\nThe staff email message can be updated by redefining ``fluentcms_contactform/staff_email/*.txt``,\nwhich works similar to the form templates.\n\n\nContributing\n------------\n\nIf you like this module, forked it, or would like to improve it, please let us know!\nPull requests are welcome too. :-)\n\n.. _django-fluent-contents: https://github.com/edoburu/django-fluent-contents\n.. _django-phonenumber-field: https://github.com/stefanfoulis/django-phonenumber-field\n.. _django-simple-captcha: https://github.com/mbi/django-simple-captcha\n.. _django-recaptcha: https://github.com/praekelt/django-recaptcha\n.. _django-crispy-forms: https://github.com/maraujop/django-crispy-forms\n.. _WsgiUnproxy: https://pypi.python.org/pypi/WsgiUnproxy\n\n\n", "description_content_type": null, "docs_url": null, "download_url": "https://github.com/edoburu/fluentcms-contactform/zipball/master", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/edoburu/fluentcms-contactform", "keywords": "", "license": "Apache 2.0", "maintainer": "", "maintainer_email": "", "name": "fluentcms-contactform", "package_url": "https://pypi.org/project/fluentcms-contactform/", "platform": "", "project_url": "https://pypi.org/project/fluentcms-contactform/", "project_urls": { "Download": "https://github.com/edoburu/fluentcms-contactform/zipball/master", "Homepage": "https://github.com/edoburu/fluentcms-contactform" }, "release_url": "https://pypi.org/project/fluentcms-contactform/2.0/", "requires_dist": [ "django-fluent-contents (>=2.0)", "django-phonenumber-field (>=0.7.2)", "django-crispy-forms (>=1.3)", "django-simple-captcha (>=0.5.6); extra == 'captcha'", "django-recaptcha (>=1.3.0); extra == 'recaptcha'" ], "requires_python": "", "summary": "A contact form plugin django-fluent-contents", "version": "2.0" }, "last_serial": 3511882, "releases": { "1.0": [ { "comment_text": "", "digests": { "md5": "87afd6c30547159580830fcda0871ebe", "sha256": "082188debf0a691bceb6ea9bf4328b08ac1c84fab59ed86d9688f6629c4ab6fd" }, "downloads": -1, "filename": "fluentcms_contactform-1.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "87afd6c30547159580830fcda0871ebe", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 29405, "upload_time": "2015-10-24T11:29:59", "url": "https://files.pythonhosted.org/packages/fa/a1/e3e6dd087729bf015773ac30f6fc655bf52cd4d334cf4845b4ab448391eb/fluentcms_contactform-1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c394fccc90c9a519b03faf4a6081e141", "sha256": "7ae206d2d80fb2cc90dc171a15eaeee2f7eb428946aa59efc9d069710bd77dc6" }, "downloads": -1, "filename": "fluentcms-contactform-1.0.tar.gz", "has_sig": false, "md5_digest": "c394fccc90c9a519b03faf4a6081e141", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21500, "upload_time": "2015-10-24T11:29:54", "url": "https://files.pythonhosted.org/packages/b5/86/7ed99adc4feefd4e314c07232ef764aa55f5577c03116bc1f3e8d07227d7/fluentcms-contactform-1.0.tar.gz" } ], "1.1": [ { "comment_text": "", "digests": { "md5": "b2d01435030f010e9027822e41bdfc5b", "sha256": "3da04eeae5a886dd37a44ec96525f4adc6e3dc2fc02e8aa049469d29724e4036" }, "downloads": -1, "filename": "fluentcms_contactform-1.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "b2d01435030f010e9027822e41bdfc5b", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 29438, "upload_time": "2016-02-03T15:02:42", "url": "https://files.pythonhosted.org/packages/ea/a5/a80a6a6d9f008ef5795d436cb848d7c18bdb29f7ac48a6fee16698b1a200/fluentcms_contactform-1.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0f90359f721aa92609b2290fb8b72a1f", "sha256": "2342f8e45b601c08109b94b4db42cbdc7a725d973dfbba250be397ebeb4c33f4" }, "downloads": -1, "filename": "fluentcms-contactform-1.1.tar.gz", "has_sig": false, "md5_digest": "0f90359f721aa92609b2290fb8b72a1f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21526, "upload_time": "2016-02-03T15:02:23", "url": "https://files.pythonhosted.org/packages/0b/9f/f59db8ae434f18a6e4b9695aeded23aa46f52a06b4d74f618a5260cbaa54/fluentcms-contactform-1.1.tar.gz" } ], "1.2": [ { "comment_text": "", "digests": { "md5": "bb380c6aacddf6a502ef78006135a4b6", "sha256": "4d153f473715090ea0af6c2364a29c9f0ea6e18d3bad328a57cf0840dea49b5a" }, "downloads": -1, "filename": "fluentcms_contactform-1.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "bb380c6aacddf6a502ef78006135a4b6", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 29739, "upload_time": "2016-07-19T12:08:38", "url": "https://files.pythonhosted.org/packages/55/f6/4618c1c298fd97dd40bab581c4e59674bba7e1058df4f07a727380894711/fluentcms_contactform-1.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f3a86ef11fba64c1d77216ea4f8dc229", "sha256": "cf94bedd4a2d30ff070ca17e7bbbbd5063f03f65cdb531ca674b7ec4e5be8626" }, "downloads": -1, "filename": "fluentcms-contactform-1.2.tar.gz", "has_sig": false, "md5_digest": "f3a86ef11fba64c1d77216ea4f8dc229", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21746, "upload_time": "2016-07-19T12:08:40", "url": "https://files.pythonhosted.org/packages/f5/bb/b175b2ae30af0482d359d036c8d33d0f52e2c0f8c4bc554e3af4563e66b6/fluentcms-contactform-1.2.tar.gz" } ], "1.3": [ { "comment_text": "", "digests": { "md5": "902c893adc23f75dbd311f455267879f", "sha256": "b5f19791595c7160af141e175e6962f832be266d2b0735c70c8f46d7164e3833" }, "downloads": -1, "filename": "fluentcms_contactform-1.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "902c893adc23f75dbd311f455267879f", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 31514, "upload_time": "2016-07-29T19:06:13", "url": "https://files.pythonhosted.org/packages/f1/f0/f1ad879f3bb2974f8c049723f1d097bc4d8036c37085abe77f966aeba283/fluentcms_contactform-1.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "55f57a78739338dba32efeda77b72a60", "sha256": "87b565370c2cd529c9eb8362f1f2ebafa31cadb665bc1c103489342f2dbd4405" }, "downloads": -1, "filename": "fluentcms-contactform-1.3.tar.gz", "has_sig": false, "md5_digest": "55f57a78739338dba32efeda77b72a60", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22704, "upload_time": "2016-07-29T19:06:15", "url": "https://files.pythonhosted.org/packages/34/ab/5649547aa1fbe54ceaff173e47d314b74857b5dab8e2da446909ed1de0c8/fluentcms-contactform-1.3.tar.gz" } ], "1.3.1": [ { "comment_text": "", "digests": { "md5": "3dd36525e62d1fac115b7abaf60f1b16", "sha256": "a94cfc416261bbae59d161cd88f1d27ac89879f117e4b168e79e32772063b3ef" }, "downloads": -1, "filename": "fluentcms_contactform-1.3.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "3dd36525e62d1fac115b7abaf60f1b16", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 31578, "upload_time": "2016-07-29T19:50:50", "url": "https://files.pythonhosted.org/packages/45/c6/6f79d9906e49cdadb6b8d28f4a989e6ab77c44ce4ec0298e53220e6d6521/fluentcms_contactform-1.3.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a8e424c4cb57f9735a6dc9bd7ecfeec4", "sha256": "612ad6560809d3b3de5159f6ec22f03ae6be0385e8fc76c67a8131f01adc9dce" }, "downloads": -1, "filename": "fluentcms-contactform-1.3.1.tar.gz", "has_sig": false, "md5_digest": "a8e424c4cb57f9735a6dc9bd7ecfeec4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22723, "upload_time": "2016-07-29T19:50:52", "url": "https://files.pythonhosted.org/packages/c4/85/4817fde3a809acbc5ab1eb65b6abd2a2f69573475cc6ca56526c0b90bcd7/fluentcms-contactform-1.3.1.tar.gz" } ], "1.3.2": [ { "comment_text": "", "digests": { "md5": "f0e29984fa335ead612cc29227687eb0", "sha256": "caa3e0a9316fe279ddaab1becdcd06643cd77a0332cb923f61a21e9203998ee6" }, "downloads": -1, "filename": "fluentcms_contactform-1.3.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "f0e29984fa335ead612cc29227687eb0", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 33518, "upload_time": "2016-08-07T19:51:25", "url": "https://files.pythonhosted.org/packages/f9/61/cd7fee686eea5afd0419360b2f4fb7ff874b226a1aa6cb0eb95e8ff38d80/fluentcms_contactform-1.3.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a3611b552c3b97a34adb2f9b30ff582e", "sha256": "edc7a1714f85836a1a57a18a1ddb1b08b5e83605b1e8ec406a42e113bdee8a5d" }, "downloads": -1, "filename": "fluentcms-contactform-1.3.2.tar.gz", "has_sig": false, "md5_digest": "a3611b552c3b97a34adb2f9b30ff582e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23990, "upload_time": "2016-08-07T19:51:28", "url": "https://files.pythonhosted.org/packages/7a/71/de0d7f82c6b8b020d592eef25fa7e0881630f0e65a1a9ad0a09a80972198/fluentcms-contactform-1.3.2.tar.gz" } ], "1.3.3": [ { "comment_text": "", "digests": { "md5": "4af68b79b58682e71c40f7a63f0ff850", "sha256": "76eab933dea9d236e1eaf63f6a992bb78dff342b091be5c4cf4c38c73ceec8ec" }, "downloads": -1, "filename": "fluentcms_contactform-1.3.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "4af68b79b58682e71c40f7a63f0ff850", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 33522, "upload_time": "2016-08-19T08:25:30", "url": "https://files.pythonhosted.org/packages/e7/dd/fc7a21c151b02ad57f9974b764cde662ea5bf5deaaa3b52f686a5ddbbc77/fluentcms_contactform-1.3.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "17104356af0d4cd3b15865f9d98c083e", "sha256": "bb167ec355537d0e5c5f5172a57db6c99d8d670b487d5aa9032dabd6492ebd0b" }, "downloads": -1, "filename": "fluentcms-contactform-1.3.3.tar.gz", "has_sig": false, "md5_digest": "17104356af0d4cd3b15865f9d98c083e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23979, "upload_time": "2016-08-19T08:25:33", "url": "https://files.pythonhosted.org/packages/0a/d8/63348837a010593144c4c0a417b8f906420cf6701a95d2dba5dfa83836cb/fluentcms-contactform-1.3.3.tar.gz" } ], "1.4": [ { "comment_text": "", "digests": { "md5": "8e5c0f61bad0a3e0fd6203e2bb03009e", "sha256": "66740d9dc0acdfe9ccb145a48f78524e5266f5900060dd34fb83c1ba5796fed7" }, "downloads": -1, "filename": "fluentcms_contactform-1.4-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "8e5c0f61bad0a3e0fd6203e2bb03009e", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 33386, "upload_time": "2017-05-01T11:46:58", "url": "https://files.pythonhosted.org/packages/c2/28/bd3b3d561315323521bafa61278be16fa2622d5ce0728d6aa86b7b171900/fluentcms_contactform-1.4-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9bfbea70cf2f0946d4fb9a46561f296b", "sha256": "2332701a6f02f860ed95a7253c7bceb77d75d564433db82ebbdf918f48f1f865" }, "downloads": -1, "filename": "fluentcms-contactform-1.4.tar.gz", "has_sig": false, "md5_digest": "9bfbea70cf2f0946d4fb9a46561f296b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23925, "upload_time": "2017-05-01T11:47:01", "url": "https://files.pythonhosted.org/packages/68/5f/6e440e4554b0e9b64430b3f031f4db7adbc0709821a9f376b6f6fd0685c2/fluentcms-contactform-1.4.tar.gz" } ], "2.0": [ { "comment_text": "", "digests": { "md5": "c3d2b39705de2690881dbd7c172c6a96", "sha256": "f256c7542fbfe3f14eeb3cdf15d6e1f1a6de7c4c16495d43270e316894bd67e0" }, "downloads": -1, "filename": "fluentcms_contactform-2.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "c3d2b39705de2690881dbd7c172c6a96", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 31010, "upload_time": "2018-01-22T17:30:26", "url": "https://files.pythonhosted.org/packages/c2/81/32c33667a430ecc3f00b7a827d738d31e7db674b867cedc369e077678920/fluentcms_contactform-2.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "dd69ef9d8e76e683984fd3ba13aca69c", "sha256": "a56999cafeb95387314745f5983829c6386b4e75dd7359c141ae8ebbf4aede2f" }, "downloads": -1, "filename": "fluentcms-contactform-2.0.tar.gz", "has_sig": false, "md5_digest": "dd69ef9d8e76e683984fd3ba13aca69c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24534, "upload_time": "2018-01-22T17:30:28", "url": "https://files.pythonhosted.org/packages/16/cf/b36de743c39f7c21d71565f31ffcfb89cb5ea8f7842a637c21859c9f58c1/fluentcms-contactform-2.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "c3d2b39705de2690881dbd7c172c6a96", "sha256": "f256c7542fbfe3f14eeb3cdf15d6e1f1a6de7c4c16495d43270e316894bd67e0" }, "downloads": -1, "filename": "fluentcms_contactform-2.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "c3d2b39705de2690881dbd7c172c6a96", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 31010, "upload_time": "2018-01-22T17:30:26", "url": "https://files.pythonhosted.org/packages/c2/81/32c33667a430ecc3f00b7a827d738d31e7db674b867cedc369e077678920/fluentcms_contactform-2.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "dd69ef9d8e76e683984fd3ba13aca69c", "sha256": "a56999cafeb95387314745f5983829c6386b4e75dd7359c141ae8ebbf4aede2f" }, "downloads": -1, "filename": "fluentcms-contactform-2.0.tar.gz", "has_sig": false, "md5_digest": "dd69ef9d8e76e683984fd3ba13aca69c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24534, "upload_time": "2018-01-22T17:30:28", "url": "https://files.pythonhosted.org/packages/16/cf/b36de743c39f7c21d71565f31ffcfb89cb5ea8f7842a637c21859c9f58c1/fluentcms-contactform-2.0.tar.gz" } ] }