Commit Graph

18471 Commits

Author SHA1 Message Date
taitus
306e7356c3 Allow translate locales that need to be mapping
It has been detected that for the :pt-BR, :zh-CN and :zh-TW locales,
the translate button was being displayed, but when requesting the
translation, the remote translation validation failed due to:

'''
validates :locale, inclusion: { in: ->(_) {
     RemoteTranslations::Microsoft::AvailableLocales.available_locales }}
'''

That available_locales method did not contemplate these 3 languages
in the format used by the application.

To solve this problem the api response is mapped to return all
locales in the format expected by the application.

Add remote translation model test to ensure that a remote translation
is valid when its locale is pt-BR.

Co-Authored-By: Javi Martín <35156+javierm@users.noreply.github.com>
2023-03-15 15:52:51 +01:00
Javi Martín
33c62ccbd7 Merge pull request #5090 from consul/dependabot/bundler/rack-2.2.6.3
Bump rack from 2.2.6.2 to 2.2.6.3
2023-03-10 17:30:58 +01:00
dependabot[bot]
f188a0321b Bump rack from 2.2.6.2 to 2.2.6.3
Bumps [rack](https://github.com/rack/rack) from 2.2.6.2 to 2.2.6.3.
- [Release notes](https://github.com/rack/rack/releases)
- [Changelog](https://github.com/rack/rack/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rack/rack/compare/v2.2.6.2...v2.2.6.3)

---
updated-dependencies:
- dependency-name: rack
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-10 01:00:02 +01:00
taitus
c64b49b128 Change gem from TranslatorText to BingTranslator
TranslatorText isn't compatible with Ruby 3, so we need to use a
different gem.

The 'translator-text' gem response was an array of one or more objects.
Now with the 'bing_translator' gem the response is an array with one or
several translated texts.

We remove the concept of object in the code. And we also remove the
"create_response" method from the specs since it is no longer necessary
to emulate that object and we can simply use arrays with texts to emulate
the new response.
2023-03-09 06:00:41 +01:00
Javi Martín
63d0e316cf Replace instance variable usage with a method
We usually use this approach because methods are easier to override and
stub.
2023-03-09 05:50:27 +01:00
Javi Martín
b030a198a3 Include SentencesParser inside the right class
We were including it in the Object class, making its methods
available everywhere.
2023-03-09 05:50:16 +01:00
Javi Martín
922632052c Merge pull request #5054 from consul/coverage_on_master
Run test coverage just on the master branch
2023-03-04 01:59:18 +01:00
Javi Martín
c614b0bc97 Run test coverage just on the master branch
Since we changed the way we integrate coveralls in commit 8ed8cc8b9,
we're getting 6 additional checks displayed in our pull requests.

We don't need these checks, and they only add noise. The only reason we
use coveralls is to know the test coverage in our master branch.

So we're changing the code so coveralls only runs on the master branch.

There's also a chance that the test suite will be faster because it
doesn't need to keep track of the coverage, although I haven't noticed any
significant differences during my tests.

I haven't found a more elegant way to say that a certain step should
only be run on push on master, so I'm setting the environment variable
we were already using.
2023-03-04 01:29:03 +01:00
Javi Martín
462792d018 Merge pull request #5087 from consul/doc_folder
Clean up doc folder
2023-03-03 16:07:39 +01:00
Javi Martín
4425f0f482 Merge pull request #4983 from sashashura/patch-1
GitHub Workflows security hardening
2023-03-01 17:41:23 +01:00
Javi Martín
56e42f209d Fix API examples
We were getting many errors when trying to run them, from uninitialized
constant `HTTP` to undefined method `headers`.

We might move these examples to the documentation repository in the
future, but we need to look for possible side-effects first.
2023-03-01 17:25:21 +01:00
Javi Martín
e4992ffb8d Remove README in the doc folder
This documentation is obsolete and there's documentation in the official
consulproject website containing user guides like this one.
2023-03-01 17:25:21 +01:00
Javi Martín
fcaba88879 Remove unused images in doc folder
We added them in commit 2e4601bbb, but it looks that they've never been
used.
2023-03-01 17:25:21 +01:00
Javi Martín
8b7a9d147a Use the demo URL in API examples 2023-03-01 17:25:21 +01:00
Javi Martín
ae8975def4 Remove API documentation
It's already present in the consul/docs repository.

We're keeping the examples folder for now because it isn't in the
consul/docs repository yet.
2023-03-01 17:25:21 +01:00
Sebastia
8f01a25ced Merge pull request #4900 from consul/ballot_hidden_money
Do not show money with hidden money
2023-02-23 15:22:24 +01:00
Sebastia
a26f05f9f9 Merge pull request #4997 from consul/legislation_question
Add description to Legislation questions
2023-02-23 15:21:57 +01:00
decabeza
9ef90b1e49 Do not show money with hidden money 2023-02-22 19:27:28 +01:00
taitus
d96a91710f Fix broken h3 tag
Since we're now allowing <h2> and <h3> tags in the description, we
remove the broken <h3> tag from quiz-question class. Since its content
is also in the <title> element, and in order to be consistent with other
show actions in the public area, we change this tag to <h1>.

We add <h2> tag in the "Share" heading and we replace the broken <h4>
tag above adding new styles.
2023-02-22 19:19:27 +01:00
Sebastia
0f5218037f Merge pull request #5084 from consul/check-translations-keys
Remove duplicate keys
2023-02-22 16:38:36 +01:00
taitus
f100e01dd2 Use human_attribute_name in admin tables
To be consistent with the previous commit we update the text that appears
in the administration tables for discussions and proposals. Now instead of
"Proposals" and "Discussions" will appear "Title" which makes more sense
and is more consistent.
2023-02-22 16:14:33 +01:00
taitus
484e1da6d1 Remove duplicated keys
In the images.yml file we have a duplicate key with the same translation,
so we can remove it.

In the admin.yml file we have a duplicate key with different translation.

This translation is only used in 2 places in the application:
- In the administration table for collaborative legislation proposal index.
- In the <% provide :title do %> of the same page.

Although it is true that now the second translation (Title) is applied in
both cases, I think it makes more sense to use the first one (Proposals)
in the page title because it seems to make more sense and be more useful
to use "Proposals" instead of “Title”.

In order not to modify the behavior in the translation shown in the
administration table, we add human_attribute_name to obtain the expected
result.
2023-02-22 16:14:31 +01:00
decabeza
800027728a Add description to legislation questions 2023-02-22 00:52:51 +01:00
decabeza
cd99f2a5eb Replace legislation question textarea to text field 2023-02-22 00:52:51 +01:00
Javi Martín
c1d70ef332 Merge pull request #5083 from consul/fix-specs
Fix flaky spec in budget supports admin stats
2023-02-21 20:00:48 +01:00
taitus
1ea5b699cf Fix flaky spec in budget supports admin stats
The test that was not passing sometimes since commit 915999db4 because
we no longer created the budget before visiting the page that loads it.
So now we're forcing its creation with `let!`.
2023-02-21 19:35:43 +01:00
Javi Martín
2dc10f4884 Merge pull request #5082 from consul/valuation_group_investments
Show valuator group investments to group valuators
2023-02-20 15:31:27 +01:00
Javi Martín
45b9eccfd8 Show valuator group investments to their valuators
When accessing the valuation area, we were only displaying the
investments directly assigned to the current valuator, but we weren't
displaying the investments assigned to that valuator's group.

Using the `assigned_investments_ids` method, which takes the valuator
group into account, solves the issue.

We've also found an issue on our development machines: since we don't
have a unique index per `investment_id` and `valuator_id` in the
`budget_valuator_assignments` table, we've found duplicate records on
this table. When that happened, we were displaying the same investment
several times.

Since now we no longer join this table in the query returning the
investment, this issue is also solved, and we're adding a test for it.
We can now remove the call to the `distinct` method when calculating the
number of investments per heading.
2023-02-20 14:59:31 +01:00
Javi Martín
f7dfe30675 Merge pull request #5078 from consul/link_to_evaluate
Show link to evaluate investments with valuation finished
2023-02-20 14:42:58 +01:00
Javi Martín
1b61effa43 Merge pull request #4985 from consul/fix_budget_stats
Show admin heading stats for the current budget
2023-02-20 14:38:59 +01:00
Javi Martín
e51e034468 Use budget stats model to calculate admin stats
This way we reduce duplication.
2023-02-20 14:21:22 +01:00
Javi Martín
b536a7cb77 Extract component for supporting budget admin stats
This is consistent with the component for balloting stats. We're about
to change both components, and the changes are easier to follow if
they're similar.

We're also using consistent names in methods.
2023-02-20 14:21:22 +01:00
Javi Martín
dd28163be7 Show admin heading stats for the current budget
To get the heading where a user voted, we were relying on the
`balloted_heading_id` field.

Our guess is this was done so the total number of users is the same as
the sum of users who voted on a heading. That is, if 2000 people voted
just on the "All city" heading, 1000 voted just on the "North district"
heading, and 500 people voted on both, instead of showing "3500 people
voted in total, 2500 voted in all city, 1500 voted in north district",
we show something like "3500 people voted in total, 2250 voted in all
city, and 1250 voted in north district".

However, this approach has some disadvantages.

The first disadvantage is, the stats aren't correct. In the case above,
2500 voted on the "All city heading", so the statistics for this heading
don't show reality.

The second one is we weren't considering the last heading where users
voted inside the budget being displayed, but the last heading where
users voted, period. That means that, if all the people above voted on a
later budget, the stats for the budget above would become "3500 people
voted in total, 0 voted in all city, and 0 voted in north district".
That also means we were including headings from previous budgets in the
statistics for more recent budgets when people hadn't voted on the
recent ones.

So we're removing the `balloted_heading_id` since its data is lost once
people vote on a new budget. And, in order to show the right stats and
simplify the code, we're no longer trying to add votes just to one
heading when users vote on several headings.

Co-Authored-By: Julian Nicolas Herrero <microweb10@gmail.com>
2023-02-20 14:21:03 +01:00
Javi Martín
698fc753ba Fix invalid HTML in budget stats tables
The <th> elements should be inside <tr> elements.

Since we're changing this code, we're also adding <thead> and <tbody>
tags because that's what we usually do and it makes it easier to select
<tr> tags from either the table head or the table body using CSS or
JavaScript.
2023-02-20 14:20:50 +01:00
Javi Martín
44451193f6 Use consistent method names in admin stats component
We had one method called `vote_count_by_heading` and another one called
`user_count_by_district`, when here districts refer to headings.
2023-02-20 14:20:50 +01:00
Javi Martín
76b08398cf Extract component for balloting budget admin stats
We're also moving the tests, but we're keeping one system test in order
to test the controller and the navigation to get to this page.

Note we're slightly changing the order of the methods in the component;
the order of the instance variables was `user_`, `vote_`, `vote_`,
`user_`, which was hard to follow.
2023-02-20 14:20:50 +01:00
Javi Martín
915999db4a Simplify data in budget admin stats tests
We don't need groups to create headings since commit 20b1085dc, and
`let!` was used as a substitute for instance variables in commit
91c21b098, but it isn't necessary in this case.
2023-02-20 14:20:50 +01:00
Javi Martín
d1edccebef Merge pull request #5077 from consul/investment_cache
Don't cache related actions in investments view
2023-02-20 14:10:52 +01:00
Javi Martín
54fbdf4372 Remove unnecessary condition in valuation investments
The budget is loaded using a method which raises an exception if it
isn't found, so `@budget.present?` will always return true.
2023-02-17 15:27:53 +01:00
Javi Martín
b6ed11471e Simplify investment params filters in valuation
We weren't allowing the `budget_id` parameter and then we were adding it
manually. We were also allowing other parameters that aren't used in the
valuation section.

So we're allowing budget and heading, which are the only parameter we're
offering filters for in the user interface. Note the `budget_id`
parameter doesn't seem to make sense because we're already inside a
`@budget.investments` statement, but the `budget_id` parameter is
required by the `scoped_filter` method.
2023-02-17 15:27:53 +01:00
Javi Martín
1649b9125e Add scope to get investments visible to a valuator
Using this method makes it more obvious that we're loading the same
investments in the budgets index as in the investments index.
2023-02-17 15:27:53 +01:00
Javi Martín
ed4b03c3ed Show link to evaluate after evaluation has finished
This way it's still possible to access the "evaluation finished" filter
in the valuation investments index.
2023-02-17 15:26:49 +01:00
Javi Martín
d5cb01bf98 Split test in budget valuation component
We're going to add more cases and the test for the link to the evaluate
would become too big, so we're splitting it.
2023-02-17 15:25:25 +01:00
Javi Martín
02e8ffca36 Don't cache related actions in investments view
We've experienced some caching issues with this code for years. We've
fixed some of them in commits 9979b5399 and 3645c333a, but we're still
running into other issues. In order to really cache this section, we'd
need to cache:

* Whether or not the investment should show the aside and vote/support
  buttons (we could do it by caching its budget)
* Whether its budget is balloting or finished (we could do it by caching
  its budget)
* Whether the current user is following the investment
* Whether the `remove_investments_supports` feature is enabled
* Whether the `community` feature is enabled
* The value of the `org_name` setting
* The value of the `twitter_handle` setting

We weren't caching all these elements, meaning that (for instance), we
didn't display the button to vote when a budget moved into the voting
phase if we had already cached this section without the button.

And chances are the list is incomplete. So, instead of trying to take
into account every single possible factor that should make us expire the
cache, we're restricting the cache so it only affects the content of the
investment. This is similar to what we do in the investments index,
where we cache the content of the investment but we don't cache the
vote/support buttons.
2023-02-17 14:56:13 +01:00
Javi Martín
4debff754c Merge pull request #5024 from consul/poll_officer_menu
Always show poll officer menu to officers
2023-02-17 14:33:51 +01:00
decabeza
1ff2144830 Show always poll officer menu to officers
Since the change on commit cbbe188d6 we added a Poll.current.any?
condition to show the officing link on admin menu to officers.

That condition doesn't have much sense since Poll results only can be
added after a poll has ended, and there may be only one active poll.
2023-02-17 14:07:02 +01:00
Javi Martín
2e9c4de061 Unify specs testing access to admin menu items
In most sections, we had two specs testing what happens after accessing
one of the privileged areas. We're grouping the expectations and so
we've only got one test per area, making these tests faster.
2023-02-17 14:07:02 +01:00
Javi Martín
465d2d604d Move login items tests to the component
This way we reduce the number of system tests or, in some cases,
requests during system tests, making the tests faster.

We're still testing the interaction with the menu when users have the
right permissions.
2023-02-17 14:07:02 +01:00
Javi Martín
169b1b191a Merge pull request #5073 from consul/remote_translations_crash
Fix crash translating an already translated text
2023-02-17 14:05:23 +01:00
Javi Martín
0448280fd3 Merge pull request #5072 from consul/top_bar_adjustments
Fix menu on "wide" small screens
2023-02-17 14:03:57 +01:00