Giter Site home page Giter Site logo

findaconf's Introduction

Find a Conference (WIP)

About

Find a Conference is under development. This is supposed to be a free, open source and ad-free platform where:

  • Registered users can post info about academic conferences and call for papers
  • There is no curatorial layer
  • …but users can report inappropriate/duplicated contents
  • Only the user who posted a conference can edit it
  • The platform should not host too much stuff regarding the conferences, instead it should point to universities/association websites, Eventbrite, planning group emails etc.
  • It should be designed to be easily internationalized (multi-language)

Installation

If you want to get a development version of Find a Conference running, this session might be helpful. If it is not, let us know.

Requirements

  • Python 2.7+ (many of the dependencies are not Python 3 compatible yet)
  • PostgreSQL 9.3+
  • Node.js with CoffeeScript and Bower

pip is not required, but we are using it in install instructions.

virtualenv and virtualenvwrapper are not required but are highly recommended.

Environment variables

This application requires environment variables in order to work properly.

Usually they are read from a .env (not included in the repository for security reasons). But you can copy .env.sample as .env and customize it – it is the easiest way to set these variables.

Databases (required)

  • DATABASE_URL: URL and credentials to development database (e.g. postgres://vagrant:vagrant@localhost/findaconf)
  • DATABASE_URL_TEST: URL and credentials to test database (e.g. postgres://vagrant:vagrant@localhost/findaconf_test)

Security (required)

Public APIs (recommended)

OAuth/OAuth2 APIs (recommended)

At least one of these providers should be set in order to enable users to log in.

Setting a provider involves registering an application with a OAuth/OAuth2 provider, and passing the client id and client secret tokens to Find a Conference through pairs from this set of variables:

  • AMAZON_CLIENT_ID and AMAZON_CLIENT_SECRET
  • FACEBOOK_CLIENT_ID and FACEBOOK_CLIENT_SECRET
  • GITHUB_CLIENT_ID and GITHUB_CLIENT_SECRET
  • GOOGLE_CLIENT_ID and GOOGLE_CLIENT_SECRET
  • LINKEDIN_CLIENT_ID and LINKEDIN_CLIENT_SECRET
  • TUMBLR_CLIENT_ID and TUMBLR_CLIENT_SECRET
  • WINDOWS_CLIENT_ID and WINDOWS_CLIENT_SECRET
  • YAHOO_CLIENT_ID and YAHOO_CLIENT_SECRET

Debug (optional)

  • DEBUG: sets if the application is started in debug mode (e.g. True)
  • ASSETS_DEBUG: sets if webassets runs in debug mode (e.g. True)

Administrator

  • ADMIN: when an user with an email listed in this variable (a string containing email addresses, comma separated) is created, it is created as admin (not as regular user)

Step-by-step installation with Vagrant

  1. Clone the repository and step in its directory: $ git clone [email protected]:cuducos/findaconf.git && cd findaconf
  2. Start create, provision and log into your virtual machine: $ vagrant up && vagrant ssh
  3. Go to the application directory: $ cd /vagrant
  4. Set up your API credentials editing the .env file accordingly
  5. Run the server with something like: $ python manage.py runserver -r -d -h 0.0.0.0

Step-by-step installation without Vagrant

  1. Clone the repository and step in its directory: $ git clone [email protected]:cuducos/findaconf.git && cd findaconf
  2. Install the dependencies: $ pip install -r requirements.txt && bower install
  3. Set up your environment variables: $ mv .env.sample .env and then edit .env accordingly
  4. Create and feed the database: $ python manage.py db upgrade
  5. Run the server with something like: $ python manage.py runserver -r -d -h 0.0.0.0

Further installation notes

If you need further instructions to configure your development environment, take a look at our Vagrant bootstrap script. It has all the commands to install Python, Node.js, CoffeeScript, Bower and PostgreSQL dependencies, and the commands to create databases and users. It is designed to work with Ubuntu 14.04, but it should work with most Debian distributions.

Note that the included .bowerrc sets up a customized directory to store Bower files.

We suggest running the server with these optional arguments: -d enables the debug mode, -r reloads the server in case you change any file, and -h 0.0.0.0 starts the server at this (local) IP.

Tests

We're using Nose for testing: $ nosetests from the project directory is the standard.

If Nose isn't finding any test, it worth it to remember that Nose's default behavior is to ignore executable files. You can overcome this situation by any of this ways:

  • Changing the permissions of tests files: $ chmod -x $(find findaconf/tests/ -name '*.py')
  • Running Nose with the --exe flag

Contributing

You can discuss the project, further features, implementation and report issues here on GitHub. And pull requests are very welcomed indeed:

  • Fork this repository
  • Create a new branch: git checkout -b my-new-feature
  • Commit your changes: git commit -am 'Add some feature'
  • Push to the branch: git push origin my-new-feature
  • Go to your fork page at GitHub and create new pull request

To do list

We keep track of ideas, enhancements etc. in our TODO list, check it out and join us making the list longer or shorter.

Contributors

The idea emerged within a group of PhD students in Sociology from the University of Essex: Ale, Can and Cuducos.

Mabel and Cuducos designed the UI.

The source code is being written by:

License

Copyright (c) 2015 Eduardo Cuducos, Gabriel Vicente and Lorenzo Pascucci

Licensed under the MIT LICENSE.

findaconf's People

Contributors

cuducos avatar g4brielvs avatar lorenzo-pasa avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

findaconf's Issues

Unit tests in "test_sites_routes.py" return false positives

Almost all test methods in test_sites_routes.py execute their checks and assertions only when the if valid_providers: condition is fulfilled.

But, at this moment, in 8 out of 12 tests present in the file, that condition is not fulfilled, and without an else: option, the tests simply don't do anything, neither raising assertion errors, thus they are all evaluated as "passed".

A simple way to reproduce this bug in the aforementioned file, is to add this lines

else:
    self.assertEqual(1,2,'valid_providers: {}'.format(valid_providers))

at the end of each method that uses the if valid_providers: statement.

Side note: this bug could be hidden also in other test files. A wider and deeper search is strongly required.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.