Giter VIP home page Giter VIP logo

evesrp's Introduction

Project Status

I've been winning at Eve for a few years now (translation for non-players: "winning Eve" means not playing), and haven't been working on this in that time either. If anyone would like to continue development themselves, I'd be more than happy to transfer this repo into an organization and point people there.

Build Status Documentation Status Coverage Status

So, this is still in-progress, and I'm putting off writing a real readme until it's closer to a real release. IN the mean time, here're some screenshots

Acknowledgements

In addition to the libraries this project uses, I need to thank the Eve alliances Test Alliance Please Ignore and Brave. This app was originally written as a replacement for Test's old SRP app, but Brave ended up needing one before we were ready to deploy it for Test. Brave's early IT team and alliance members were great "beta" testers, making suggestions that improved the app in a myriad of ways.

A very large thank you to Galaxy Android as well for alerting me to a security vulnerability that was fixed in v0.12.12.

Developing

Dependencies

In addition to the dependencies listed in setup.py/requirements.txt, EVE-SRP depends on a Javascript packages. A couple of them are Node.js command line utilities (UglifyJS2, LESS), but the majority are used as part of the user interface. To install all development dependencies at once you can use the build-deps make target:

make build-deps

This will install all of the Python and Javascript dependencies needed for developing EVE-SRP. After you've installed the dependencies, you'll need to generate the CSS and Javascript sources.

make all

If the Javascript minimization is causing a problem, you can disable it by defining the DEBUG variable for make.

DEBUG="true" make all

To run the development server, you can use the included evesrp command line utility. I recommend installing the project in editable mode to get access to it.

./setup.py develop
evesrp -c config.py runserver

Deploying

If all you want to do is run EVE-SRP, you can skip the steps above and install it from PyPI (in a virtualenv!) like this:

pip install EVE-SRP

If you're planning on using either the Brave Core or one of the OAuth-based authentication mechanisms, you'll need to install either of those options like so:

pip install EVE-SRP[BraveCore]

or

pip install EVE-SRP[OAuth,BraveCore]

Quick Side Note: If your system has an older version of pip (<6.0) or setuptools (<8.0) you will need to update them.

You will also need the appropriate adapter for your database of choice. For example, I use PostgreSQL, and use the psycopg2 adapter:

pip install psycopg2

You then need to set up the database for your application. Continuing the example with Postgres, creating the database might look something like this:

psql -c 'CREATE DATABASE evesrp;'

Now you need to create the configuration file. This will tell EVE-SRP how to connect to the database, how users should log in, and other things like that. There's an example of an instance folder using Brave's Core and Test's OAuth provider for authentication with customized killmail processing in the 'examples' folder in the repository (browsable through GitHub).

With an instance folder set up like the example, you can then create the database tables for the app using the management command. This command is installed as part of installing the EVE-SRP package.

evesrp -i /path/to/instance/folder/ db create

The final step is setting up the WSGI part of the app. For a super simple solution, you can use the server built into Flask. The run.py file in the 'examples' folder is setup to work like this. This server is not meant for production use, and is only good for verifying that things work.

Using Heroku, you can use the same run.py file with a Procfile like this:

web: gunicorn run:app

For a standalone Nginx+uWSGI setup with Nginx listening on a Unix domain socket, your uwsgi command might looks something like this:

uwsgi -s /path/to/uwsgi.sock -H /path/to/virtualenv -w run:app

For more information on how to serve a Python app using Gunicorn, check out Flask's documentation on deployment.

Dependencies

EVE-SRP requires Python 2.7 or >=3.3 and a database (with connector) that is supported by SQLAlchemy. EVE-SRP is typically developed against PostgreSQL with the psycopg2 adapter. It is also tested regularly with the following database adapters:

evesrp's People

Contributors

abzde avatar acidity avatar adrien-f avatar krylik avatar paxswill avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

evesrp's Issues

Separate Killmails from Requests

Different divisions may have different requirements for processing, so figure out if there's a way to facilitate that.

(pasting in from #86)

Right now the information from a killmail has a 1-to-1 relationship with the information about a request (sidenote: Killmail info is like the time of loss, where, who. Request info is payout, modifiers, division). Splitting the concept of a request would also mean changing a division would no longer be a thing, and would mean you could apply to multiple divisions at once.

Problems to solve include:

  • What information to share across divisions and how to share it.
  • How to migrate existing requests (probably an Alembic migration from hell).

Migrate to Flask-Script

Use Flask-Script for the little admin tasks like creating the database schema or migrating the schema.

Also investigate providing low-level admin tasks like creating+modifying divisions, requests, etc. Maybe also allow forcing changes to go through using the constraint/verification skipping I was thinking of adding for the tests.

Nice Error Pages

Error pages (404, 403, etc) are currently a boring default. They should be styled like the rest of the app.

Updatable Request Details

Details should be updatable, in case the submitter messes up. When updated, the request should be set back to evaluating if it was marked incomplete.

Add an admin permission

Admin permissions should be grantable in divisions separately from the site admin permissions.

Add a way to export data

CSV for Excel, although XML with the API key process would probably work best (ImportXML in spreadsheets would be cool).

Add an Auditor permission level

Auditors can view requests, but not change them. Pretty simple, and gives a way to allow leadership to see what people are reimbursing (like a CEO seeing what his corp members are submitting for reimbursement at an alliance level).

User information pages

Show users stuff like maybe stats (#1), what groups they're in (although the auth source should handle that), what divisions they have permissions to.

Add User Notes

Reviewers/Payers should be able to make notes about Users, like if a user has been warned about something and shouldn't be given leeway in the future.

Tests

The spate of bugs I ran into point to a massive need for proper testing. I've skimped on them so far, but there've been a bunch of regressions and I need to fix them.

Payout View

Need to add a payout view so payouts can be done quickly by payers

Batch eval mode

I want to be able to evaluate all ships of a certain type (maybe in a certain system) with links to go to the next request directly.

Forms are too wide

The default form width is really wide (at least for medium+ size viewports).

Fix Core support (groups)

Brave Core support is lacking, it doesn't really work with groups yet and I need to figure out what needs to happen to fix it.

Reviewing Lock

Sometimes reviewers will both be on the same request at once. It'd be nice to have maybe an advisory lock for a few minutes after a reviewer opens a page. Maybe have the lock get refreshed when the page is viewed (ajax-y and maybe a view event thingy?).

Have a way to see the base payout

Maybe hover on the calculated payout? I don't want the base payout super prominent as it can be confusing for some people (me when doing payouts, although payout mode should help with that).

Make named admins configurable

Right now 'paxswill' is hard-coded in to the TestAuth module. This needs to be fixed before too long so other people can stand up their own instances and play (and maybe contribute).

I'm thinking of adding an argument to the AuthMethod constructor taking a list of IDs to treat as admins. That way every AuthMethod will have access to it, and I can probably work it into the constructor to set the admin flag.

Notifications

Have a way to notify users (maybe groups as well?) for comments on requests, or when certain statuses are done. Maybe add a button for reviewers?

Live update the payout listing

Payout mode can have a high probability of double-payouts if two people are paying out at the same time. Tangentially related to #16, but this is slightly different, so rows can get updated in real time.

Add a generic AuthMethod

Something like OpenID or along those lines. A non-affiliated option. It should also be set as the new default AuthMethod, to make initial setup easier.

Emotes

Deployment configurable emotes would be rad.

Filterable lists

Lists of requests should be filterable by things like date, ship, system, pilot, user, corp, alliance, etc.

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.