Genesys Backend issueshttps://gitlab.croptrust.org/genesys-pgr/genesys-server/-/issues2020-11-26T14:11:01+01:00https://gitlab.croptrust.org/genesys-pgr/genesys-server/-/issues/557ApiInfo: add frontendUrl2020-11-26T14:11:01+01:00Matija ObrezaApiInfo: add frontendUrlPlease add `publicWebsiteUrl` property to `ApiInfo` populated from `frontend.url` prop.
```properties
frontend.url=https://www.genesys-pgr.org
```
This will allow us to link from Embedded genesys to actual Genesys website.Please add `publicWebsiteUrl` property to `ApiInfo` populated from `frontend.url` prop.
```properties
frontend.url=https://www.genesys-pgr.org
```
This will allow us to link from Embedded genesys to actual Genesys website.2.5Maxym BorodenkoMaxym Borodenkohttps://gitlab.croptrust.org/genesys-pgr/genesys-server/-/issues/559ApiInfo: subset and dataset counts2020-12-07T15:31:32+01:00Matija ObrezaApiInfo: subset and dataset countsapi-info call should return the number of `current` and **PUBLISHED** datasets and subsets.
It now returns the count of all published records (including non-current).api-info call should return the number of `current` and **PUBLISHED** datasets and subsets.
It now returns the count of all published records (including non-current).2.5Maxym BorodenkoMaxym Borodenkohttps://gitlab.croptrust.org/genesys-pgr/genesys-server/-/issues/330ApiInfoController v12018-09-19T13:57:17+02:00Matija ObrezaApiInfoController v1Implement a new `ApiInfoController` **v1** at `public static final String CONTROLLER_URL = ApiBaseController.APIv1_BASE + "/info";` in the **server.api.v1** package.
Copy info method from existing ApiInfoController (from Catalog)
## Ex...Implement a new `ApiInfoController` **v1** at `public static final String CONTROLLER_URL = ApiBaseController.APIv1_BASE + "/info";` in the **server.api.v1** package.
Copy info method from existing ApiInfoController (from Catalog)
## Extra data
Add additional properties to the returned object:
- `String[] cdnServers` loaded from `application.properties` (see genesys-pgr/genesys-server/issues/328)
- `long accessionCount` number of all accessions from `accessionService.count()`
- `long datasetCount` number of published datasets
- `long subsetCount` number of published subsets
- `long instituteCount` number of institutes with accessions in Genesys
- `long descriptorCount` number of published descriptors
- `long partnerCount` number of Partners
## Implementation
Please implement these "count" methods when they are missing and use this template (when possible):
```java
@Override
public long countAccessions(AccessionFilter filter) {
long total = elasticsearchService.count(Accession.class, filter);
if (total < 10000) {
// If total is below 10K, use actual count
total = accessionRepository.count(filter.buildQuery());
}
return total;
}
```
## Extras
Also expose:
- `captchaSiteKey` as `captchaSiteKey`
- `google.analytics.account` as `googleAnalyticsId`
- `itpgrfa.glis.basepath` as `glisUrl`
2.4Alexander PrendetskiyAlexander Prendetskiyhttps://gitlab.croptrust.org/genesys-pgr/genesys-server/-/issues/23App Blocks2017-06-14T10:01:53+02:00Matija ObrezaApp BlocksUpdate genesys server to use the application-blocks-core:1.1-SNAPSHOT.Update genesys server to use the application-blocks-core:1.1-SNAPSHOT.Matija ObrezaMatija Obrezahttps://gitlab.croptrust.org/genesys-pgr/genesys-server/-/issues/682app-blocks@52023-09-07T18:10:49+02:00Matija Obrezaapp-blocks@5Update models and filters for app-blocks@5.0.Update models and filters for app-blocks@5.0.2023.6Artem HrybeniukArtem Hrybeniukhttps://gitlab.croptrust.org/genesys-pgr/genesys-server/-/issues/385ApplicationStartup actions to /admin actions2018-12-18T21:39:57+01:00Matija ObrezaApplicationStartup actions to /admin actionsWe now have a number of actions executed in `ApplicationStartup` and they have all been executed on the sandbox and production servers.
Please move these actions to MVC /admin controller and add action buttons to `/jsp/admin/index.jsp`...We now have a number of actions executed in `ApplicationStartup` and they have all been executed on the sandbox and production servers.
Please move these actions to MVC /admin controller and add action buttons to `/jsp/admin/index.jsp`.
Add these actions as POST endpoints to Admin v1 Controller -- or create one if it doesn't exist.2.4Maxym BorodenkoMaxym Borodenkohttps://gitlab.croptrust.org/genesys-pgr/genesys-server/-/issues/397AppliedFiltersConverter for sciName2019-01-31T12:07:33+01:00Matija ObrezaAppliedFiltersConverter for sciNameShould filter on full name in Taxonomy2.
```
Caused by: java.lang.RuntimeException: Unhandled Taxonomy filter property=sciName
at org.genesys2.server.service.filter.AppliedFiltersConverter.apply(AppliedFiltersConverter.java:405)
at...Should filter on full name in Taxonomy2.
```
Caused by: java.lang.RuntimeException: Unhandled Taxonomy filter property=sciName
at org.genesys2.server.service.filter.AppliedFiltersConverter.apply(AppliedFiltersConverter.java:405)
at org.genesys2.server.service.filter.AppliedFiltersConverter.convert(AppliedFiltersConverter.java:156)
at org.genesys2.server.service.filter.AccessionFilter.convert(AccessionFilter.java:195)
```2.4Maxym BorodenkoMaxym Borodenkohttps://gitlab.croptrust.org/genesys-pgr/genesys-server/-/issues/140Apply button on "Latitude" filter e.g.,isn't disabled2017-09-19T13:29:46+02:00Aleksandr KirichenkoApply button on "Latitude" filter e.g.,isn't disabled**Steps:**
1. Go to browse page: "https://sandbox.genesys-pgr.org/explore?";
2. In the filters list open Latitude e.g.
3. Enter some characters in the filter input field;
4. Delete inputted characters;
**Act.res.:** Apply button isn't d...**Steps:**
1. Go to browse page: "https://sandbox.genesys-pgr.org/explore?";
2. In the filters list open Latitude e.g.
3. Enter some characters in the filter input field;
4. Delete inputted characters;
**Act.res.:** Apply button isn't disabled. See attached video.
[rec_015.avi](/uploads/da634f213e879c82d981ef2110f11a1f/rec_015.avi)![SCR_0039](/uploads/6fefa4f134624dfd59d08ba4bb17fbf6/SCR_0039.png)2.1Maxym BorodenkoMaxym Borodenkohttps://gitlab.croptrust.org/genesys-pgr/genesys-server/-/issues/178Article slugs without dot2017-10-21T19:37:41+02:00Matija ObrezaArticle slugs without dotArticle slugs cannot contain `.` character because they cannot be submitted to Transifex for translation.
Genesys relies on some default articles from `src/main/resources/default-articles`. These should be renamed to not use the `.`, bu...Article slugs cannot contain `.` character because they cannot be submitted to Transifex for translation.
Genesys relies on some default articles from `src/main/resources/default-articles`. These should be renamed to not use the `.`, but `-` instead, and references in code to such articles must be CONSTANTS in ContentService -- there should be no String `"user.password-reset"` anywhere in the code.2.2Maxym BorodenkoMaxym Borodenkohttps://gitlab.croptrust.org/genesys-pgr/genesys-server/-/issues/179Article templates2021-02-15T09:52:04+01:00Matija ObrezaArticle templatesSome existing **global** articles are actually templates in the system.
Allow for editing of `Article#template` flag only for `ContentService#getDefaultLanguage`. If the flag changes, update all articles with the same `slug` to the sta...Some existing **global** articles are actually templates in the system.
Allow for editing of `Article#template` flag only for `ContentService#getDefaultLanguage`. If the flag changes, update all articles with the same `slug` to the state as set for default language.
Indexing and deleting from ES index was taken care of in 50bc2ad69438f27ae876e587eb526005f10f296e.2.5Maxym BorodenkoMaxym Borodenkohttps://gitlab.croptrust.org/genesys-pgr/genesys-server/-/issues/170Article#template2017-10-19T09:32:12+02:00Matija ObrezaArticle#templateTemplates used by Genesys to send emails and display other information are using the `Article` entity. This automatically indexes their contents in Elasticsearch and also displays these templates to end users:
- https://sandbox.genesys-...Templates used by Genesys to send emails and display other information are using the `Article` entity. This automatically indexes their contents in Elasticsearch and also displays these templates to end users:
- https://sandbox.genesys-pgr.org/acn/search2?q=email§ion=article
- https://sandbox.genesys-pgr.org/content/smtp.email-verification
Add new property `boolean template` to `Article` entity.
Change Genesys code to:
- Not include in ES articles with `template == true`
- Only display such articles to users with roles ADMINISTRATOR and CONTENTMANAGER, return 404 otherwise
- Content of template articles is not HTML santitized2.2https://gitlab.croptrust.org/genesys-pgr/genesys-server/-/issues/114Asciidoc missing images2017-09-19T13:31:08+02:00Matija ObrezaAsciidoc missing imageshttps://www.genesys-pgr.org/doc/0/basics is missing images (e.g. https://www.genesys-pgr.org/doc/0/images/wiews-archived.png)
These should be copied as part of the build process, but are not included on production/sandbox environment.https://www.genesys-pgr.org/doc/0/basics is missing images (e.g. https://www.genesys-pgr.org/doc/0/images/wiews-archived.png)
These should be copied as part of the build process, but are not included on production/sandbox environment.2.1Maxym BorodenkoMaxym Borodenkohttps://gitlab.croptrust.org/genesys-pgr/genesys-server/-/issues/338AsciiDocController v12018-09-29T18:04:48+02:00Matija ObrezaAsciiDocController v1Copy `org.genesys2.server.mvc.AsciiDocController` to **server.api.v1** with **`APIv1_BASE + /cms/d`** base path.
- Add `produces=` content typesCopy `org.genesys2.server.mvc.AsciiDocController` to **server.api.v1** with **`APIv1_BASE + /cms/d`** base path.
- Add `produces=` content types2.4Matija ObrezaMatija Obrezahttps://gitlab.croptrust.org/genesys-pgr/genesys-server/-/issues/664ATiC to ATaP migration2023-04-19T09:24:30+02:00Matija ObrezaATiC to ATaP migrationWe introduced Access Token in Cookie (ATiC) to work around limitations of using simple GET requests against the API. While this worked for the longest time, current version of Firefox does not send cookies in cross-site requests as part ...We introduced Access Token in Cookie (ATiC) to work around limitations of using simple GET requests against the API. While this worked for the longest time, current version of Firefox does not send cookies in cross-site requests as part of *Enhanced Tracking Protection* feature. Chrome sends those cookies.
This ticket is to start migrating away from ATiC approach and use **Access Token as Parameter**. The migration steps will be as follows:
1. Rename `AccessTokenInCookieFilter` to `AccessTokenAsParameterFilter`
1. Update `AccessTokenAsParameterFilter` to first check if the method is `POST`, then look for `access_token` parameter in the form body -- but not in the URL query string!
- If the the parameter name appears in query string throw `400 Bad request`
2. If found, extract the token and apply it the same way we apply it in the current filter
- If possible, remove the `access_token` parameter from the form
- Send back the cookie
3. If no such parameter is found, then proceed with the current logic, including sending back the cookie
After we upgrade the client applications, we can:
1. Stop sending back the cookie in phase 1, and
2. Stop looking for the cookie in phase 2.
## Genesys UI and Embedded Genesys
These both need updating to not rely on ATiC when making direct requests to the API (i.e. without axios and its authentication).
1. Set `withCredentials: false` for axios, that will stop sending and receiving cookies.
2. Add access token as a parameter to forms
3. Change remaining GET requests to POSTs.2023.3Artem HrybeniukArtem Hrybeniukhttps://gitlab.croptrust.org/genesys-pgr/genesys-server/-/issues/406Audited Subset2019-01-24T15:04:13+01:00Matija ObrezaAudited SubsetMake `Subset` an audited entity.Make `Subset` an audited entity.2.4Maxym BorodenkoMaxym Borodenkohttps://gitlab.croptrust.org/genesys-pgr/genesys-server/-/issues/665AuditLog retention period2023-04-21T06:22:23+02:00Matija ObrezaAuditLog retention periodCopy grin-global/grin-global-server!531 to Genesys with default retention period of `1Y`.Copy grin-global/grin-global-server!531 to Genesys with default retention period of `1Y`.2023.3Artem HrybeniukArtem Hrybeniukhttps://gitlab.croptrust.org/genesys-pgr/genesys-server/-/issues/19Auto-center accessions map2017-06-01T16:02:58+02:00Nora Castaneda-AlvarezAuto-center accessions mapCenter accessions map to center of the accessions selected. After choosing "View map" the user is taken to a map centered in the Norwegian sea, and the user needs to manually scroll to the locality of interest.
Example: https://www.ge...Center accessions map to center of the accessions selected. After choosing "View map" the user is taken to a map centered in the Norwegian sea, and the user needs to manually scroll to the locality of interest.
Example: https://www.genesys-pgr.org/explore/map?filter=%7B%22orgCty.iso3%22%3A%5B%22MAR%22%5D%7D
The following would improve user experience:
* When filters are applied on the map, make a call to the server (passing the jsonFilters) to obtain the "bounding box" for the selection
* Bounding box is obtained by querying for `select min(latitude), max(latitude), min(longitude), max(longitude) from accession....` with specified filters
* Apply bounding box to the leaflet map when updating the map layer URL with new filter
Example of centering the leaflet map is in `/jsp/country/details.jsp` where we focus the map on the institutes.
Maxym BorodenkoMaxym Borodenkohttps://gitlab.croptrust.org/genesys-pgr/genesys-server/-/issues/41Auto-center map for countries and regions2017-06-14T10:01:53+02:00Matija ObrezaAuto-center map for countries and regionsThe original map centering worked on locations of accessions directly. The centering methods worked correctly, but because the data is very poor the centering seemed to behave funny and non-functional.
We have implemented #39 that adds ...The original map centering worked on locations of accessions directly. The centering methods worked correctly, but because the data is very poor the centering seemed to behave funny and non-functional.
We have implemented #39 that adds bounding box information on Country level.
Bounding box information for countries is available as SQL updates in: [bboxes.csv](/uploads/e3f40c13d0b3cc9cea4d3bc6b8ffded0/bboxes.csv)
## Center map for countries and regions only
When the filters contains "Country of Origin" or "Region of Origin", obtain the bounding box for the selected origin countries and auto-center map on the countries bounding box.
## Initial "centering"
When the map is first displayed use the bounding box [(-80, -170), (80, 170)] to center the map.Maxym BorodenkoMaxym Borodenkohttps://gitlab.croptrust.org/genesys-pgr/genesys-server/-/issues/144Autocomplete for "Add multiple accessions" fields2017-09-19T13:29:45+02:00Aleksandr KirichenkoAutocomplete for "Add multiple accessions" fields![SCR_0045](/uploads/d490ba749c99ac4b494f9148a8f60ea3/SCR_0045.png)
I think if we make autocomplete for these fields it would be more convenient for user to manage this feature. Once user starts entering characters and then he sees sugge...![SCR_0045](/uploads/d490ba749c99ac4b494f9148a8f60ea3/SCR_0045.png)
I think if we make autocomplete for these fields it would be more convenient for user to manage this feature. Once user starts entering characters and then he sees suggestions with possible variants to input. What do you think about it? @mobreza @ncastaneda @ntkachenko2.1Maxym BorodenkoMaxym Borodenkohttps://gitlab.croptrust.org/genesys-pgr/genesys-server/-/issues/6Basic BrAPI framework2018-03-26T10:22:24+02:00Matija ObrezaBasic BrAPI frameworkImplement new controller `BrAPIController` mapped onto `/brapi/v1`. It should use the standard OAuth2 authentication that is already implemented for existing `/api/v0`.
http://docs.brapi.apiary.io/#introduction/structure-of-the-response...Implement new controller `BrAPIController` mapped onto `/brapi/v1`. It should use the standard OAuth2 authentication that is already implemented for existing `/api/v0`.
http://docs.brapi.apiary.io/#introduction/structure-of-the-response-object:
# BrAPI response
The response always consists of a "metadata" key that minimally contains the pagination information in a "pagination" key and the status information as well as a "datafiles" key that lists URLs to data files generated by the call.
If the response is a single record that doesn't require pagination, then the value for the "pagination" key is returned with all the keys set to zero. When the results are paginated, the keys "pageSize", "currentPage", "totalCount", "totalPages" contain the appropriate values. Note that pages are zero indexed, so the first page will be page 0 (zero). (For the user interface, this may be adjusted by adding 1).
The status object contains a list of objects with the keys "code" and "message". If no status is reported, the empty list should be returned.
The datafiles key contains a list of strings. The empty list should be returned if no datafiles are present.
The payload data is contained in a key called "result", containing an object with the response. If there is a paginated response, a "data" key will be present, with a list value, which will be paginated over (showing pageSize elements of the currentPage).
Additional documentation is in the GitHub wiki. See especially the [Best Practices and Conventions] (https://github.com/plantbreeding/documentation/wiki/Best-Practices-and-Conventions).Matija ObrezaMatija Obreza