Merge pull request #3328 from consul/admin-settings

Improve Admin settings section
This commit is contained in:
Alberto
2019-02-27 10:49:54 +01:00
committed by GitHub
41 changed files with 283 additions and 569 deletions

View File

@@ -2245,76 +2245,6 @@ table {
// 18. Banners
// -----------
.banner-style-one {
background-color: $brand;
}
.banner-style-two {
background-color: $budget;
}
.banner-style-three {
background-color: #33dadf;
}
@include breakpoint(large) {
.banner-img-one {
background-image: image-url("banners/banner1.png");
}
.banner-img-two {
background-image: image-url("banners/banner2.png");
}
.banner-img-three {
background-image: image-url("banners/banner3.png");
}
}
.banner-img-one,
.banner-img-two,
.banner-img-three {
background-position: bottom right;
background-repeat: no-repeat;
}
.banner-style-one,
.banner-style-two,
.banner-style-three,
.banner {
margin: 0;
margin-bottom: $line-height;
@include breakpoint(large) {
h3 {
width: 80%;
}
}
h2,
h3,
a {
color: #eaeaf2;
}
h2 {
padding: $line-height / 2;
padding-bottom: 0;
}
h3 {
padding: $line-height / 2;
padding-top: 0;
}
a:hover h2,
a:hover h3 {
color: #eaeaf2 !important;
text-decoration: none;
}
}
// 19. Recommendations
// -------------------

View File

@@ -4,8 +4,6 @@ class Admin::SettingsController < Admin::BaseController
all_settings = Setting.all.group_by { |s| s.type }
@settings = all_settings['common']
@feature_flags = all_settings['feature']
@banner_styles = all_settings['banner-style']
@banner_imgs = all_settings['banner-img']
end
def update
@@ -27,4 +25,4 @@ class Admin::SettingsController < Admin::BaseController
params.require(:setting).permit(:value)
end
end
end

View File

@@ -64,12 +64,6 @@ class ProposalsController < ApplicationController
def retire_form
end
def share
if Setting['proposal_improvement_path'].present?
@proposal_improvement_path = Setting['proposal_improvement_path']
end
end
def vote_featured
@proposal.register_vote(current_user, 'yes')
set_featured_proposal_votes(@proposal)

View File

@@ -7,10 +7,6 @@ module ApplicationHelper
request.path == '/'
end
def opendata_page?
request.path == '/opendata'
end
# if current path is /debates current_path_with_query_params(foo: 'bar') returns /debates?foo=bar
# notice: if query_params have a param which also exist in current path, it "overrides" (query_params is merged last)
def current_path_with_query_params(query_parameters)

View File

@@ -2,16 +2,10 @@ class Setting < ActiveRecord::Base
validates :key, presence: true, uniqueness: true
default_scope { order(id: :asc) }
scope :banner_style, -> { where("key ilike ?", "banner-style.%")}
scope :banner_img, -> { where("key ilike ?", "banner-img.%")}
def type
if feature_flag?
'feature'
elsif banner_style?
'banner-style'
elsif banner_img?
'banner-img'
else
'common'
end
@@ -25,14 +19,6 @@ class Setting < ActiveRecord::Base
feature_flag? && value.present?
end
def banner_style?
key.start_with?('banner-style.')
end
def banner_img?
key.start_with?('banner-img.')
end
class << self
def [](key)
where(key: key).pluck(:value).first.presence

View File

@@ -1,24 +0,0 @@
<% if @banner_imgs.present?%>
<h2><%= t("admin.settings.index.banner_imgs") %></h2>
<table>
<tbody>
<% @banner_imgs.each do |setting| %>
<tr>
<td>
<strong><%= t("settings.#{setting.key}") %></strong>
</td>
<td>
<%= form_for(setting, url: admin_setting_path(setting), html: { id: "edit_#{dom_id(setting)}"}) do |f| %>
<%= f.text_area :value, label: false, id: dom_id(setting), lines: 1 %>
<%= f.submit(t('admin.settings.index.update_setting'), class: "button small success") %>
<% end %>
</td>
</tr>
<% end %>
</tbody>
</table>
<% else %>
<h3><%= t("admin.settings.index.no_banners_images") %></h3>
<% end %>

View File

@@ -1,24 +0,0 @@
<% if @banner_styles.present? %>
<h2><%= t("admin.settings.index.banners") %></h2>
<table>
<tbody>
<% @banner_styles.each do |setting| %>
<tr>
<td>
<strong><%= t("settings.#{setting.key}") %></strong>
</td>
<td>
<%= form_for(setting, url: admin_setting_path(setting), html: { id: "edit_#{dom_id(setting)}"}) do |f| %>
<%= f.text_area :value, label: false, id: dom_id(setting), lines: 1 %>
<%= f.submit(t('admin.settings.index.update_setting'), class: "button hollow") %>
<% end %>
</td>
</tr>
<% end %>
</tbody>
</table>
<% else %>
<h3><%= t("admin.settings.index.no_banners_styles") %></h3>
<% end %>

View File

@@ -17,18 +17,6 @@
<% end %>
</li>
<li class="tabs-title">
<%= link_to "#tab-banner-styles" do %>
<%= t("admin.settings.index.banners") %>
<% end %>
</li>
<li class="tabs-title">
<%= link_to "#tab-banner-images" do %>
<%= t("admin.settings.index.banner_imgs") %>
<% end %>
</li>
<li class="tabs-title" id="map-tab">
<%= link_to "#tab-map-configuration" do %>
<%= t("admin.settings.index.map.title") %>

View File

@@ -10,14 +10,6 @@
<%= render "feature_flags" %>
</div>
<div class="tabs-panel" id="tab-banner-styles">
<%= render "banner_styles" %>
</div>
<div class="tabs-panel" id="tab-banner-images">
<%= render "banner_images" %>
</div>
<div class="tabs-panel" id="tab-map-configuration">
<%= render "map_configuration" %>
</div>

View File

@@ -53,15 +53,6 @@
<% end %>
</li>
<% end %>
<% if setting['blog_url'] %>
<li class="inline-block">
<%= link_to setting['blog_url'], target: "_blank",
title: t("shared.go_to_page") + t("social.blog", org: setting['org_name']) + t('shared.target_blank_html') do %>
<span class="show-for-sr"><%= t("social.blog", org: setting['org_name']) %></span>
<span class="icon-blog" aria-hidden="true"></span>
<% end %>
</li>
<% end %>
<% if setting['youtube_handle'] %>
<li class="inline-block">
<%= link_to "https://www.youtube.com/#{setting['youtube_handle']}", target: "_blank",

View File

@@ -27,13 +27,6 @@
description: @proposal.summary
} %>
<% if @proposal_improvement_path.present? %>
<div class="callout highlight margin-top text-center">
<p class="lead"><strong><%= t("proposals.proposal.improve_info") %></strong></p>
<%= link_to t("proposals.proposal.improve_info_link"), @proposal_improvement_path, class: "button" %>
</div>
<% end %>
<div class="small margin-bottom">
<%= link_to t("proposals.proposal.share.view_proposal"), proposal_path(@proposal) %>
</div>

View File

@@ -1,13 +1,3 @@
<ul class="no-bullet external-links">
<% if setting['blog_url'] %>
<li>
<%= link_to t("layouts.header.external_link_blog"),
setting['blog_url'],
target: "_blank",
rel: "nofollow",
title: t("shared.go_to_page") + t("layouts.header.external_link_blog") + t('shared.target_blank_html') %>
</li>
<% end %>
<%= raw content_block("top_links", I18n.locale) %>
</ul>

View File

@@ -1171,10 +1171,6 @@ en:
flash:
updated: Value updated
index:
banners: Banner styles
banner_imgs: Banner images
no_banners_images: No banner images
no_banners_styles: No banner styles
title: Configuration settings
update_setting: Update
feature_flags: Features

View File

@@ -219,7 +219,6 @@ en:
available_locales: Available languages
collaborative_legislation: Collaborative legislation
debates: Debates
external_link_blog: Blog
locale: 'Language:'
logo: CONSUL logo
management: Management
@@ -398,8 +397,6 @@ en:
guide: "Now you can share it so people can start supporting."
edit: "Before it gets shared you'll be able to change the text as you like."
view_proposal: Not now, go to my proposal
improve_info: "Improve your campaign and get more supports"
improve_info_link: "See more information"
already_supported: You have already supported this proposal. Share it!
comments:
one: 1 comment
@@ -624,7 +621,6 @@ en:
see_more: See more recommendations
hide: Hide recommendations
social:
blog: "%{org} Blog"
facebook: "%{org} Facebook"
twitter: "%{org} Twitter"
youtube: "%{org} YouTube"

View File

@@ -46,12 +46,10 @@ en:
instagram_handle_description: "If filled in it will appear in the footer"
url: "Main URL"
url_description: "Main URL of your website"
org_name: "Organization"
org_name_description: "Name of your organization"
place_name: "Place"
place_name_description: "Name of your city"
org_name: "Site name"
org_name_description: "This name will appear on mailers subject, help pages..."
related_content_score_threshold: "Related content score threshold"
related_content_score_threshold_description: "Hides content that users mark as unrelated"
related_content_score_threshold_description: "According to the rating of votes in a related content, hides content that users mark as unrelated"
hot_score_period_in_days: "Period (days) used by the filter 'most active'"
hot_score_period_in_days_description: "The filter 'most active' used in multiple sections will be based on the votes during the last X days"
map_latitude: "Latitude"
@@ -61,7 +59,7 @@ en:
map_zoom: "Zoom"
map_zoom_description: "Zoom to show the map position"
mailer_from_name: "Sender email name"
mailer_from_name_description: "This name will appear in emails sent from the application"
mailer_from_name_description: "This name will appear as sender name in emails sent from the application"
mailer_from_address: "Sender email address"
mailer_from_address_description: "This email address will appear in emails sent from the application"
meta_title: "Site title (SEO)"
@@ -71,13 +69,13 @@ en:
meta_keywords: "Keywords (SEO)"
meta_keywords_description: 'Keywords <meta name="keywords">, used to improve SEO'
min_age_to_participate: Minimum age needed to participate
min_age_to_participate_description: "Users over this age can participate in all processes"
min_age_to_participate_description: "Users over this age can participate in all processes where a user verified account is needed"
analytics_url: "Analytics URL"
blog_url: "Blog URL"
transparency_url: "Transparency URL"
opendata_url: "Open Data URL"
verification_offices_url: Verification offices URL
proposal_improvement_path: Proposal improvement info internal link
proposal_notification_minimum_interval_in_days: "Minimum interval (in days) for authors of proposals to send new proposal notifications"
proposal_notification_minimum_interval_in_days_description: "The number of days user can send a notification for all supporters of their proposal"
direct_message_max_per_day: "Direct Message max number per day"
direct_message_max_per_day_description: "Number max of direct messages one user can send per day"
feature:
budgets: "Participatory budgeting"
budgets_description: "With participatory budgets, citizens decide which projects presented by their neighbours will receive a part of the municipal budget"
@@ -126,4 +124,4 @@ en:
public_stats: "Public stats"
public_stats_description: "Display public stats in the Administration panel"
help_page: "Help page"
help_page_description: "Displays a Help menu that contains a page with an info section about each enabled feature"
help_page_description: 'Displays a Help menu that contains a page with an info section about each enabled feature. Also custom pages and menus can be created in the "Custom pages" and "Custom content blocks" sections'

View File

@@ -1170,10 +1170,6 @@ es:
flash:
updated: Valor actualizado
index:
banners: Estilo del banner
banner_imgs: Imagenes del banner
no_banners_images: No hay imagenes de banner
no_banners_styles: No hay estilos de banner
title: Configuración global
update_setting: Actualizar
feature_flags: Funcionalidades

View File

@@ -219,7 +219,6 @@ es:
available_locales: Idiomas disponibles
collaborative_legislation: Legislación colaborativa
debates: Debates
external_link_blog: Blog
locale: 'Idioma:'
logo: Logo de CONSUL
management: Gestión
@@ -398,8 +397,6 @@ es:
guide: "Compártela para que la gente empiece a apoyarla."
edit: "Antes de que se publique podrás modificar el texto a tu gusto."
view_proposal: Ahora no, ir a mi propuesta
improve_info: "Mejora tu campaña y consigue más apoyos"
improve_info_link: "Ver más información"
already_supported: '¡Ya has apoyado esta propuesta, compártela!'
comments:
zero: Sin comentarios
@@ -623,7 +620,6 @@ es:
see_more: Ver más recomendaciones
hide: Ocultar recomendaciones
social:
blog: "Blog de %{org}"
facebook: "Facebook de %{org}"
twitter: "Twitter de %{org}"
youtube: "YouTube de %{org}"

View File

@@ -46,12 +46,10 @@ es:
instagram_handle_description: "Si está rellenado aparecerá en el pie de página"
url: "URL general de la web"
url_description: "URL principal de tu web"
org_name: "Nombre de la organización"
org_name_description: "Nombre de tu organización"
place_name: "Nombre del lugar"
place_name_description: "Nombre de tu ciudad"
org_name: "Nombre del sitio"
org_name_description: "Este nombre aparecerá en el asunto de emails, páginas de ayuda..."
related_content_score_threshold: "Umbral de puntuación de contenido relacionado"
related_content_score_threshold_description: "Oculta el contenido que los usuarios marquen como no relacionado"
related_content_score_threshold_description: "Según la puntuación de votos en un contenido relacionado, oculta el contenido que los usuarios marquen como no relacionado"
hot_score_period_in_days: "Periodo (días) usado para el filtro 'Más Activos'"
hot_score_period_in_days_description: "El filtro 'Más Activos' usado en diferentes secciones se basará en los votos de los últimos X días"
map_latitude: "Latitud"
@@ -61,7 +59,7 @@ es:
map_zoom: "Zoom"
map_zoom_description: "Zoom para mostrar la posición del mapa"
mailer_from_name: "Nombre email remitente"
mailer_from_name_description: "Este nombre aparecerá en los emails enviados desde la aplicación"
mailer_from_name_description: "Este nombre aparecerá como nombre del remitente en los emails enviados desde la aplicación"
mailer_from_address: "Dirección email remitente"
mailer_from_address_description: "Esta dirección de email aparecerá en los emails enviados desde la aplicación"
meta_title: "Título del sitio (SEO)"
@@ -71,13 +69,13 @@ es:
meta_keywords: "Palabras clave (SEO)"
meta_keywords_description: 'Palabras clave <meta name="keywords">, utilizadas para mejorar el SEO'
min_age_to_participate: Edad mínima para participar
min_age_to_participate_description: "Los usuarios mayores de esta edad podrán participar en todos los procesos"
min_age_to_participate_description: "Los usuarios mayores de esta edad podrán participar en todos los procesos donde se necesite una cueta verificada"
analytics_url: "URL de estadísticas externas"
blog_url: "URL del blog"
transparency_url: "URL de transparencia"
opendata_url: "URL de open data"
verification_offices_url: URL oficinas verificación
proposal_improvement_path: Link a información para mejorar propuestas
proposal_notification_minimum_interval_in_days: "Intervalo mínimo (en días) para que los autores de propuestas puedan enviar nuevas notificaciones de propuesta"
proposal_notification_minimum_interval_in_days_description: "El número de días en los que un usuario puede enviar una notificación a todos los que apoyan su propuesta"
direct_message_max_per_day: "Mensajes directos máximos por día"
direct_message_max_per_day_description: "Número de mensajes directos máximos que un usuario puede enviar por día"
feature:
budgets: "Presupuestos participativos"
budgets_description: "Con los presupuestos participativos la ciudadanía decide a qué proyectos presentados por los vecinos y vecinas va destinada una parte del presupuesto municipal"
@@ -126,4 +124,4 @@ es:
public_stats: "Estadísticas públicas"
public_stats_description: "Muestra las estadísticas públicas en el panel de Administración"
help_page: "Página de ayuda"
help_page_description: "Muestra un menú Ayuda que contiene una página con una sección de información sobre cada funcionalidad habilitada"
help_page_description: 'Muestra un menú Ayuda que contiene una página con una sección de información sobre cada funcionalidad habilitada. También se pueden crear páginas y menús personalizados en las secciones "Personalizar páginas" y "Personalizar bloques"'

View File

@@ -48,6 +48,5 @@ Rails.application.routes.draw do
get 'help/faq', to: 'pages#show', id: 'help/faq/index', as: 'faq'
# Static pages
get '/blog' => redirect("http://blog.consul/")
resources :pages, path: '/', only: [:show]
end

View File

@@ -1,4 +1,4 @@
require 'database_cleaner'
require "database_cleaner"
DatabaseCleaner.clean_with :truncation
@logger = Logger.new(STDOUT)
@logger.formatter = proc do |_severity, _datetime, _progname, msg|
@@ -8,7 +8,7 @@ DatabaseCleaner.clean_with :truncation
def section(section_title)
@logger.info section_title
yield
log(' ✅')
log("")
end
def log(msg)
@@ -19,27 +19,27 @@ def random_locales
[I18n.default_locale, *I18n.available_locales.sample(4)].uniq
end
require_relative 'dev_seeds/settings'
require_relative 'dev_seeds/geozones'
require_relative 'dev_seeds/users'
require_relative 'dev_seeds/tags_categories'
require_relative 'dev_seeds/debates'
require_relative 'dev_seeds/proposals'
require_relative 'dev_seeds/budgets'
require_relative 'dev_seeds/spending_proposals'
require_relative 'dev_seeds/comments'
require_relative 'dev_seeds/votes'
require_relative 'dev_seeds/flags'
require_relative 'dev_seeds/hiddings'
require_relative 'dev_seeds/banners'
require_relative 'dev_seeds/polls'
require_relative 'dev_seeds/communities'
require_relative 'dev_seeds/legislation_processes'
require_relative 'dev_seeds/newsletters'
require_relative 'dev_seeds/notifications'
require_relative 'dev_seeds/widgets'
require_relative 'dev_seeds/admin_notifications'
require_relative 'dev_seeds/legislation_proposals'
require_relative 'dev_seeds/milestones'
require_relative "dev_seeds/settings"
require_relative "dev_seeds/geozones"
require_relative "dev_seeds/users"
require_relative "dev_seeds/tags_categories"
require_relative "dev_seeds/debates"
require_relative "dev_seeds/proposals"
require_relative "dev_seeds/budgets"
require_relative "dev_seeds/spending_proposals"
require_relative "dev_seeds/comments"
require_relative "dev_seeds/votes"
require_relative "dev_seeds/flags"
require_relative "dev_seeds/hiddings"
require_relative "dev_seeds/banners"
require_relative "dev_seeds/polls"
require_relative "dev_seeds/communities"
require_relative "dev_seeds/legislation_processes"
require_relative "dev_seeds/newsletters"
require_relative "dev_seeds/notifications"
require_relative "dev_seeds/widgets"
require_relative "dev_seeds/admin_notifications"
require_relative "dev_seeds/legislation_proposals"
require_relative "dev_seeds/milestones"
log "All dev seeds created successfuly 👍"

View File

@@ -1,44 +1,47 @@
section "Creating Admin Notifications & Templates" do
AdminNotification.create!(
title_en: 'Do you have a proposal?',
title_es: 'Tienes una propuesta?',
title_en: "Do you have a proposal?",
title_es: "Tienes una propuesta?",
body_en: 'Remember you can create a proposal with your ideas and people will discuss & support it.',
body_es: 'Recuerda que puedes crear propuestas y los ciudadanos las debatirán y apoyarán.',
body_en: "Remember you can create a proposal with your ideas and "\
"people will discuss & support it.",
body_es: "Recuerda que puedes crear propuestas y los ciudadanos las debatirán y apoyarán.",
link: Setting['url'] + '/proposals',
segment_recipient: 'administrators'
link: Setting["url"] + "/proposals",
segment_recipient: "administrators"
).deliver
AdminNotification.create!(
title_en: 'Help us translate consul',
title_es: 'Ayúdanos a traducir CONSUL',
title_en: "Help us translate consul",
title_es: "Ayúdanos a traducir CONSUL",
body_en: 'If you are proficient in a language, please help us translate consul!.',
body_es: 'Si dominas un idioma, ayúdanos a completar su traducción en CONSUL.',
body_en: "If you are proficient in a language, please help us translate consul!.",
body_es: "Si dominas un idioma, ayúdanos a completar su traducción en CONSUL.",
link: 'https://crwd.in/consul',
segment_recipient: 'administrators'
link: "https://crwd.in/consul",
segment_recipient: "administrators"
).deliver
AdminNotification.create!(
title_en: 'You can now geolocate proposals & investments',
title_es: 'Ahora puedes geolocalizar propuestas y proyectos de inversión',
title_en: "You can now geolocate proposals & investments",
title_es: "Ahora puedes geolocalizar propuestas y proyectos de inversión",
body_en: 'When you create a proposal or investment you now can specify a point on a map',
body_es: 'Cuando crees una propuesta o proyecto de inversión podrás especificar su localización en el mapa',
body_en: "When you create a proposal or investment you now can specify a point on a map",
body_es: "Cuando crees una propuesta o proyecto de inversión podrás especificar "\
"su localización en el mapa",
segment_recipient: 'administrators'
segment_recipient: "administrators"
).deliver
AdminNotification.create!(
title_en: 'We are closing the Participatory Budget!!',
title_es: 'Últimos días para crear proyectos de Presupuestos Participativos',
title_en: "We are closing the Participatory Budget!!",
title_es: "Últimos días para crear proyectos de Presupuestos Participativos",
body_en: 'Hurry up and create a last proposal before it ends next in few days!',
body_es: 'Quedan pocos dias para que se cierre el plazo de presentación de proyectos de inversión para los presupuestos participativos!',
body_en: "Hurry up and create a last proposal before it ends next in few days!",
body_es: "Quedan pocos dias para que se cierre el plazo de presentación de proyectos de "\
"inversión para los presupuestos participativos!",
segment_recipient: 'administrators',
segment_recipient: "administrators",
sent_at: nil
)
end

View File

@@ -1,7 +1,7 @@
section "Creating banners" do
Proposal.last(3).each do |proposal|
title = Faker::Lorem.sentence(word_count = 3)
description = Faker::Lorem.sentence(word_count = 12)
title = Faker::Lorem.sentence(3)
description = Faker::Lorem.sentence(12)
target_url = Rails.application.routes.url_helpers.proposal_path(proposal)
banner = Banner.new(title: title,
description: description,
@@ -20,9 +20,9 @@ section "Creating banners" do
end
section "Creating web sections" do
WebSection.create(name: 'homepage')
WebSection.create(name: 'debates')
WebSection.create(name: 'proposals')
WebSection.create(name: 'budgets')
WebSection.create(name: 'help_page')
WebSection.create(name: "homepage")
WebSection.create(name: "debates")
WebSection.create(name: "proposals")
WebSection.create(name: "budgets")
WebSection.create(name: "help_page")
end

View File

@@ -1,11 +1,11 @@
INVESTMENT_IMAGE_FILES = %w{
INVESTMENT_IMAGE_FILES = %w[
brennan-ehrhardt-25066-unsplash_713x513.jpg
carl-nenzen-loven-381554-unsplash_713x475.jpg
carlos-zurita-215387-unsplash_713x475.jpg
hector-arguello-canals-79584-unsplash_713x475.jpg
olesya-grichina-218176-unsplash_713x475.jpg
sole-d-alessandro-340443-unsplash_713x475.jpg
}.map do |filename|
].map do |filename|
File.new(Rails.root.join("db",
"dev_seeds",
"images",
@@ -129,10 +129,10 @@ section "Creating Investments" do
title: Faker::Lorem.sentence(3).truncate(60),
description: "<p>#{Faker::Lorem.paragraphs.join('</p><p>')}</p>",
created_at: rand((Time.current - 1.week)..Time.current),
feasibility: %w{undecided unfeasible feasible feasible feasible feasible}.sample,
feasibility: %w[undecided unfeasible feasible feasible feasible feasible].sample,
unfeasibility_explanation: Faker::Lorem.paragraph,
valuation_finished: [false, true].sample,
tag_list: tags.sample(3).join(','),
tag_list: tags.sample(3).join(","),
price: rand(1..100) * 100000,
skip_map: "1",
terms_of_service: "1"
@@ -151,9 +151,9 @@ end
section "Geolocating Investments" do
Budget.find_each do |budget|
budget.investments.each do |investment|
MapLocation.create(latitude: Setting['map_latitude'].to_f + rand(-10..10)/100.to_f,
longitude: Setting['map_longitude'].to_f + rand(-10..10)/100.to_f,
zoom: Setting['map_zoom'],
MapLocation.create(latitude: Setting["map_latitude"].to_f + rand(-10..10)/100.to_f,
longitude: Setting["map_longitude"].to_f + rand(-10..10)/100.to_f,
zoom: Setting["map_zoom"],
investment_id: investment.id)
end
end
@@ -175,7 +175,7 @@ section "Winner Investments" do
group: heading.group,
budget: heading.group.budget,
title: Faker::Lorem.sentence(3).truncate(60),
description: "<p>#{Faker::Lorem.paragraphs.join('</p><p>')}</p>",
description: "<p>#{Faker::Lorem.paragraphs.join("</p><p>")}</p>",
created_at: rand((Time.current - 1.week)..Time.current),
feasibility: "feasible",
valuation_finished: true,

View File

@@ -1,5 +1,5 @@
section "Commenting Investments, Debates & Proposals" do
%w(Budget::Investment Debate Proposal).each do |commentable_class|
%w[Budget::Investment Debate Proposal].each do |commentable_class|
100.times do
commentable = commentable_class.constantize.all.sample
Comment.create!(user: User.all.sample,

View File

@@ -3,25 +3,25 @@ section "Creating Debates" do
30.times do
author = User.all.sample
description = "<p>#{Faker::Lorem.paragraphs.join('</p><p>')}</p>"
debate = Debate.create!(author: author,
title: Faker::Lorem.sentence(3).truncate(60),
created_at: rand((Time.current - 1.week)..Time.current),
description: description,
tag_list: tags.sample(3).join(','),
geozone: Geozone.all.sample,
terms_of_service: "1")
Debate.create!(author: author,
title: Faker::Lorem.sentence(3).truncate(60),
created_at: rand((Time.current - 1.week)..Time.current),
description: description,
tag_list: tags.sample(3).join(","),
geozone: Geozone.all.sample,
terms_of_service: "1")
end
tags = ActsAsTaggableOn::Tag.where(kind: 'category')
tags = ActsAsTaggableOn::Tag.where(kind: "category")
30.times do
author = User.all.sample
description = "<p>#{Faker::Lorem.paragraphs.join('</p><p>')}</p>"
debate = Debate.create!(author: author,
title: Faker::Lorem.sentence(3).truncate(60),
created_at: rand((Time.current - 1.week)..Time.current),
description: description,
tag_list: tags.sample(3).join(','),
geozone: Geozone.all.sample,
terms_of_service: "1")
Debate.create!(author: author,
title: Faker::Lorem.sentence(3).truncate(60),
created_at: rand((Time.current - 1.week)..Time.current),
description: description,
tag_list: tags.sample(3).join(","),
geozone: Geozone.all.sample,
terms_of_service: "1")
end
end

View File

@@ -1,22 +1,22 @@
section "Creating Geozones" do
Geozone.create(name: I18n.t('seeds.geozones.north_district'),
Geozone.create(name: I18n.t("seeds.geozones.north_district"),
external_code: "001", census_code: "01",
html_map_coordinates: "30,139,45,153,77,148,107,165,138,201,146,218,186,198,216,"\
"196,233,203,240,215,283,194,329,185,377,184,388,165,369,126,333,113,334,84,320,"\
"66,286,73,258,65,265,57,249,47,207,58,159,84,108,85,72,101,51,114")
Geozone.create(name: I18n.t('seeds.geozones.west_district'),
Geozone.create(name: I18n.t("seeds.geozones.west_district"),
external_code: "002", census_code: "02",
html_map_coordinates: "42,153,31,176,24,202,20,221,44,235,59,249,55,320,30,354,"\
"31,372,52,396,64,432,89,453,116,432,149,419,162,412,165,377,172,357,189,352,228,"\
"327,246,313,262,297,234,291,210,284,193,284,176,294,158,303,154,310,146,289,140,"\
"268,138,246,135,236,139,222,151,214,136,197,120,179,99,159,85,149,65,149,56,149")
Geozone.create(name: I18n.t('seeds.geozones.east_district'),
Geozone.create(name: I18n.t("seeds.geozones.east_district"),
external_code: "003", census_code: "03",
html_map_coordinates: "175,353,162,378,161,407,153,416,167,432,184,447,225,426,"\
"250,409,283,390,298,369,344,363,351,334,356,296,361,267,376,245,378,185,327,188,"\
"281,195,239,216,245,221,245,232,261,244,281,238,300,242,304,251,285,262,278,277,"\
"267,294,249,312,219,333,198,346,184,353")
Geozone.create(name: I18n.t('seeds.geozones.central_district'),
Geozone.create(name: I18n.t("seeds.geozones.central_district"),
external_code: "004", census_code: "04",
html_map_coordinates: "152,308,137,258,133,235,147,216,152,214,186,194,210,196,"\
"228,202,240,216,241,232,263,243,293,241,301,245,302,254,286,265,274,278,267,296,"\

View File

@@ -6,7 +6,7 @@ section "Creating legislation proposals" do
summary: Faker::Lorem.paragraph,
author: User.all.sample,
process: Legislation::Process.all.sample,
terms_of_service: '1',
terms_of_service: "1",
selected: rand <= 1.0 / 3)
end
end

View File

@@ -1,8 +1,8 @@
section "Creating default Milestone Statuses" do
Milestone::Status.create(name: I18n.t('seeds.budgets.statuses.studying_project'))
Milestone::Status.create(name: I18n.t('seeds.budgets.statuses.bidding'))
Milestone::Status.create(name: I18n.t('seeds.budgets.statuses.executing_project'))
Milestone::Status.create(name: I18n.t('seeds.budgets.statuses.executed'))
Milestone::Status.create(name: I18n.t("seeds.budgets.statuses.studying_project"))
Milestone::Status.create(name: I18n.t("seeds.budgets.statuses.bidding"))
Milestone::Status.create(name: I18n.t("seeds.budgets.statuses.executing_project"))
Milestone::Status.create(name: I18n.t("seeds.budgets.statuses.executed"))
end
section "Creating investment milestones" do

View File

@@ -15,7 +15,7 @@ section "Creating Newsletters" do
Newsletter.create!(
subject: "Newsletter subject #{n}",
segment_recipient: UserSegments::SEGMENTS.sample,
from: 'no-reply@consul.dev',
from: "no-reply@consul.dev",
body: newsletter_body.sample,
sent_at: [Time.now, nil].sample
)

View File

@@ -3,7 +3,7 @@ section "Creating comment notifications" do
debate = Debate.create!(author: user,
title: Faker::Lorem.sentence(3).truncate(60),
description: "<p>#{Faker::Lorem.paragraphs.join('</p><p>')}</p>",
tag_list: ActsAsTaggableOn::Tag.all.sample(3).join(','),
tag_list: ActsAsTaggableOn::Tag.all.sample(3).join(","),
geozone: Geozone.reorder("RANDOM()").first,
terms_of_service: "1")
@@ -13,4 +13,4 @@ section "Creating comment notifications" do
Notification.add(user, comment)
end
end
end

View File

@@ -1,25 +1,25 @@
section "Creating polls" do
Poll.create(name: I18n.t('seeds.polls.current_poll'),
Poll.create(name: I18n.t("seeds.polls.current_poll"),
starts_at: 7.days.ago,
ends_at: 7.days.from_now,
geozone_restricted: false)
Poll.create(name: I18n.t('seeds.polls.current_poll_geozone_restricted'),
Poll.create(name: I18n.t("seeds.polls.current_poll_geozone_restricted"),
starts_at: 5.days.ago,
ends_at: 5.days.from_now,
geozone_restricted: true,
geozones: Geozone.reorder("RANDOM()").limit(3))
Poll.create(name: I18n.t('seeds.polls.recounting_poll'),
Poll.create(name: I18n.t("seeds.polls.recounting_poll"),
starts_at: 15.days.ago,
ends_at: 2.days.ago)
Poll.create(name: I18n.t('seeds.polls.expired_poll_without_stats'),
Poll.create(name: I18n.t("seeds.polls.expired_poll_without_stats"),
starts_at: 2.months.ago,
ends_at: 1.month.ago)
Poll.create(name: I18n.t('seeds.polls.expired_poll_with_stats'),
Poll.create(name: I18n.t("seeds.polls.expired_poll_with_stats"),
starts_at: 2.months.ago,
ends_at: 1.month.ago,
results_enabled: true,
@@ -42,7 +42,7 @@ end
section "Creating Poll Questions & Answers" do
Poll.find_each do |poll|
(1..4).to_a.sample.times do
title = Faker::Lorem.sentence(3).truncate(60) + '?'
title = Faker::Lorem.sentence(3).truncate(60) + "?"
question = Poll::Question.new(author: User.all.sample,
title: title,
poll: poll)
@@ -118,7 +118,7 @@ section "Creating Poll Voters" do
document_number: user.document_number,
user: user,
poll: poll,
origin: 'booth',
origin: "booth",
officer: Poll::Officer.all.sample)
end
@@ -128,7 +128,7 @@ section "Creating Poll Voters" do
document_number: user.document_number,
user: user,
poll: poll,
origin: 'web',
origin: "web",
token: SecureRandom.hex(32))
end

View File

@@ -1,9 +1,9 @@
IMAGE_FILES = %w{
IMAGE_FILES = %w[
firdouss-ross-414668-unsplash_846x475.jpg
nathan-dumlao-496190-unsplash_713x475.jpg
steve-harvey-597760-unsplash_713x475.jpg
tim-mossholder-302931-unsplash_713x475.jpg
}.map do |filename|
].map do |filename|
File.new(Rails.root.join("db",
"dev_seeds",
"images",
@@ -34,7 +34,7 @@ section "Creating Proposals" do
external_url: Faker::Internet.url,
description: description,
created_at: rand((Time.current - 1.week)..Time.current),
tag_list: tags.sample(3).join(','),
tag_list: tags.sample(3).join(","),
geozone: Geozone.all.sample,
skip_map: "1",
terms_of_service: "1")
@@ -54,7 +54,7 @@ section "Creating Archived Proposals" do
responsible_name: Faker::Name.name,
external_url: Faker::Internet.url,
description: description,
tag_list: tags.sample(3).join(','),
tag_list: tags.sample(3).join(","),
geozone: Geozone.all.sample,
skip_map: "1",
terms_of_service: "1",
@@ -76,7 +76,7 @@ section "Creating Successful Proposals" do
external_url: Faker::Internet.url,
description: description,
created_at: rand((Time.current - 1.week)..Time.current),
tag_list: tags.sample(3).join(','),
tag_list: tags.sample(3).join(","),
geozone: Geozone.all.sample,
skip_map: "1",
terms_of_service: "1",
@@ -84,10 +84,10 @@ section "Creating Successful Proposals" do
add_image_to proposal
end
tags = ActsAsTaggableOn::Tag.where(kind: 'category')
tags = ActsAsTaggableOn::Tag.where(kind: "category")
30.times do
author = User.all.sample
description = "<p>#{Faker::Lorem.paragraphs.join('</p><p>')}</p>"
description = "<p>#{Faker::Lorem.paragraphs.join("</p><p>")}</p>"
proposal = Proposal.create!(author: author,
title: Faker::Lorem.sentence(4).truncate(60),
question: Faker::Lorem.sentence(6) + "?",
@@ -96,7 +96,7 @@ section "Creating Successful Proposals" do
external_url: Faker::Internet.url,
description: description,
created_at: rand((Time.current - 1.week)..Time.current),
tag_list: tags.sample(3).join(','),
tag_list: tags.sample(3).join(","),
geozone: Geozone.all.sample,
skip_map: "1",
terms_of_service: "1")

View File

@@ -1,77 +1,76 @@
section "Creating Settings" do
Setting.create(key: 'official_level_1_name',
value: I18n.t('seeds.settings.official_level_1_name'))
Setting.create(key: 'official_level_2_name',
value: I18n.t('seeds.settings.official_level_2_name'))
Setting.create(key: 'official_level_3_name',
value: I18n.t('seeds.settings.official_level_3_name'))
Setting.create(key: 'official_level_4_name',
value: I18n.t('seeds.settings.official_level_4_name'))
Setting.create(key: 'official_level_5_name',
value: I18n.t('seeds.settings.official_level_5_name'))
Setting.create(key: 'max_ratio_anon_votes_on_debates', value: '50')
Setting.create(key: 'max_votes_for_debate_edit', value: '1000')
Setting.create(key: 'max_votes_for_proposal_edit', value: '1000')
Setting.create(key: 'proposal_code_prefix', value: 'MAD')
Setting.create(key: 'votes_for_proposal_success', value: '100')
Setting.create(key: 'months_to_archive_proposals', value: '12')
Setting.create(key: 'comments_body_max_length', value: '1000')
Setting.create(key: "official_level_1_name",
value: I18n.t("seeds.settings.official_level_1_name"))
Setting.create(key: "official_level_2_name",
value: I18n.t("seeds.settings.official_level_2_name"))
Setting.create(key: "official_level_3_name",
value: I18n.t("seeds.settings.official_level_3_name"))
Setting.create(key: "official_level_4_name",
value: I18n.t("seeds.settings.official_level_4_name"))
Setting.create(key: "official_level_5_name",
value: I18n.t("seeds.settings.official_level_5_name"))
Setting.create(key: "max_ratio_anon_votes_on_debates", value: "50")
Setting.create(key: "max_votes_for_debate_edit", value: "1000")
Setting.create(key: "max_votes_for_proposal_edit", value: "1000")
Setting.create(key: "proposal_code_prefix", value: "MAD")
Setting.create(key: "votes_for_proposal_success", value: "100")
Setting.create(key: "months_to_archive_proposals", value: "12")
Setting.create(key: "comments_body_max_length", value: "1000")
Setting.create(key: 'twitter_handle', value: '@consul_dev')
Setting.create(key: 'twitter_hashtag', value: '#consul_dev')
Setting.create(key: 'facebook_handle', value: 'CONSUL')
Setting.create(key: 'youtube_handle', value: 'CONSUL')
Setting.create(key: 'telegram_handle', value: 'CONSUL')
Setting.create(key: 'instagram_handle', value: 'CONSUL')
Setting.create(key: 'blog_url', value: '/blog')
Setting.create(key: 'url', value: 'http://localhost:3000')
Setting.create(key: 'org_name', value: 'CONSUL')
Setting.create(key: 'place_name', value: 'City')
Setting.create(key: "twitter_handle", value: "@consul_dev")
Setting.create(key: "twitter_hashtag", value: "#consul_dev")
Setting.create(key: "facebook_handle", value: "CONSUL")
Setting.create(key: "youtube_handle", value: "CONSUL")
Setting.create(key: "telegram_handle", value: "CONSUL")
Setting.create(key: "instagram_handle", value: "CONSUL")
Setting.create(key: "url", value: "http://localhost:3000")
Setting.create(key: "org_name", value: "CONSUL")
Setting.create(key: 'feature.debates', value: "true")
Setting.create(key: 'feature.proposals', value: "true")
Setting.create(key: 'feature.featured_proposals', value: "true")
Setting.create(key: 'feature.polls', value: "true")
Setting.create(key: 'feature.spending_proposals', value: nil)
Setting.create(key: 'feature.spending_proposal_features.voting_allowed', value: nil)
Setting.create(key: 'feature.budgets', value: "true")
Setting.create(key: 'feature.twitter_login', value: "true")
Setting.create(key: 'feature.facebook_login', value: "true")
Setting.create(key: 'feature.google_login', value: "true")
Setting.create(key: 'feature.signature_sheets', value: "true")
Setting.create(key: 'feature.legislation', value: "true")
Setting.create(key: 'feature.user.recommendations', value: "true")
Setting.create(key: 'feature.user.recommendations_on_debates', value: "true")
Setting.create(key: 'feature.user.recommendations_on_proposals', value: "true")
Setting.create(key: 'feature.community', value: "true")
Setting.create(key: 'feature.map', value: "true")
Setting.create(key: 'feature.allow_images', value: "true")
Setting.create(key: 'feature.allow_attached_documents', value: "true")
Setting.create(key: 'feature.public_stats', value: "true")
Setting.create(key: 'feature.user.skip_verification', value: "true")
Setting.create(key: 'feature.help_page', value: "true")
Setting.create(key: "feature.debates", value: "true")
Setting.create(key: "feature.proposals", value: "true")
Setting.create(key: "feature.featured_proposals", value: "true")
Setting.create(key: "feature.polls", value: "true")
Setting.create(key: "feature.spending_proposals", value: nil)
Setting.create(key: "feature.spending_proposal_features.voting_allowed", value: nil)
Setting.create(key: "feature.budgets", value: "true")
Setting.create(key: "feature.twitter_login", value: "true")
Setting.create(key: "feature.facebook_login", value: "true")
Setting.create(key: "feature.google_login", value: "true")
Setting.create(key: "feature.signature_sheets", value: "true")
Setting.create(key: "feature.legislation", value: "true")
Setting.create(key: "feature.user.recommendations", value: "true")
Setting.create(key: "feature.user.recommendations_on_debates", value: "true")
Setting.create(key: "feature.user.recommendations_on_proposals", value: "true")
Setting.create(key: "feature.community", value: "true")
Setting.create(key: "feature.map", value: "true")
Setting.create(key: "feature.allow_images", value: "true")
Setting.create(key: "feature.allow_attached_documents", value: "true")
Setting.create(key: "feature.public_stats", value: "true")
Setting.create(key: "feature.user.skip_verification", value: "true")
Setting.create(key: "feature.help_page", value: "true")
Setting.create(key: 'per_page_code_head', value: "")
Setting.create(key: 'per_page_code_body', value: "")
Setting.create(key: 'comments_body_max_length', value: '1000')
Setting.create(key: 'mailer_from_name', value: 'CONSUL')
Setting.create(key: 'mailer_from_address', value: 'noreply@consul.dev')
Setting.create(key: 'meta_title', value: 'CONSUL')
Setting.create(key: 'meta_description', value: 'Citizen participation tool for an open, '\
'transparent and democratic government')
Setting.create(key: 'meta_keywords', value: 'citizen participation, open government')
Setting.create(key: 'verification_offices_url', value: 'http://oficinas-atencion-ciudadano.url/')
Setting.create(key: 'min_age_to_participate', value: '16')
Setting.create(key: 'proposal_improvement_path', value: nil)
Setting.create(key: 'map_latitude', value: 40.41)
Setting.create(key: 'map_longitude', value: -3.7)
Setting.create(key: 'map_zoom', value: 10)
Setting.create(key: 'featured_proposals_number', value: 3)
Setting.create(key: "per_page_code_head", value: "")
Setting.create(key: "per_page_code_body", value: "")
Setting.create(key: "comments_body_max_length", value: "1000")
Setting.create(key: "mailer_from_name", value: "CONSUL")
Setting.create(key: "mailer_from_address", value: "noreply@consul.dev")
Setting.create(key: "meta_title", value: "CONSUL")
Setting.create(key: "meta_description", value: "Citizen participation tool for an open, "\
"transparent and democratic government")
Setting.create(key: "meta_keywords", value: "citizen participation, open government")
Setting.create(key: "verification_offices_url", value: "http://oficinas-atencion-ciudadano.url/")
Setting.create(key: "min_age_to_participate", value: "16")
Setting.create(key: "map_latitude", value: 40.41)
Setting.create(key: "map_longitude", value: -3.7)
Setting.create(key: "map_zoom", value: 10)
Setting.create(key: "featured_proposals_number", value: 3)
Setting.create(key: "proposal_notification_minimum_interval_in_days", value: 0)
Setting.create(key: "direct_message_max_per_day", value: 3)
Setting.create(key: 'related_content_score_threshold', value: -0.3)
Setting.create(key: 'hot_score_period_in_days', value: 31)
Setting.create(key: "related_content_score_threshold", value: -0.3)
Setting.create(key: "hot_score_period_in_days", value: 31)
Setting['feature.homepage.widgets.feeds.proposals'] = true
Setting['feature.homepage.widgets.feeds.debates'] = true
Setting['feature.homepage.widgets.feeds.processes'] = true
Setting["feature.homepage.widgets.feeds.proposals"] = true
Setting["feature.homepage.widgets.feeds.debates"] = true
Setting["feature.homepage.widgets.feeds.processes"] = true
end

View File

@@ -1,17 +1,17 @@
section "Creating Tags Categories" do
ActsAsTaggableOn::Tag.category.create!(name: I18n.t('seeds.categories.associations'))
ActsAsTaggableOn::Tag.category.create!(name: I18n.t('seeds.categories.culture'))
ActsAsTaggableOn::Tag.category.create!(name: I18n.t('seeds.categories.sports'))
ActsAsTaggableOn::Tag.category.create!(name: I18n.t('seeds.categories.social_rights'))
ActsAsTaggableOn::Tag.category.create!(name: I18n.t('seeds.categories.economy'))
ActsAsTaggableOn::Tag.category.create!(name: I18n.t('seeds.categories.employment'))
ActsAsTaggableOn::Tag.category.create!(name: I18n.t('seeds.categories.equity'))
ActsAsTaggableOn::Tag.category.create!(name: I18n.t('seeds.categories.sustainability'))
ActsAsTaggableOn::Tag.category.create!(name: I18n.t('seeds.categories.participation'))
ActsAsTaggableOn::Tag.category.create!(name: I18n.t('seeds.categories.mobility'))
ActsAsTaggableOn::Tag.category.create!(name: I18n.t('seeds.categories.media'))
ActsAsTaggableOn::Tag.category.create!(name: I18n.t('seeds.categories.health'))
ActsAsTaggableOn::Tag.category.create!(name: I18n.t('seeds.categories.transparency'))
ActsAsTaggableOn::Tag.category.create!(name: I18n.t('seeds.categories.security_emergencies'))
ActsAsTaggableOn::Tag.category.create!(name: I18n.t('seeds.categories.environment'))
ActsAsTaggableOn::Tag.category.create!(name: I18n.t("seeds.categories.associations"))
ActsAsTaggableOn::Tag.category.create!(name: I18n.t("seeds.categories.culture"))
ActsAsTaggableOn::Tag.category.create!(name: I18n.t("seeds.categories.sports"))
ActsAsTaggableOn::Tag.category.create!(name: I18n.t("seeds.categories.social_rights"))
ActsAsTaggableOn::Tag.category.create!(name: I18n.t("seeds.categories.economy"))
ActsAsTaggableOn::Tag.category.create!(name: I18n.t("seeds.categories.employment"))
ActsAsTaggableOn::Tag.category.create!(name: I18n.t("seeds.categories.equity"))
ActsAsTaggableOn::Tag.category.create!(name: I18n.t("seeds.categories.sustainability"))
ActsAsTaggableOn::Tag.category.create!(name: I18n.t("seeds.categories.participation"))
ActsAsTaggableOn::Tag.category.create!(name: I18n.t("seeds.categories.mobility"))
ActsAsTaggableOn::Tag.category.create!(name: I18n.t("seeds.categories.media"))
ActsAsTaggableOn::Tag.category.create!(name: I18n.t("seeds.categories.health"))
ActsAsTaggableOn::Tag.category.create!(name: I18n.t("seeds.categories.transparency"))
ActsAsTaggableOn::Tag.category.create!(name: I18n.t("seeds.categories.security_emergencies"))
ActsAsTaggableOn::Tag.category.create!(name: I18n.t("seeds.categories.environment"))
end

View File

@@ -1,6 +1,6 @@
section "Creating Users" do
def create_user(email, username = Faker::Name.name)
password = '12345678'
password = "12345678"
User.create!(
username: username,
email: email,
@@ -8,7 +8,7 @@ section "Creating Users" do
password_confirmation: password,
confirmed_at: Time.current,
terms_of_service: "1",
gender: ['Male', 'Female'].sample,
gender: ["Male", "Female"].sample,
date_of_birth: rand((Time.current - 80.years)..(Time.current - 16.years)),
public_activity: (rand(1..100) > 30)
)
@@ -17,61 +17,61 @@ section "Creating Users" do
def unique_document_number
@document_number ||= 12345678
@document_number += 1
"#{@document_number}#{[*'A'..'Z'].sample}"
"#{@document_number}#{[*"A".."Z"].sample}"
end
admin = create_user('admin@consul.dev', 'admin')
admin = create_user("admin@consul.dev", "admin")
admin.create_administrator
admin.update(residence_verified_at: Time.current,
confirmed_phone: Faker::PhoneNumber.phone_number, document_type: "1",
verified_at: Time.current, document_number: unique_document_number)
moderator = create_user('mod@consul.dev', 'moderator')
moderator = create_user("mod@consul.dev", "moderator")
moderator.create_moderator
moderator.update(residence_verified_at: Time.current,
confirmed_phone: Faker::PhoneNumber.phone_number, document_type: "1",
verified_at: Time.current, document_number: unique_document_number)
manager = create_user('manager@consul.dev', 'manager')
manager = create_user("manager@consul.dev", "manager")
manager.create_manager
manager.update(residence_verified_at: Time.current,
confirmed_phone: Faker::PhoneNumber.phone_number, document_type: "1",
verified_at: Time.current, document_number: unique_document_number)
valuator = create_user('valuator@consul.dev', 'valuator')
valuator = create_user("valuator@consul.dev", "valuator")
valuator.create_valuator
valuator.update(residence_verified_at: Time.current,
confirmed_phone: Faker::PhoneNumber.phone_number, document_type: "1",
verified_at: Time.current, document_number: unique_document_number)
poll_officer = create_user('poll_officer@consul.dev', 'Paul O. Fisher')
poll_officer = create_user("poll_officer@consul.dev", "Paul O. Fisher")
poll_officer.create_poll_officer
poll_officer.update(residence_verified_at: Time.current,
confirmed_phone: Faker::PhoneNumber.phone_number, document_type: "1",
verified_at: Time.current, document_number: unique_document_number)
poll_officer2 = create_user('poll_officer2@consul.dev', 'Pauline M. Espinosa')
poll_officer2 = create_user("poll_officer2@consul.dev", "Pauline M. Espinosa")
poll_officer2.create_poll_officer
poll_officer2.update(residence_verified_at: Time.current,
confirmed_phone: Faker::PhoneNumber.phone_number, document_type: "1",
verified_at: Time.current, document_number: unique_document_number)
create_user('unverified@consul.dev', 'unverified')
create_user("unverified@consul.dev", "unverified")
level_2 = create_user('leveltwo@consul.dev', 'level 2')
level_2 = create_user("leveltwo@consul.dev", "level 2")
level_2.update(residence_verified_at: Time.current,
confirmed_phone: Faker::PhoneNumber.phone_number,
document_number: unique_document_number, document_type: "1")
verified = create_user('verified@consul.dev', 'verified')
verified = create_user("verified@consul.dev", "verified")
verified.update(residence_verified_at: Time.current,
confirmed_phone: Faker::PhoneNumber.phone_number, document_type: "1",
verified_at: Time.current, document_number: unique_document_number)
[
I18n.t('seeds.organizations.neighborhood_association'),
I18n.t('seeds.organizations.human_rights'),
'Greenpeace'
I18n.t("seeds.organizations.neighborhood_association"),
I18n.t("seeds.organizations.human_rights"),
"Greenpeace"
].each do |organization_name|
org_user = create_user("#{organization_name.parameterize}@consul.dev", organization_name)
org = org_user.create_organization(name: organization_name, responsible_name: Faker::Name.name)

View File

@@ -1,5 +1,5 @@
section "Voting Debates, Proposals & Comments" do
not_org_users = User.where(['users.id NOT IN(?)', User.organizations.pluck(:id)])
not_org_users = User.where(["users.id NOT IN(?)", User.organizations.pluck(:id)])
100.times do
voter = not_org_users.level_two_or_three_verified.all.sample
vote = [true, false].sample

View File

@@ -9,74 +9,88 @@ section "Creating header and cards for the homepage" do
end
Widget::Card.create!(
title_en: 'CONSUL',
title_es: 'CONSUL',
title_en: "CONSUL",
title_es: "CONSUL",
description_en: 'Free software for citizen participation.',
description_es: 'Software libre para la participación ciudadana.',
description_en: "Free software for citizen participation.",
description_es: "Software libre para la participación ciudadana.",
link_text_en: 'More information',
link_text_es: 'Más información',
link_text_en: "More information",
link_text_es: "Más información",
label_en: 'Welcome to',
label_es: 'Bienvenido a',
label_en: "Welcome to",
label_es: "Bienvenido a",
link_url: 'http://consulproject.org/',
link_url: "http://consulproject.org/",
header: true,
image_attributes: create_image_attachment('header')
image_attributes: create_image_attachment("header")
)
Widget::Card.create!(
title_en: 'How do debates work?',
title_es: '¿Cómo funcionan los debates?',
title_en: "How do debates work?",
title_es: "¿Cómo funcionan los debates?",
description_en: 'Anyone can open threads on any subject, creating separate spaces where people can discuss the proposed topic. Debates are valued by everybody, to highlight the most important issues.',
description_es: 'Cualquiera puede iniciar un debate sobre cualquier tema, creando un espacio separado donde compartir puntos de vista con otras personas. Los debates son valorados por todos para destacar los temas más importantes.',
description_en: "Anyone can open threads on any subject, creating separate spaces "\
"where people can discuss the proposed topic. Debates are valued by "\
"everybody, to highlight the most important issues.",
description_es: "Cualquiera puede iniciar un debate sobre cualquier tema, creando un espacio "\
"separado donde compartir puntos de vista con otras personas. Los debates son "\
"valorados por todos para destacar los temas más importantes.",
link_text_en: 'More about debates',
link_text_es: 'Más sobre debates',
link_text_en: "More about debates",
link_text_es: "Más sobre debates",
label_en: 'Debates',
label_es: 'Debates',
label_en: "Debates",
label_es: "Debates",
link_url: 'https://youtu.be/zU_0UN4VajY',
link_url: "https://youtu.be/zU_0UN4VajY",
header: false,
image_attributes: create_image_attachment('debate')
image_attributes: create_image_attachment("debate")
)
Widget::Card.create!(
title_en: 'How do citizen proposals work?',
title_es: '¿Cómo funcionan las propuestas ciudadanas?',
title_en: "How do citizen proposals work?",
title_es: "¿Cómo funcionan las propuestas ciudadanas?",
description_en: "A space for everyone to create a citizens' proposal and seek supports. Proposals which reach to enough supports will be voted and so, together we can decide the issues that matter to us.",
description_es: 'Un espacio para que el ciudadano cree una propuesta y busque apoyo. Las propuestas que obtengan el apoyo necesario serán votadas. Así juntos podemos decidir sobre los temas que nos importan.',
description_en: "A space for everyone to create a citizen's proposal and seek supports. "\
"Proposals which reach to enough supports will be voted and so, together we "\
"can decide the issues that matter to us.",
description_es: "Un espacio para que el ciudadano cree una propuesta y busque apoyo. "\
"Las propuestas que obtengan el apoyo necesario serán votadas. Así juntos "\
"podemos decidir sobre los temas que nos importan.",
link_text_en: 'More about proposals',
link_text_es: 'Más sobre propuestas',
link_text_en: "More about proposals",
link_text_es: "Más sobre propuestas",
label_en: 'Citizen proposals',
label_es: 'Propuestas ciudadanas',
label_en: "Citizen proposals",
label_es: "Propuestas ciudadanas",
link_url: 'https://youtu.be/ZHqBpT4uCoM',
link_url: "https://youtu.be/ZHqBpT4uCoM",
header: false,
image_attributes: create_image_attachment('proposal')
image_attributes: create_image_attachment("proposal")
)
Widget::Card.create!(
title_en: 'How do participatory budgets work?',
title_es: '¿Cómo funcionan los propuestos participativos?',
title_en: "How do participatory budgets work?",
title_es: "¿Cómo funcionan los propuestos participativos?",
description_en: " Participatory budgets allow citizens to propose and decide directly how to spend part of the budget, with monitoring and rigorous evaluation of proposals by the institution. Maximum effectiveness and control with satisfaction for everyone.",
description_es: "Los presupuestos participativos permiten que los ciudadanos propongan y decidan directamente cómo gastar parte del presupuesto, con la supervisión y valoración de la institución. Máxima eficacia y control para la satisfacción de todos",
description_en: "Participatory budgets allow citizens to propose and decide directly "\
"how to spend part of the budget, with monitoring and rigorous evaluation "\
"of proposals by the institution. Maximum effectiveness and control with "\
"satisfaction for everyone.",
description_es: "Los presupuestos participativos permiten que los ciudadanos propongan y "\
"decidan directamente cómo gastar parte del presupuesto, con la supervisión "\
"y valoración de la institución. Máxima eficacia y control para la "\
"satisfacción de todos",
link_text_en: 'More about Participatory budgets',
link_text_es: 'Más sobre presupuestos participativos',
link_text_en: "More about Participatory budgets",
link_text_es: "Más sobre presupuestos participativos",
label_en: 'Participatory budgets',
label_es: 'Presupuestos participativos',
label_en: "Participatory budgets",
label_es: "Presupuestos participativos",
link_url: 'https://youtu.be/igQ8KGZdk9c',
link_url: "https://youtu.be/igQ8KGZdk9c",
header: false,
image_attributes: create_image_attachment('budget')
image_attributes: create_image_attachment("budget")
)
end

View File

@@ -51,9 +51,6 @@ Setting["facebook_handle"] = nil
Setting["youtube_handle"] = nil
Setting["telegram_handle"] = nil
Setting["instagram_handle"] = nil
Setting["blog_url"] = nil
Setting["transparency_url"] = nil
Setting["opendata_url"] = "/opendata"
# Public-facing URL of the app.
Setting["url"] = "http://example.com"
@@ -61,9 +58,6 @@ Setting["url"] = "http://example.com"
# CONSUL installation's organization name
Setting["org_name"] = "CONSUL"
# CONSUL installation place name (City, Country...)
Setting["place_name"] = "CONSUL-land"
# Meta tags for SEO
Setting["meta_title"] = nil
Setting["meta_description"] = nil
@@ -94,16 +88,6 @@ Setting['feature.help_page'] = true
# Spending proposals feature flags
Setting['feature.spending_proposal_features.voting_allowed'] = nil
# Banner styles
Setting['banner-style.banner-style-one'] = "Banner style 1"
Setting['banner-style.banner-style-two'] = "Banner style 2"
Setting['banner-style.banner-style-three'] = "Banner style 3"
# Banner images
Setting['banner-img.banner-img-one'] = "Banner image 1"
Setting['banner-img.banner-img-two'] = "Banner image 2"
Setting['banner-img.banner-img-three'] = "Banner image 3"
# Proposal notifications
Setting['proposal_notification_minimum_interval_in_days'] = 3
Setting['direct_message_max_per_day'] = 3
@@ -119,9 +103,6 @@ Setting['min_age_to_participate'] = 16
# Featured proposals
Setting['featured_proposals_number'] = 3
# Proposal improvement url path ('/help/proposal-improvement')
Setting['proposal_improvement_path'] = nil
# City map feature default configuration (Greenwich)
Setting['map_latitude'] = 51.48
Setting['map_longitude'] = 0.0

View File

@@ -1,20 +0,0 @@
namespace :banners do
desc "Migrate styles to background_color and font_color"
task migrate_style: :environment do
Banner.all.each do |banner|
banner.font_color = '#FFFFFF'
case banner.style
when "banner-style banner-style-one"
banner.background_color = '#004a83'
when "banner-style banner-style-two"
banner.background_color = '#7e328a'
when "banner-style banner-style-three"
banner.background_color = '#33dadf'
end
banner.save
end
end
end

View File

@@ -248,34 +248,6 @@ feature "Proposals" do
expect(page).to have_content I18n.l(Proposal.last.created_at.to_date)
end
scenario "Create with proposal improvement info link" do
Setting["proposal_improvement_path"] = "/more-information/proposal-improvement"
author = create(:user)
login_as(author)
visit new_proposal_path
fill_in "proposal_title", with: "Help refugees"
fill_in "proposal_question", with: "¿Would you like to give assistance to war refugees?"
fill_in "proposal_summary", with: "In summary, what we want is..."
fill_in "proposal_description", with: "This is very important because..."
fill_in "proposal_external_url", with: "http://rescue.org/refugees"
fill_in "proposal_video_url", with: "https://www.youtube.com/watch?v=yPQfcG-eimk"
fill_in "proposal_responsible_name", with: "Isabel Garcia"
fill_in "proposal_tag_list", with: "Refugees, Solidarity"
check "proposal_terms_of_service"
click_button "Create proposal"
expect(page).to have_content "Proposal created successfully."
expect(page).to have_content "Improve your campaign and get more supports"
click_link "Not now, go to my proposal"
expect(page).to have_content "Help refugees"
Setting["proposal_improvement_path"] = nil
end
scenario "Create with invisible_captcha honeypot field" do
author = create(:user)
login_as(author)

View File

@@ -54,28 +54,4 @@ describe Setting do
expect(setting.enabled?).to eq false
end
end
describe "#banner_style?" do
it "is true if key starts with 'banner-style.'" do
setting = described_class.create(key: "banner-style.whatever")
expect(setting.banner_style?).to eq true
end
it "is false if key does not start with 'banner-style.'" do
setting = described_class.create(key: "whatever")
expect(setting.banner_style?).to eq false
end
end
describe "#banner_img?" do
it "is true if key starts with 'banner-img.'" do
setting = described_class.create(key: "banner-img.whatever")
expect(setting.banner_img?).to eq true
end
it "is false if key does not start with 'banner-img.'" do
setting = described_class.create(key: "whatever")
expect(setting.banner_img?).to eq false
end
end
end