Elections rewrite in Flask (was: Web application frameworks and the future)

Ian Weller ian at ianweller.org
Wed Jul 4 09:49:15 UTC 2012


On Thu, Jun 28, 2012 at 01:23:08PM -0700, Toshio Kuratomi wrote:
> elections          app*       TG1         has a TG2 branch and ianweller
>                                           trying a flask branch for
>                                           comparison

A bit of discussion on this, just to get it out of my head and written
down somewhere...

What I'm working on can no longer really be described as a "branch" but
more of a rework. I'm taking advantage of rewriting the application for
a new framework in order to fix what (I believe) are some issues with
the current voting platform (and please correct me if I'm wrong about
any of these, because I'm not used to reading TG code and most of my
knowledge of the code has been because of grep):

- Elections cannot be run without the intervention of an election admin
- The concept of an election admin is not well implemented in code
- Election admins are limited to entire FAS groups, as opposed to FAS
  users or role requirements within FAS groups
- Range voting is the only supported system to run an election
- The interface for range voting is not especially user-friendly
- Election results must be produced and unembargoed by someone with
  access to the database (and knowledge of producing them)

Some things I'm planning on doing specifically to alleviate the above:

- Elections may be created by anyone with a FAS account, through the web
  interface
  - In order for the election to show up on the home page, someone in
    the FAS elections group has to mark it as such
  - Election admins are configurable by adding FAS users or groups
  - Election admins can see results at the end of the voting period and
    unembargo them
- There will be a documented method for creating new election types
- I will find some way to make the range voting interface make more
  sense to people without having to think about it

Comments requested -- especially regarding things you would change about
our current elections app.

--

Working on this also led to Flask-FAS [1], a Flask extension for
handling FAS logins, using python-fedora's FasProxyClient. I wouldn't
quite consider the API stable quite yet so don't go using it in
production expecting it to stay the same.

[1]: http://git.fedorahosted.org/git/?p=flask-fas.git;a=summary

There's a lot of extra code that goes into making Flask-FAS usable in an
application but they require design decisions on the part of the
application developer, so I will be hacking together a small sample app
and putting it in flask-fas.git shortly after sending this email.

-- 
Ian Weller <ian at ianweller.org>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: not available
URL: <http://lists.fedoraproject.org/pipermail/infrastructure/attachments/20120704/9fdda0d5/attachment.sig>


More information about the infrastructure mailing list