Genesys Backend issueshttps://gitlab.croptrust.org/genesys-pgr/genesys-server/-/issues2019-08-13T10:21:01+02:00https://gitlab.croptrust.org/genesys-pgr/genesys-server/-/issues/56GLIS DOI support2019-08-13T10:21:01+02:00Matija ObrezaGLIS DOI supportGLIS will provide DOI (https://www.doi.org) registration service for genebanks and other PGRFA (perhaps also GRFA, PGR) holders.
The DOI assigned by GLIS will be in the regexp format `10\.18730/[A-Z0-9]+` (production GLIS) and `10\.0155...GLIS will provide DOI (https://www.doi.org) registration service for genebanks and other PGRFA (perhaps also GRFA, PGR) holders.
The DOI assigned by GLIS will be in the regexp format `10\.18730/[A-Z0-9]+` (production GLIS) and `10\.0155/[A-Z0-9]+` (test environment). It is possible (and likely) that individual organizations assign their own DOI to accessions (`10\.[0-9]+/.+` format).
In this ticket we add support for DOI only and ignore other PUID types uploaded to Genesys.
# GLIS DOI extras
Checksum: the last character of the GLIS DOI is a checksum and can be one of *, ~, $, =, U and `[A-Z0-9]`.
Characters I, L, O, U are not in the "DOI" part of the DOI.
http://www.crockford.com/wrmg/base32.html
# The "big picture"
![Genebank_Genesys_GLIS](/uploads/751baf8c6a9b6e3589e91395123c3ab8/Genebank_Genesys_GLIS.png)
# Key principles
1. For genebank material (accessions) there is one DOI assigned to one accession.
1. From the moment an accession has a DOI assigned, that record can not be deleted from Genesys (REST delete should return 403 Forbidden).
1. Any other URL (like the current `/acn/id/[0-9]+`) must permanently redirect to the DOI'zed accession URL in Genesys.
# Accession URL
For accessions with a DOI registered in Genesys, we will use the following URL template: `https://www.genesys-pgr.org/[DOI]` for example `https://www.genesys-pgr.org/10.18730/A3C9`. Every URL to an accession with DOI must use the DOI'zed URL.
# Managing accession passport data
We add a **unique** DOI field (`doi varchar(255) null`) to the accession record.
Genebanks obtain DOI for their accessions and register the DOIs with their accession passport data. On upload of passport data to Genesys, the DOI is included with the passport data (next to `INSTCODE` and `ACCENUMB`).
The **DOI** takes absolute priority when identifying accession records. We now use the combination of `INSTCODE`, `ACCENUMB` and depending on the institute also `GENUS` to identify the record in our system. With the DOI provided, we only need to look up the record by the unique DOI value.
1. When DOI does not exist Genesys, record lookup is based on current approach (`INSTCODE`, `ACCENUMB`, `GENUS`?).
1. When DOI exists in Genesys we are updating that one single accession record.
**There is a possibility in current GLIS that the same DOI would be propagated between PGRFA holders and new holders opt to reuse the DOI assigned by the source genebank.** This can only be resolved by resolving the DOI against GLIS and obtaining information on the registered holder. Non-GLIS DOI resolution may not return the same information or even use the same format. This also should be explored in the future.
# Holder validation
Only on the first registration of DOI in Genesys we would need to resolve the DOI and retrieve registration data from GLIS. We need to verify that the WIEWS code of the holding institute matches the provided data.
Validation is implemented in genesys-pgr/glis-client#21
2.4Matija ObrezaMatija Obrezahttps://gitlab.croptrust.org/genesys-pgr/genesys-server/-/issues/155Pagination buttons aren't disabled2018-07-23T07:11:25+02:00Aleksandr KirichenkoPagination buttons aren't disabledWhen there is only one page in the results, the pagination buttons are not disabled
**Steps:**
1. Go to browse page "https://sandbox.genesys-pgr.org/explore";
2. Add several accessions in My List 3 for example;
3. Click on the "My List"...When there is only one page in the results, the pagination buttons are not disabled
**Steps:**
1. Go to browse page "https://sandbox.genesys-pgr.org/explore";
2. Add several accessions in My List 3 for example;
3. Click on the "My List" menu item;
4. Click on the ">" Next page button
Act.res.: ">" Next page button is enabled, and transition to the 2nd page is performed; See attached video
[rec_017.avi](/uploads/c4ff45f05ec2caa8a97484108fc3567a/rec_017.avi)
![SCR_0048](/uploads/70a01f567c8081bb3140632e4aa79ca4/SCR_0048.png)
This also applies to any pagination on the site except search. In the search it is implemented as needed. For example, watch the video: [rec_018.avi](/uploads/785e41edc7d6d6bda744c5a0629250de/rec_018.avi)2.4Maxym BorodenkoMaxym Borodenkohttps://gitlab.croptrust.org/genesys-pgr/genesys-server/-/issues/215"Saved lists of accessions" long name or description2017-11-07T21:11:21+01:00Aleksandr Kirichenko"Saved lists of accessions" long name or description"Saved lists of accessions" long name or description cause failures
**Steps:**
1. Go to the "https://sandbox.genesys-pgr.org";
2. Click on the "Browse" menu item;
3. Select several Accessions;
4. Click on the "My List" menu item;
5. Na..."Saved lists of accessions" long name or description cause failures
**Steps:**
1. Go to the "https://sandbox.genesys-pgr.org";
2. Click on the "Browse" menu item;
3. Select several Accessions;
4. Click on the "My List" menu item;
5. Navigate to the "Accession List" tab;
6. Fill the "List title" and "List description" fields using long name / description for example 150 characters;
7. Click on the "CREATE NEW LIST" button;
8. Click on the "CLEAR THE LIST" button;
**Act.res.:** See attached screen:
![SCR_0061](/uploads/c4e41a239e70010c4a62f4aef3c4851f/SCR_0061.png)2.4Nina Tkachenkon.tkachenko@aimprosoft.comNina Tkachenkon.tkachenko@aimprosoft.comhttps://gitlab.croptrust.org/genesys-pgr/genesys-server/-/issues/234Wrong navigation through the links in the Table of Contents2017-12-22T16:54:05+01:00Aleksandr KirichenkoWrong navigation through the links in the Table of Contents**Steps:**
1. Go to "https://sandbox.genesys-pgr.org/doc/0/brapi" page;
2. Click on the "Germplasm" link in the Table of contents;
See attached video:
![recording_00013](/uploads/1fcec4b71cf69633ef7f00609653e540/recording_00013.gif)
*...**Steps:**
1. Go to "https://sandbox.genesys-pgr.org/doc/0/brapi" page;
2. Click on the "Germplasm" link in the Table of contents;
See attached video:
![recording_00013](/uploads/1fcec4b71cf69633ef7f00609653e540/recording_00013.gif)
**This also applies to "Tables of Contents" on the pages: "Genesis API" and "Accession passport data"**2.4Maxim BabichevMaxim Babichevhttps://gitlab.croptrust.org/genesys-pgr/genesys-server/-/issues/235CSS for printing2017-12-22T16:57:46+01:00Matija ObrezaCSS for printingSeems that the CSS at this moment somehow allows only for printing a single page from the Browser.
Steps to reproduce:
1. Open https://sandbox.genesys-pgr.org/explore
1. Press `Cmd+P` or whatever
1. Observe the print preview with a si...Seems that the CSS at this moment somehow allows only for printing a single page from the Browser.
Steps to reproduce:
1. Open https://sandbox.genesys-pgr.org/explore
1. Press `Cmd+P` or whatever
1. Observe the print preview with a single page
[Accession_browser.pdf](/uploads/f6aaf788f5a7e7e3ed8a904743f52099/Accession_browser.pdf)
Printing from the Browser should print entire contents of the page. Make sure it is tested on
https://sandbox.genesys-pgr.org/doc/0/basics and https://sandbox.genesys-pgr.org/doc/0/brapi
Must also work when in mobile view.2.4Maxim BabichevMaxim Babichevhttps://gitlab.croptrust.org/genesys-pgr/genesys-server/-/issues/242SCSS for free-text2018-07-02T16:29:16+02:00Matija ObrezaSCSS for free-textDisplay of lists is not styled in user-provided content (`free-text`) at https://www.genesys-pgr.org/wiews/USA1004
![image](/uploads/d574309d69ecd323c03b10cfc0b893e7/image.png)
Please fix the SCSS for `.free-text`:
- lists
- heading ...Display of lists is not styled in user-provided content (`free-text`) at https://www.genesys-pgr.org/wiews/USA1004
![image](/uploads/d574309d69ecd323c03b10cfc0b893e7/image.png)
Please fix the SCSS for `.free-text`:
- lists
- heading sizes should be smaller2.4Maxim BabichevMaxim Babichevhttps://gitlab.croptrust.org/genesys-pgr/genesys-server/-/issues/244Subsets2018-08-22T12:48:12+02:00Matija ObrezaSubsetsWe're introducing a new "list of accessions", similar to current implementation of *AccessionList*.
# Model
Add a new entity `Subset` to *..model.impl*:
```java
public class Subset extends AuditedVersionedModel implements AclAware {
...We're introducing a new "list of accessions", similar to current implementation of *AccessionList*.
# Model
Add a new entity `Subset` to *..model.impl*:
```java
public class Subset extends AuditedVersionedModel implements AclAware {
@Type(type = "uuid-binary")
protected UUID uuid;
protected boolean published;
// other strings, only description is @Lob
// dateCreated as string -- it's not the same as createdDate (from Auditing)
protected String title, description, publisher, rights, dateCreated, publisher;
@ManyToMany(cascade = {}, fetch = FetchType.LAZY)
@JoinTable(name = "SubsetAccessions", joinColumns = @JoinColumn(name = "subsetId"), inverseJoinColumns = @JoinColumn(name = "acceId"))
private List<AccessionId> accessionIds;
}
```
1. Add JPA repository
1. Implement service
# Controller and JSP
Add a new `SubsetController` at */subset* with the following methods
1. GET */subset/* `listSubsets()` that renders the list of Subsets where `published == true`.
1. GET */subset/{uuid}* `subset()` that renders all properties of the Subset + the passport data of accessions in the subset. It should use the components from *browse*.
# REST API controller
New controller at */api/v1/subset* with endpoints:
1. POST */list* `Page<Subset> list(@RequestBody SubsetFilters filter`)
1. GET */{uuid}* `Subset get(@PathVariable UUID uuid)`
1. POST */create* `Subset create(@RequestBody Subset subset)`
1. POST */update* `Subset update(@RequestBody Subset subset)`
1. DELETE */{uuid},{version}* `Subset delete(@PathVariable UUID uuid, @PathVariable int version)`2.4Maxym BorodenkoMaxym Borodenkohttps://gitlab.croptrust.org/genesys-pgr/genesys-server/-/issues/246Term of the copywriter has expired.2018-07-02T16:29:15+02:00Aleksandr KirichenkoTerm of the copywriter has expired.![SCR_0072](/uploads/71bc8651a6227becac6ef6130ae06400/SCR_0072.png)![SCR_0072](/uploads/71bc8651a6227becac6ef6130ae06400/SCR_0072.png)2.4Maxym BorodenkoMaxym Borodenkohttps://gitlab.croptrust.org/genesys-pgr/genesys-server/-/issues/247Password reset2018-07-02T16:29:15+02:00Matija ObrezaPassword resetPassword reset stopped working on www.genesys-pgr.org due to user not being authenticated in line 233 of `BasicUserServiceImpl`:
```
@PreAuthorize("hasRole('ADMINISTRATOR') || principal.id == #user.id")
```
![image001](/uploads/2ad4088...Password reset stopped working on www.genesys-pgr.org due to user not being authenticated in line 233 of `BasicUserServiceImpl`:
```
@PreAuthorize("hasRole('ADMINISTRATOR') || principal.id == #user.id")
```
![image001](/uploads/2ad4088ee82273c36796108ec9f06b7a/image001.jpg)
# The update
1. User requests password reset
1. User receives email and opens the link
1. On opening the link, the current security context should be set to that user
1. Setting password works again
2.4Maxym BorodenkoMaxym Borodenkohttps://gitlab.croptrust.org/genesys-pgr/genesys-server/-/issues/249Data download2018-05-01T11:10:24+02:00Nora Castaneda-AlvarezData downloadRegistered and un-registered users can download data in ZIP format:
![Screen_Shot_2018-04-11_at_09.38.47](/uploads/e54250b20ff9e515150e1329c7cac921/Screen_Shot_2018-04-11_at_09.38.47.png)
This ZIP often contains six files: coll.csv, co...Registered and un-registered users can download data in ZIP format:
![Screen_Shot_2018-04-11_at_09.38.47](/uploads/e54250b20ff9e515150e1329c7cac921/Screen_Shot_2018-04-11_at_09.38.47.png)
This ZIP often contains six files: coll.csv, core.csv, geo.csv, meta.xml, names.csv and README.txt.
The file `core.csv` is missing some columns. These columns need to be included: `SPAUTHOR`, `SUBTAUTHOR`, `SUBTAXA`, coming from **Taxonomy2** table.
2.4Maxym BorodenkoMaxym Borodenkohttps://gitlab.croptrust.org/genesys-pgr/genesys-server/-/issues/251Excel corrupted2018-04-24T19:04:23+02:00Matija ObrezaExcel corruptedLarge datasets (~70K rows) break Excel 2016, 2013 limit on number of hyperlinks.
https://support.office.com/en-us/article/excel-specifications-and-limits-1672b34d-7043-467e-8e27-269d656771c3
> Hyperlinks in a worksheet: 66,530 hyperlinksLarge datasets (~70K rows) break Excel 2016, 2013 limit on number of hyperlinks.
https://support.office.com/en-us/article/excel-specifications-and-limits-1672b34d-7043-467e-8e27-269d656771c3
> Hyperlinks in a worksheet: 66,530 hyperlinks2.4Matija ObrezaMatija Obrezahttps://gitlab.croptrust.org/genesys-pgr/genesys-server/-/issues/252Delete user account2018-04-28T13:12:52+02:00Matija ObrezaDelete user accountAllow users to delete their Genesys user account.
The User/SID is linked to many entities. It is best if we replace all personal information with:
1. `email`: Used for logging in and must be unique. Replace with `deleted@${timestamp}` ...Allow users to delete their Genesys user account.
The User/SID is linked to many entities. It is best if we replace all personal information with:
1. `email`: Used for logging in and must be unique. Replace with `deleted@${timestamp}` (e.g. `deleted@2134523311`)
1. `fullName`: Displayed in various places, replace with `Account removed`
1. `accountType`: Add `DELETED` option and use that.
1. `enabled`: Set to `false`.2.4Matija ObrezaMatija Obrezahttps://gitlab.croptrust.org/genesys-pgr/genesys-server/-/issues/254FTP password2018-04-26T14:58:20+02:00Matija ObrezaFTP passwordUsers are not able to generate FTP password.Users are not able to generate FTP password.2.4Matija ObrezaMatija Obrezahttps://gitlab.croptrust.org/genesys-pgr/genesys-server/-/issues/255Rename model2018-05-03T20:46:16+02:00Matija ObrezaRename modelThe **DS2** model `Descriptor` does not follow the usual `DS2Descriptor` naming. Rename model and database table.The **DS2** model `Descriptor` does not follow the usual `DS2Descriptor` naming. Rename model and database table.2.4Matija ObrezaMatija Obrezahttps://gitlab.croptrust.org/genesys-pgr/genesys-server/-/issues/259Upgrade appblocks2018-05-18T00:35:40+02:00Matija ObrezaUpgrade appblocksUpgrade to latest app-blocksUpgrade to latest app-blocks2.4Matija ObrezaMatija Obrezahttps://gitlab.croptrust.org/genesys-pgr/genesys-server/-/issues/260Increased page size for API calls2018-06-12T18:21:44+02:00Matija ObrezaIncreased page size for API callsThe `pageSize` for API responses is limited to 50. Increase this to 1000 for API calls.The `pageSize` for API responses is limited to 50. Increase this to 1000 for API calls.2.4Matija ObrezaMatija Obrezahttps://gitlab.croptrust.org/genesys-pgr/genesys-server/-/issues/269Invalid JSON2018-07-15T12:02:14+02:00Matija ObrezaInvalid JSONSome code is generating invalid JSON:
```
{"lastModifiedDate":["2014-7-23"],+"institute.code":["UKR028"]}
```
There is a space `+` where there should't be.Some code is generating invalid JSON:
```
{"lastModifiedDate":["2014-7-23"],+"institute.code":["UKR028"]}
```
There is a space `+` where there should't be.2.4Matija ObrezaMatija Obrezahttps://gitlab.croptrust.org/genesys-pgr/genesys-server/-/issues/270Debug upsert2018-07-16T12:34:46+02:00Matija ObrezaDebug upsertPosting
```json
{"acceName":["ajda","","èrna"],"coll":{"collNumb":"Ivan Kreft","collDate":null,"collCode":null,"collName":null,"collSite":"Kranj","collInstAddress":null,"collMissId":null,"collSrc":50},"geo":{"latitude":46.2333,"longitu...Posting
```json
{"acceName":["ajda","","èrna"],"coll":{"collNumb":"Ivan Kreft","collDate":null,"collCode":null,"collName":null,"collSite":"Kranj","collInstAddress":null,"collMissId":null,"collSrc":50},"geo":{"latitude":46.2333,"longitude":14.3667,"elevation":357.0,"uncertainty":null,"datum":null,"method":null},"sampStat":500,"ancest":null,"donorCode":null,"donorNumb":"Dr. T. Tajnšek","donorName":null,"otherNumb":["RUS001:106","unknown:106"],"duplSite":null,"storage":null,"acceUrl":null,"remarks":null,"instituteCode":"SVN018","accessionNumber":"SRGB 2080","acquisitionDate":null,"breederCode":null,"origCty":"SVN","taxonomy":{"genus":"Fagopyrum","species":"esculentum","spAuthor":null,"subtaxa":null,"subtAuthor":null}}
```
fails with
```
16:27:59,579 qtp1156060786-409 WARN o.g.s.s.c.r.AccessionController:251 - Upsert failed due to: could not execute statement; SQL [n/a]; constraint [null]; nested exception is org.hibernate.exception.ConstraintViolationException: could not execute statement data=...
2018-07-15T16:27:59.591979430Z sandbox_server.1.i0duijjbjwbj@genesys3 | org.springframework.dao.DataIntegrityViolationException: could not execute statement; SQL [n/a]; constraint [null]; nested exception is org.hibernate.exception.ConstraintViolationException: could not execute statement
```2.4Matija ObrezaMatija Obrezahttps://gitlab.croptrust.org/genesys-pgr/genesys-server/-/issues/278Bug: Create new list functionality2018-07-21T10:54:28+02:00Matija ObrezaBug: Create new list functionalityCreating new list fails with 500 server error. Steps to reproduce:
- Go to the https://sandbox.genesys-pgr.org/welcome
- Login as admin;
- Go to the "Browse" page;
- Add some accessions to the list;
- Go to the "My List" page;
- Go to t...Creating new list fails with 500 server error. Steps to reproduce:
- Go to the https://sandbox.genesys-pgr.org/welcome
- Login as admin;
- Go to the "Browse" page;
- Add some accessions to the list;
- Go to the "My List" page;
- Go to the "Accession List" tab;
- Fill the fields and click on the "CREATE NEW LIST" button.2.4Matija ObrezaMatija Obrezahttps://gitlab.croptrust.org/genesys-pgr/genesys-server/-/issues/279Bug: Latitude filter fails2018-07-20T22:33:07+02:00Matija ObrezaBug: Latitude filter fails- Go to the "Browse" page
- Open Latitude filter
- Input some value in the filter fields- Go to the "Browse" page
- Open Latitude filter
- Input some value in the filter fields2.4Matija ObrezaMatija Obreza