{ "info": { "author": "Alexander R\u00f6ssler", "author_email": "alex@machinekoder.com", "bugtrack_url": null, "classifiers": [], "description": "# Matching Software for Speed Friending and Dating Events\n[![Build Status](https://travis-ci.org/DiffSK/configobj.svg?branch=master)](https://travis-ci.org/machinekoder/speed-friending-and-dating-matcher)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://github.com/machinekoder/speed-friending-matcher/blob/master/LICENSE)\n[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/ambv/black)\n\nThis application is designed to make your life as organizer of speed friending or speed dating events easier. I created this software for a [local speed friending event in Vienna, Austria](https://www.meetup.com/de-DE/speed-friending-events/) to give back value to the event organizers. For me, the project additionally serves as a playground for software engineering best practices. The application was implemented in an agile, test-driven development process applying all development best practices so far known to me.\n\n## Installing the application\nTo install the live coding environment run:\n\n```bash\npython setup.py install\n```\n\nor install it via pip\n\n```bash\npip install speed-friending-matcher\n```\n\n## How to use it\nRun the speed-friending-matcher from the command line:\n```\nusage: speed_friending_matcher [-h] -i INPUT -o OUTPUT [-m MATCHMAKER] [-s]\n\nMatchmaking application for speed friending events\n\noptional arguments:\n -h, --help show this help message and exit\n -i INPUT, --input INPUT\n Input plugin and parameters e.g. csv:somefile.csv\n -o OUTPUT, --output OUTPUT\n Output plugins and parameters e.g. todo:mytodo.txt\n -m MATCHMAKER, --matchmaker MATCHMAKER\n Matchmaker, simple or clique\n -s, --server Starts a local webserver with a web GUI.\n```\n\nFor example:\n```bash\nspeed_friending_matcher -i csv:example/sample.csv -o todo:test.txt\n```\n\n## Importer Plugins\n\n* **csv:.csv:** imports a CSV file with partipants data\n\n## Exporter Plugins\n\n`[]` means optional\n\n* todo - exports a TODO file\n```\ntodo:.txt:[.txt]\n```\n\n* onexlsx - exports a single Excel sheet containing matching information\n```\nonexlsx:.xlsx\n```\n\n* clique - exports a file containing all found cliques, to be used with the clique matchmaker\n```\nclique:.txt:[.txt]:[.\n```\n\n## Matchmakers\n\n* **simple:** Simple I liked you, you liked me matchmaking\n* **clique:** Finds cliques of people liking each other\n\n## Run on your Server\n\nThe application can be started in server mode with the optional command line argument `-s`.\nHowever, please be aware that this starts a development server which is not recommended\nto be used for production.\n\nIf you want to run the application on your webserver please refer to \nthe [WSGI Guide for Flask.](http://flask.pocoo.org/docs/1.0/deploying/mod_wsgi/) or \nuse [gunicorn](https://gunicorn.org/).\n\nFor example:\n```bash\npip3 install gunicorn --user\ngunicorn -w 4 wsgi:application\n```\n\nUse your Apache or other webservers `.htaccess` to forward the port.\n\n### Detailed instructions\n\nThe following instructions were tested on a server with root access.\n\nIf you are running these steps in a production environment, make sure you have a back-up in place. I'm not responsible for any damages or losses.\n\nIf you have a webmaster, let your webmaster do the job.\n\n#### Ensure Python and pip are installed\n\n1. Open a root terminal on your server\n2. Check if Python is installed\n\n```bash\nwhich python\n```\n\nShould return something along the lines of\n\n```\n/usr/bin/python\n```\n\nIf not please refer to your web hosts manual for installing Python.\n\n3. Check if pip is installed\n\n```bash\nwhich pip\n```\n\nShould return \n\n```\n/usr/bin/pip\n```\n\nIf not you can install pip with the `get-pip.py` script.\n\n```bash\nwget https://bootstrap.pypa.io/get-pip.py\npython get-pip.py\nrm get-pip.py\n```\n\n4. Install the Python dependencies\n\n```bash\npip install gunicorn aenum flask\n```\n\n#### Set-up the Script\n\n1. Log in with your user account\n\nEither via the root shell `su - ` or via your webhosts login shell.\n\n2. Download the speed-friending matcher\n\n```bash\ncd ~\nmdkir repos\ncd repos\ngit clone https://github.com/machinekoder/speed-friending-and-dating-matcher.git\n``\n\n3. Create a start script\n\n```bash\ncd ~\nmkdir scripts\ncd scripts\nnano start-speed-friending-matcher.sh\n```\n\n```\n\n#!/bin/bash\npgrep -x gunicorn\nif [ $? -ne 0 ]; then\ncd ~/repos/speed-friending-and-dating-matcher\ngunicorn -w 4 wsgi:application -b localhost:5000\nfi\n```\n\n```bash\nchmod +x start-speed-friending-matcher.sh\n```\n\n4. Set up crontab to start the script\n\n```bash\ncrontab -e\n```\n\nInsert\n\n```\n* * * * * ~/scripts/start-speed-friending-matcher.sh\n```\n\nNow wait one minute and your server should be up and running.\n\n\n#### Configure Apache\n\nUse the `.htaccess` of your website to create a `RewriteRule` to the running `gunicorn` instance.\n\nIn this example we place the speed-friending script on the route `/script/*`, every other route is redirected to `/index.php`.\n\n```.htaccess\n\nRewriteEngine On\nRewriteBase /\nRewriteRule ^script/(.*)$ http://localhost:5000/$1 [P,L]\nRewriteCond %{REQUEST_FILENAME} !-f\nRewriteCond %{REQUEST_FILENAME} !-d\nRewriteRule ^.*$ /index.php [L]\n\n```\n\n#### Stopping everything\n\nFirst, you need to remove the start script from crontab `crontab -e`.\n\nThen kill all running gunicorn instances `killall gunicorn`.\n\n\n## Extending the software\nYou can extend the software by adding new import and export plugins. Take a look the default plugins\n [csvimporter](./importer/csvimporter.py) and [todoexporter](./exporter/todoexporter.py) for more details.", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/machinekoder/speed-friending-matcher/", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "speed-friending-matcher", "package_url": "https://pypi.org/project/speed-friending-matcher/", "platform": "", "project_url": "https://pypi.org/project/speed-friending-matcher/", "project_urls": { "Homepage": "https://github.com/machinekoder/speed-friending-matcher/" }, "release_url": "https://pypi.org/project/speed-friending-matcher/0.1.1.dev0/", "requires_dist": null, "requires_python": "", "summary": "Matching software for speed friending events.", "version": "0.1.1.dev0" }, "last_serial": 4948478, "releases": { "0.1.1.dev0": [ { "comment_text": "", "digests": { "md5": "3a18b0efa5b423eab243aa85e610136c", "sha256": "f441c6e285db009ad990bc6cd9c471d5c90930dd4d518640a680aad5b0b3e8a3" }, "downloads": -1, "filename": "speed-friending-matcher-0.1.1.dev0.zip", "has_sig": false, "md5_digest": "3a18b0efa5b423eab243aa85e610136c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 39789, "upload_time": "2019-03-16T20:02:09", "url": "https://files.pythonhosted.org/packages/b1/cf/6364bf393d760ab4b0ec78833cc576e6c80d911e4e47aeeedd8fce55a38a/speed-friending-matcher-0.1.1.dev0.zip" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "3a18b0efa5b423eab243aa85e610136c", "sha256": "f441c6e285db009ad990bc6cd9c471d5c90930dd4d518640a680aad5b0b3e8a3" }, "downloads": -1, "filename": "speed-friending-matcher-0.1.1.dev0.zip", "has_sig": false, "md5_digest": "3a18b0efa5b423eab243aa85e610136c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 39789, "upload_time": "2019-03-16T20:02:09", "url": "https://files.pythonhosted.org/packages/b1/cf/6364bf393d760ab4b0ec78833cc576e6c80d911e4e47aeeedd8fce55a38a/speed-friending-matcher-0.1.1.dev0.zip" } ] }