Database Schema
***************

Card
^^^^

* _id [internal]
* artifacts [list]
* actualcost [float]
* actualcosthistory [list of dictionaries]:

  * actualcost [float]
  * datetime [datetime]
  * username [string]

* actualtime [float]
* actualtimehistory [list of dictionaries]:

  * actualtime [float]
  * datetime [datetime]
  * username [string]

* blocked [string]
* blockedhistory [list of dictionaries]:

  * action [string]
  * datetime [datetime]
  * reason [string]
  * username [string]

* comments [list]
* coowner [string]
* coreviewer [string]
* creator [string]
* difficulty [string]
* estimatedcost [float]
* estimatedcosthistory [list of dictionaries]:

  * datetime [datetime]
  * estimatedcost [float]
  * username [string]

* estimatedtime [float]
* estimatedtimehistory [list of dictionaries]:

  * datetime [datetime]
  * estimatedtime [float]
  * username [string]

* hierarchy [string]
* history [list of dictionaries]:

  * attribute [string]
  * datetime [datetime]
  * mode [string]
  * username [string]
  * value [string]

* id [string]
* lastchanged [datetime]
* lastchangedby [string]
* lasttouched [datetime]
* lasttouchedby [string]
* mode [string]
* owner [string]
* position [integer]
* priority [string]
* project [string]
* reassigncoowner [string]
* reassigncoreviewer [string]
* reassignowner [string]
* reassignreviewer [string]
* recurring [boolean]
* reopened [boolean]
* resolution [string]
* reviewer [string]
* rules [list of dictionaries]:

  * components [list]
  * lasttriggered [datetime]
  * rule [string]
  * status [string]
  * usage [string]

* severity [string]
* state [string]
* statehistory [list of dictionaries]:

  * datetime [datetime]
  * state [string]
  * username [string]

* testcases [list]
* title [string]
* type [string]

Member
^^^^^^

* _id [internal]
* card [string]
* category [string]
* classofservice [string]
* columns [string]
* customer [string]
* displayname [string]
* filterbarcomponents [dictionary]:

  * card [boolean]
  * category [boolean]
  * classofservice [boolean]
  * columns [boolean]
  * customer [boolean]
  * fontsize [boolean]
  * hashtag [boolean]
  * iteration [boolean]
  * kanbanboard [boolean]
  * priority [boolean]
  * project [boolean]
  * release [boolean]
  * severity [boolean]
  * subteam [boolean]
  * swimlanes [boolean]
  * teammember [boolean]
  * type [boolean]

* filtername [string]
* filters [list of dictionaries]:

  * card [string]
  * category [string]
  * columns [string]
  * customer [string]
  * filtername [string]
  * fontsize [string]
  * hashtag [string]
  * iteration [string]
  * kanbanboard [string]
  * priority [string]
  * project [string]
  * release [string]
  * severity [string]
  * subteam [string]
  * teammember [string]
  * type [string]

* firstname [string]
* fontsize [string]
* fullname [string]
* hashtag [string]
* iteration [string]
* kanbanboard [string]
* lastname [string]
* listview [list]
* priority [string]
* project [string]
* projects [list of dictionaries]:

  * project [string]
  * role [string]

* project_wips [dictionary]:

  * <project> [dictionary]:

    * closedwip [string]
    * enforcewiplimits [boolean]
    * step<step_no>buffermaxwip [integer]
    * step<step_no>bufferminwip [integer]
    * step<step_no>counterpartmaxwip [integer]
    * step<step_no>counterpartminwip [integer]
    * step<step_no>mainmaxwip [integer]
    * step<step_no>mainminwip [integer]

* release [string]
* reports [list of dictionaries]:

  * reportname [string]
  * reportcriteria [string]

* routine_cards [list]
* severity [string]
* subteam [string]
* swimlanes [string]
* team [string]
* teammember [string]
* theme [string]
* type [string]
* username [string]

Project
^^^^^^^

* _id [internal]
* announcements [list]
* categories [list of dictionaries]:

  * category [string]
  * colour [string]

* creator [string]
* currency [string]
* customattributes [dictionary]
* customstates [dictionary]
* entrycriteria [dictionary]
* exitcriteria [dictionary]
* global_wips [dictionary]:

  * closedwip [string]
  * enforcewiplimits [boolean]
  * step<step_no>sharedmaxwip [integer]
  * wip_grouping [string]
  * wip_limit [integer]
  * wip_scope [string]

* master_host [string]
* master_port [string]
* members [list of dictionaries]:

  * colour [string]
  * role [string]
  * username [string]

* nextcardnumber [integer]
* next_synchronisation [datetime]
* project [string]
* project_normalised [string]
* releases [list of dictionaries]:

  * end_date [datetime]
  * release [string]
  * start_date [datetime]

* role [string]
* synchronisation_period [string]
* synchronised_upto [integer should be datetime]
* workflow [list of exactly 12 dictionaries]:

  * buffercolumn [dictionary]:
  
    * name [string]
    * centric [string]
    * state [string]
    * description [string]

  * counterpartcolumn [dictionary]:
  
    * name [string]
    * centric [string]
    * state [string]
    * description [string]

  * maincolumn [dictionary]:
  
    * name [string]
    * centric [string]
    * state [string]
    * description [string]
    
  * step [string]

* workflow_index [dictionary]:

  * buffer_column_centrics [list]
  * buffer_column_descriptions [list]
  * buffer_column_names [list]
  * buffer_column_states [list]
  * condensed_column_names [list]
  * condensed_column_states [list]
  * condensed_column_states_dict [dictionary]
  * counterpart_column_centrics [list]
  * counterpart_column_descriptions [list]
  * counterpart_column_names [list]
  * counterpart_column_states [list]
  * main_column_centrics [list]
  * main_column_desciptions [list]
  * main_column_names [list]
  * main_column_states [list]
  * precedingacceptancetesting [string]
  * precedingacceptancetestingaccepted [string]
  * precedinganalysed [string]
  * precedinganalysis [string]
  * precedingclosed [string]
  * precedingdefined [string]
  * precedingdeveloped [string]
  * precedingdevelopment [string]
  * step<step_no>buffercentric [string]
  * step<step_no>bufferdescription [string]
  * step<step_no>buffername [string]
  * step<step_no>bufferstate [string]
  * step<step_no>counterpartcentric [string]
  * step<step_no>counterpartdescription [string]
  * step<step_no>counterpartname [string]
  * step<step_no>counterpartstate [string]
  * step<step_no>maincentric [string]
  * step<step_no>maindescription [string]
  * step<step_no>mainname [string]
  * step<step_no>mainstate [string]
  * steps [list]
  * uncondensed_column_centrics [list]
  * uncondensed_column_descriptions [list]
  * uncondensed_column_names [list]
  * uncondensed_column_states [list]

Session
^^^^^^^

* _id [internal]
* displayname [string]
* firstname [string]
* fullname [string]
* ip_address [string]
* lastaccess [datetime]
* lastname [string]
* recent_cards [list]
* session_id [string]
* user_agent [string]
* username [string]
