Skip to content
This repository has been archived by the owner on Dec 26, 2019. It is now read-only.

Elections Module

spilliams edited this page Apr 2, 2012 · 4 revisions

Here is the current relevant schema with proposed changes:
elections schema

Here's how it works.

##Elections

  • When there's an Election for a new Board (the Group type, not the "Board of Directors"), or a new Award (also a Group type, see below) an Election object is created (via the Admin panel). It provides the necessary dates and Roles for the election.
  • By default, an Election's Roles are pulled from its to_group type, and a list of nominatable Users (or Roles, see below) is provided by the from_group.
  • Any undesired Roles may be removed from the Election by an admin.
  • When a user looks at an Election's page she sees a listing of all of its Roles, and in each Role she sees a listing of all Nominations for a Position in that Role, as well as a form to enter her own Nominations (depending on the date: maybe she only sees "Vote" links, or no links at all for an Election that's over)
  • When she nominates someone for a new Position, three things are created
    • Nomination links her name to her opinion, and gives her a place to comment
    • Position links the nominee to the Role and Group, and gives the nominee a place to put a platform (in the form of a Document uploaded to the Position's Group). Position also links upstream to the Election (note though that Election must go through ElectionRole and Role to get to Position).
    • NominationPosition associates her Nomination to the relevant Position
  • A link is available to the nominee to accept or deny the Nomination
  • A link is available to the nominee to upload a "platform".
  • A link is available to all users to "second" or "vote" on a Nomination, depending on the Election's dates.
  • All "denied" Nominations are displayed below others in the Role listing, so that Users know what not to nominate
  • All "accepted" Nominations are displayed above others in the Role listing
  • The Elections index will show a listing of all Elections, and provide links to the results, or voting booths, as necessary
  • When a Nomination is made and the Position created, Position's "elected" and "resigned" dates are populated from the Election.

###ElectionRole Options

In some cases, more than one person may be nominated for a Position (ie "Scott Wasserman and Caity Pitts for Best Onstage Couple"). In other cases, an entire group of people may be nominated (ie "The Cast of Me And My Girl for Best Ensemble Cast"). In yet others, only one is allowed ("Will Weiner for President"). The multiple? and mass? columns of the ElectionRoles specify this model.
If the ElectionRole is mass-nominatable then that category in the election will pull from the from_group's Roles. An ElectionRole is mass-nominatable if and only if the Election's from_group and to_group are of the same type. When a mass nomination is created, all positions from the old Role are duplicated into the new Role.

ElectionRole specifies the number of finalists as well, the default being 0, which signifies that all seconded and accepted nominations will continue to the voting round.

###Dates

  • Before an Election: The page says "this election is not open yet. Check back on mm/dd/yy!"
  • After open_date but before vote_date: Election is open for new Nominations
  • After vote_date but before closed_date: Election is closed for new Nominations, current accepted, seconded Nominations are displayed for voting.
  • After closed_date: The page shows the results of the Election

##Awards

Awards are really not that special. I mean from a schema point of view. For instance: "Kudos Awards" is of type Award, which inherits form Group. Admin starts a new Election from Group "Scotch'n'Soda" to Group "Kudos Awards". elected_date is set to Woodscotch this year, resigned_date is set to Woodscotch next year. open_date, vote_date and closed_date are set accordingly. Election instance is saved, which triggers:

App goes out and finds all Roles applicable for a Group of the same type as the Election's to_group. Each of these Roles is associated with a new ElectionRole object, which also associates to the Election. The list is presented to the admin for input on the options, like deleting the ElectionRole entirely (making that role unavailable in the election), as well as multiple, mass and num_finalists. Admin checks over all this, and clicks the big green button.

Roles for an Award group include things like "Best Lead Actor", "Cutest Couple" etc.

When the "election" is all said and done, the user will have a position in the "Kudos Awards" group! It may be desired to put a user's Award positions in a different spot, or styled differently somehow, than his other positions.

##Things Left Unmodeled

  • write-ins
  • electing new awards, resigning old awards
  • some Positions have different "elected" and/or "resigned" dates than others
  • privileges: "published" state?
  • privileges: who can create Elections?
  • privileges: "secret elections"
Clone this wiki locally