; ============================================================================== ; Voting platform configuration file ; ============================================================================== ; ; This file contains all parameters for "branding" the voting platform to ; specific organisations/for specific purposes. It also includes configurable ; fields for the Policy model (built based on the initiative model) and its ; possible states, the idea to eventually enable both to be configurable ; ; parameters (*default) ; ------------------------------------------------------------------------------ [settings] DEFAULT_TIMEZONE = Europe/Berlin DEFAULT_LANGUAGE = en-us ACCOUNT_DELETION_EXPUNGE_HOURS = 1 MIN_SEARCH_LENGTH = 3 VIRTUAL_HOST_LIST = localhost MINIMUM_MODERATOR_VOTE = 5 MINIMUM_FEMALE_MODERATOR_VOTES = 3 MINIMUM_DIVERSE_MODERATOR_VOTES = 2 ; Customizable settings to brand voting tool DEFAULT_FROM_EMAIL = keine-antwort@bewegung.jetzt DEFAULT_CONTACT_EMAIL = hallo@bewegung.jetzt THEME_CONTACT_EMAIL = support@bewegung.jetzt INITIATIVE_SUPPORT_EMAIL = plenum-hilfe@bewegung.jetzt CORS_ORIGIN_WHITELIST = bewegung.jetzt,portal.bewegung.jetzt URL_HOWTO_INITIATIVE = https://marktplatz.bewegung.jetzt/t/eine-initiative-starten-und-mitinitiatoren-einladen/2593 PLATFORM_TITLE = DEMOKRATIE IN BEWEGUNG PLATFORM_SUB_TITLE = Abstimmungsplattform PLATFORM_TITLE_ACRONYM = DiB PLATFORM_DEFAULT_URL = https://bewegung.jetzt PLATFORM_MARKETPLACE_URL = https://marktplatz.bewegung.jetzt PLATFORM_REGISTRATION_URL = https://bewegung.jetzt/bewegerin-werden/ PLATFORM_LEGAL_URL = https://bewegung.jetzt/impressum/ PLATFORM_DATA_PROTECTION_URL = https://bewegung.jetzt/datenschutz/ INITIATIVE_TEMPLATE_URL = https://docs.google.com/document/d/1cih1abHKN1mpqN_YpfXE5pAozcAELJ68wJd4Yi8G1u4/edit INITIATIVE_EXPLANATION_URL = https://bewegung.jetzt/2017/04/03/so-funktioniert-das-initiativprinzip/ PLATFORM_VOTING_REGULATION_URL = https://bewegung.jetzt/wp-content/uploads/2017/12/Abstimmungsordnung-Stand-27.-November-2017.pdf PLATFORM_TECH_DEVELOPMENT_URL = https://marktplatz.bewegung.jetzt/c/weiter-entwicklung-plenum-marktplatz PLATFORM_TECH_SUPPORT_URL = https://marktplatz.bewegung.jetzt/groups/Team_Tech_Plenum PLATFORM_TECH_SOURCE_CODE_URL = https://github.com/DemokratieInBewegung/abstimmungstool PLATFORM_TECH_DEVELOPMENT_TICKET_URL = https://github.com/DemokratieInBewegung/abstimmungstool/projects/3 PLATFORM_SOCIAL_MEDIA_LOGO_URL = /img/dib-logo-social.jpg PLATFORM_LOGO_URL = /img/dib_logo.svg SITE_FONT_CSS_URL = https://fonts.googleapis.com/css?family=Merriweather:300,400,400i,700|Rubik:400,400i,500,500i,700 SITE_THEME_CSS_URL = /static/dib.css SITE_JS_URL = js/dib/utils.js ; Available languages on the voting platform [alternative_language_list] de = {% trans "Deutsch" %} en = {% trans "English" %} ; These settings determine the structure of a policy. A change will force an ; update of the database, so unless absolutely necessary. DO NOT MODIFY THE ; POLICY FIELDS [policy] POLICY_FIELDS = title,subtitle,description,challenge,demand,expected_cost,proposed_financing,methodology,initial_argument,context,scope,topic,text_content POLICY_INITIATORS_COUNT = 3 POLICY_MODERATION_CONTROL_FIELD_LABEL_LIST = {% trans "Contradicts in some point with human rights or human dignity" %},{% trans "Contains pejorative terms against certain groups (eg Immigrants" %},{% trans "Is excluding/rasict/homophobe/discriminatory/transphobe/sexist" %},{% trans "Is nationalistic" %},{% trans "Is un-democratic?" %},{% trans "Leads to less transparency" %},{% trans "Leads to more patronizing or exclusion of persons in participating" %},{% trans "Is putting a burden on future generations" %},{% trans "Endangers the climate and our planet" %},{% trans "Leads to a widening of the prospertiy divide (rich get richer, poor get poorer" %},{% trans "Puts groups of disadvantaged persons at even more disadvantages." %} POLICY_DEFAULT_FILTER_LIST = draft,submitted,validated,in_discussion,released ; not required in theory, backcompat fields for Initiatives POLICY_ABSTENTION_START = date(2017, 12, 1) # Everything published after this has abstentions POLICY_SPEED_PHASE_END = date(2017, 8, 21) # Everything published before this has speed phase [policy_vote_state_list] NO = 0 YES = 1 ABSTAIN = 2 [policy_skeleton_config_dict] title = models.CharField(max_length=255) subtitle = models.CharField(max_length=1024, blank=True) description = models.TextField(blank=True) challenge = models.TextField(blank=True) demand = models.TextField(blank=True) expected_cost = models.TextField(blank=True) proposed_financing = models.TextField(blank=True) methodology = models.TextField(blank=True) initial_argument = models.TextField(blank=True) ;previous-Einordnung context = models.CharField(max_length=60,choices=[("finance"), {% trans "Finance" %}),("foreign_policy", {% trans "Foreign Policy" %}),("domestic_policy", {% trans "Domestic Policy" %}),("economy", {% trans "Economy" %}),("energy", {% trans "Energy" %}),("justice_consumer_protection", {% trans "Justice and Consumer Protection" %}),("labor_social_welfare", {% trans "Labor and Social Welfare" %}),("defense", {% trans "Defense" %}),("agriculture", {% trans "Agriculture" %}),("family_affairs", {% trans "Family Affairs" %}),("health", {% trans "Health" %}),("transport_digital_infrastructure", {% trans "Transport and Digital Infrastructure" %}),("environmental_protection", {% trans "Environmental Protection" %}),("education_research", {% trans "Education and Research" %}),("economic_cooperation_development", {% trans "Economic Cooperation and Development" %})]) ;previous-Ebene scope = models.CharField(max_length=60,choices=[("european_level", {% trans "European Level" %}),("national_level_austria", {% trans "National/Austria" %}),("national_level_belgium", {% trans "National/Belgium" %}),("national_level_bulgaria", {% trans "National/Bulgaria" %}),("national_level_croatia", {% trans "National/Croatia" %}),("national_level_cyprus", {% trans "National/Cyprus" %}),("national_level_czech_republic", {% trans "National/Czech Republic" %}),("national_level_denmark", {% trans "National/Denmark" %}),("national_level_estonia", {% trans "National/Estonia" %}),("national_level_finland", {% trans "National/Finland" %}),("national_level_france", {% trans "National/France" %}),("national_level_germany", {% trans "National/Germany" %}),("national_level_greecce", {% trans "National/Greece" %}),("national_level_hungary", {% trans "National/Hungary" %}),("national_level_ireland", {% trans "National/Ireland" %}),("national_level_luxembourg", {% trans "National/Luxembourg" %}),("national_level_malta", {% trans "National/Malta" %}),("national_level_netherlands", {% trans "National/Netherlands" %}),("national_level_poland", {% trans "National/Poland" %}),("national_level_portugal", {% trans "National/Portugal" %}),("national_level_romania", {% trans "National/Romania" %}),("national_level_slovakia", {% trans "National/Slovakia" %}),("national_level_slovenia", {% trans "National/Slovenia" %}),("national_level_spain", {% trans "National/Spain" %}),("national_level_sweden", {% trans "National/Sweden" %}),("national_level_united_kingdom", {% trans "National/United Kingdom" %}),("local_level", {% trans "Local Level" %})]) ;previous-Bereich topic = models.CharField(max_length=60,choices=[("smart_state", {% trans "Smart State" %}),("economic_renaissance", {% trans "Economic Rennaisance" %}),("social_equalty", {% trans "Social Equality" %}),("global_balance", {% trans "Global Balance" %}),("citizen_empowerment", {% trans "Citizen Empowerment" %}),("eu_reform", {% trans "EU Reform" %})] text_content = models.TextField(blank=True), tags = models.ManyToManyField(Tag, blank=True) ; POLICY field titles [policy_field_title_dict] title = {% trans "Headline" %} subtitle = {% trans "Teaser" %} description = {% trans "Summary" %} challenge = {% trans "Situation Assessment" %} demand = {% trans "Policy Proposal" %} expected_cost = {% trans "Cost Estimation" %} proposed_financing = {% trans "Financial Proposition" %} methodology = {% trans "Methodolgy" %} initial_argument = {% trans "Initiator Argument" %} context = {% trans "Context" %} scope = {% trans "Scope" %} topic = {% trans "Topic" %} text_content= {% trans "Policy Text" %} tags = {% trans "Keywords" %} ; POLICY field tooltips [policy_field_description_dict] title = {% trans "The title should state the policy in a short and precise manner." %} subtitle = {% trans "Briefly describe the problem or situation the policy should adress. Use 1-2 sentences only." %} description = {% trans "Summarize the Policy in a 3-4 sentences." %} challenge = {% trans "State and assess the situation or problem, the Policy should adress in 3-4 sentences." %} demand = {% trans "What are the concrete demands or proposals?" %} expected_cost = {% trans "Will the Policy cause costs? Try to give an estimation of the cost associated with the Policy." %} proposed_financing = {% trans "Briefly describe ideas of how costs associated with the Policy could be covered, for example by financing through taxable income." %} methodology = {% trans "Have you consulted experts? What information is the assessment based on? Is it possible to name information sources?" %} initial_argument = {% trans "Please state why this Policy is relevant for you and why you are submitting it." %} context = {% trans "The context this Policy is belonging to, for example Health, Economy, Environment." %} scope = {% trans "The scope for this Policy, for example European or National level." %} topic = {% trans "The specific challenge this Policy can be associated to." %} text_content={% trans "The actual policy text content" %} tags = {% trans "Comma separated list of keywords by which this Policy is searchable" %} ; POLICY states and transitions (more or less corresponding to initiative states ; used to be globals.py STATES, like "p", "i", etc ; ; Permissions groups ; Owner can view his document ; Manager can do all ; Author can create documents ; Auditor can view documents ; Assignor can view/modify/delete/create documents, assign users to specific documents ; Assignee can view/modify/delete/ only on some documents (assigned); ; Associate can work only on documents under condition (related to something) ; ; scope/context/topic ~ group/function/category ; user role => determines items user can interact with (vote/comment etc) ; user group/function/category => determines items use can view, scope: vote etc ; ; anonymous, user, moderator(users), team, admin ; STATE (* public) TRANSITIONS PERMISSIONS ; --------------------------------------------------------------------------------------------- ; draft user:edit->draft policy_edit ; user:delete->deleted policy_delete ; user:submit->submitted policy_submit ; user+team:publish->published s policy_publish ; submitted team:validate->validated policy_validate ; team:invalidate->invalidated policy_invalidate ; team:reject->rejected policy_reject ; invalidated user:edit->invalidated ; user:delete->deleted ; user:submit->submitted ; rejected user:challenge->challenged policy_challenge ; admin:delete->deleted ; admin:hide->hidden policy_hide ; team:close->closed policy_closed ; closed team:reopen->draft poliyc_reopen ; hidden admin:unhide->rejected policy_unhide ; deleted admin:undelete->hidden policy_undelete ; challenged moderator:validate->challenged/validated ; moderator:reject->challened/rejected ; validated user:support->validated/rejected/supported policy_support ; user:unsupport->validated/rejected/supported policy_unsupport ; supported user:clone->[make variant policy] policy_clone ; team:discuss->in discussion policy_discuss ; in discussion team:review->in review policy_review ; in review user:edit->in review ; user:stage->staged policy_stage ; staged team:unstage->in review: policy_unstage ; team:release->released policy_release ; released user:vote->accepted/rejected policy_vote ; user:delegate->accepted/rejected policy_delegate ; accepted team:publish->published policy_publish ; published user:amend->amened policy_amend ; amended team:validate->validated ; team:invalidated->amended ; team:reject->published ; team:publish->published [policy_state_list] DRAFT = draft SUBMITTED = submitted INVALIDATED = invalidated REJECTED = rejected HIDDEN = hidden DELETED = deleted CHALLENGED = challenged VALIDATED = validated SUPPORTED = supported IN_DISCUSSION = in_discussion IN_REVIEW = in_review STAGED = staged RELEASED = released ACCEPTED = accepted PUBLISHED = published AMENDED = amended CLOSED = closed [policy_state_value_list] DRAFT = {% trans "in preparation" %} SUBMITTED = {% trans "submitted for validation" %} INVALIDATED = {% trans "send back for corrections" %} REJECTED = {% trans "was rejected" %} HIDDEN = {% trans "was hidden" %} DELETED = {% trans "was deleted" %} CHALLENGED = {% trans "was challenged" %} VALIDATED = {% trans "was validated for seeking support" %} SUPPORTED = {% trans "is supported" %} IN_DISCUSSION = {% trans "is in discussion" %} IN_REVIEW = {% trans "is in final review" %} STAGED = {% trans "has been staged for voting" %} RELEASED = {% trans "has been released for voting" %} ACCEPTED = {% trans "has been accepted" %} PUBLISHED = {% trans "has been published" %} AMENDED = {% trans "has been amended" %} CLOSED = {% trans "has been closed" %} [policy_transition_state_list] EDIT = policy_edit DELETE = policy_delete SUBMIT = policy_submit PUBLISH = policy_publish VALIDATE = policy_validate INVALIDATE = policy_invalidate REJECT = policy_reject CHALLENGE = policy_challenge HIDE = policy_hide UNHIDE = policy_unhide UNDELETE = policy_undelete SUPPORT = policy_support UNSUPPORT = policy_unsupport CLONE = policy_clone DISCUSS = policy_discuss REVIEW = policy_review STAGE = policy_stage UNSTAGE = policy_unstage RELEASE = policy_release VOTE = policy_vote DELEGATE = policy_delegate AMEND = policy_amend CLOSED = policy_closed REOPEN = policy_reopen [policy_transition_value_list] EDIT = {% trans "Edit Policy" %} DELETE = {% trans "Delete Policy" %} SUBMIT = {% trans "Submit Policy for Validation" %} PUBLISH = {% trans "Publish Policy" %} VALIDATE = {% trans "Validate Policy" %} INVALIDATE = {% trans "Invalidate Policy" %} REJECT = {% trans "Reject Policy" %} CHALLENGE = {% trans "Challenge Policy" %} HIDE = {% trans "Hide Policy" %} UNHIDE = {% trans "Unhide Policy" %} SUPPORT = {% trans "Support Policy" %} UNSUPPORT = {% trans "Unsupport Policy" %} CLONE = {% trans "Clone Policy" %} DISCUSS = {% trans "Move Policy to Discussion" %} REVIEW = {% trans "Move Policy to Review" %} STAGE = {% trans "Submit finalized Policy for Validation" %} UNSTAGE = {% trans "Send Policy back to review" %} RELEASE = {% trans "Release Policy for voting" %} VOTE = {% trans "Vote on Policy" %} DELEGATE = {% trans "Delegate Vote for this Policy" %} AMEND = {% trans "Make a change to this Policy (requires new validation)" %} CLOSED = {% trans "Close this Policy" %} REOPEN = {% trans "Reopen this Policy and submit it again" %} [policy_transition_permission_list] policy_edit = {% trans "Can edit policy" %} policy_delete = {% trans "Can delete policy" %} policy_submit = {% trans "Can submit policy" %} policy_publish = {% trans "Can publish policy" %} policy_validate = {% trans "Can validate policy" %} policy_invalidate = {% trans "Can send policy back for corrections" %} policy_reject = {% trans "Can reject policy" %} policy_challenge = {% trans "Can challenge policy" %} policy_hide = {% trans "Can hide policy" %} policy_unhide = {% trans "Can unhide policy" %} policy_undelete = {% trans "Can undelete policy" %} policy_support = {% trans "Can support policy" %} policy_unsupport = {% trans "Can revoke policy support" %} policy_clone = {% trans "Can clone policy" %} policy_discuss = {% trans "Can discuss policy" %} policy_review = {% trans "Can review policy" %} policy_stage = {% trans "Can stage policy for vote" %} policy_unstage = {% trans "Can unstage policy for corrections" %} policy_release = {% trans "Can release policy for voting" %} policy_vote = {% trans "Can vote policy on policy" %} policy_delegate = {% trans "Can delegate vote for policy" %} policy_amend = {% trans "Can amend this policy" %} policy_close = {% trans "Can close this policy" %} policy_reopen = {% trans "Reopen this policy" %} [policy_role_list] USER = user TEAM = team ADMIN = admin MODERATOR = moderator [policy_role_value_list] USER = {% trans "Platform Users" %} TEAM = {% trans "Platform Policy Team Members" %} ADMIN = {% trans "Platform Administrators" %} MODERATOR = {% trans "Platform Challenge Moderator" %} ; which role can perform which actions/transitions [policy_role_transition_mapping] USER = policy_edit,policy_delete,policy_submit,policy_challenge,policy_support,policy_unsupport,policy_clone,policy_stage,policy_vote,policy_delegate,policy_amend,policy_reopen TEAM = policy_validate,policy_invalidate,policy_reject,policy_discuss,policy_review,policy_unstage,policy_release,policy_publish,policy_close ADMIN = policy_hide,policy_unhide,policy_undelete MODERATOR = policy_validate,policy_reject ; which actions/transitions are available in what state [policy_state_transition_mapping] DRAFT = policy_edit,policy_delete,policy_submit,policy_publish SUBMITTED = policy_validate,policy_invalidate,policy_reject INVALIDATED = policy_edit,policy_delete,policy_submit REJECTED = policy_challenge,policy_delete,policy_hide,policy_unhide,policy_undelete,policy_close CLOSED = policy_reopen,policy_delete,policy_hide HIDDEN = policy_unhide DELETED = policy_undelete CHALLENGED = policy_validate,policy_reject VALIDATED = policy_support,policy_unsupport SUPPORTED = policy_clone,policy_discuss IN_DISCUSSION = policy_review IN_REVIEW = policy_edit,policy_stage STAGED = policy_unstage,policy_release RELEASED = policy_vote,policy_delegate ACCEPTED = policy_publish PUBLISHED = policy_edit AMENDED = policy_validate,policy_invalidate,policy_reject,policy_publish ; durations of various phases [policy_duration_list] POLICY_RELAUNCH_REJECTED_MORATORIUM = 26 POLICY_VOTING_DURATION = 1 POLICY_DISCUSSING_DURATION = 3 POLICY_REVIEW_DURATION = 2 ; notifications [notification_invitation_state_list] SENT = invite_sent ACCEPTED = invite_accepted REJECTED = invite_rejected [notification_policy_status_list] EDITED = policy_edited SUBMITTED = policy_submitted VALIDATED = policy_validated INVALIDATED = policy_invalidated SUPPORTED = policy_supported CHALLENGED = policy_challenged IN_DISCUSSION = policy_in_discussion IN_REVIEW = policy_in_review STAGED = policy_staged RELEASED = policy_released_for_vote ACCEPTED = policy_accepted PUBLISHED = policy_published REJECTED = policy_rejected AMENDED = policy_amended CLOSED = policy_closed [notification_discussion_status_list] NEW_ARGUMENT = discussion_new_argument