beat issueshttps://gitlab.idiap.ch/groups/beat/-/issues2020-09-28T13:37:32Zhttps://gitlab.idiap.ch/beat/beat.web/-/issues/560E-mail confirmations not containing the URL prefix and User links on the website2020-09-28T13:37:32ZFlavio TARSETTIE-mail confirmations not containing the URL prefix and User links on the websiteIssues with e-mail confirmations need to be checked as they don't contain the URL prefix and User links on the website.
On a local instance of beat.web this works, but it fails on the production platform. This seems to be a Django rel...Issues with e-mail confirmations need to be checked as they don't contain the URL prefix and User links on the website.
On a local instance of beat.web this works, but it fails on the production platform. This seems to be a Django related issue as a first guess.
A similar problem also seem to happen with "experiments".
Might be related to #558 and #561 Django 3 migrationFlavio TARSETTIFlavio TARSETTIhttps://gitlab.idiap.ch/beat/beat.web/-/issues/559Python 2 Code removal2020-09-28T13:36:53ZSamuel GAISTPython 2 Code removalCurrently beat/beat.web> code is still compatible with Python 2.
The infrastructure has been running Python 3 for several years and moving to Django 3 implies that Python 2 is now out of question.
This issue tracks the work of removing...Currently beat/beat.web> code is still compatible with Python 2.
The infrastructure has been running Python 3 for several years and moving to Django 3 implies that Python 2 is now out of question.
This issue tracks the work of removing all the compatibility code that has not been used for years and that will not be used anymore.Django 3 migrationSamuel GAISTSamuel GAISThttps://gitlab.idiap.ch/beat/beat.web/-/issues/558Fix usage of URL_PREFIX2020-09-28T13:38:15ZSamuel GAISTFix usage of URL_PREFIXCurrently the URL_PREFIX settings variable is used like a fully qualified URL in many parts of the website which is wrong. As the name suggests, this prefix shall essentially "move" all the URLs of the site behind it.
If a fully qualifi...Currently the URL_PREFIX settings variable is used like a fully qualified URL in many parts of the website which is wrong. As the name suggests, this prefix shall essentially "move" all the URLs of the site behind it.
If a fully qualified address is needed it should be generated either using the request object associated with the method call or using Django's Sites framework.
This issue tracks the cleanup of the following:
- [x] Email generation
- [x] Template rendering
- [x] Other usagesDjango 3 migrationFlavio TARSETTIFlavio TARSETTIhttps://gitlab.idiap.ch/beat/beat.editor/-/issues/270Provide a new button for analyzers2020-06-19T14:52:23ZAmir MOHAMMADIProvide a new button for analyzersEven though analyzers are algorithms, creating one using the new algorithm button leads to a broken analyzer by default until you add some `results`.
It's easier (for users) to just provide a new analyzer button that already has some re...Even though analyzers are algorithms, creating one using the new algorithm button leads to a broken analyzer by default until you add some `results`.
It's easier (for users) to just provide a new analyzer button that already has some results.[v2] 1 - Edition/Visualization for small editorsSamuel GAISTSamuel GAISThttps://gitlab.idiap.ch/beat/beat.backend.python/-/issues/34The database View class could be simplified2020-06-29T12:45:33ZAmir MOHAMMADIThe database View class could be simplifiedI don't know exactly the internals of beat but I wonder why the database view class needs to be this complicated?
There may be some technical reasons behind this but I don't think this should be exposed to the users.
These Views are just...I don't know exactly the internals of beat but I wonder why the database view class needs to be this complicated?
There may be some technical reasons behind this but I don't think this should be exposed to the users.
These Views are just a container as far as I can see. So, I wonder if having something like:
```python
class Train:
"""The training set"""
def __init__(self, parameters=None, root_folder=None):
self.parameters = parameters
self.root_folder = root_folder
# initialize the db interface here
# e.g. load a csv file
import pandas as pd
self.df = pd.read_csv(...)
def __len__(self):
# return the total number of items in here
return len(self.df)
def __getitem__(self, index):
# return the nth row in here
row = self.df.iloc[index]
# load the data here if necessary
row.image = load(row.filename)
return row
```
would not satisfy the requirements.Interactivity and Intuitive APIhttps://gitlab.idiap.ch/beat/beat.editor/-/issues/248QMenu for push button lifetime issue2019-10-02T12:00:49ZSamuel GAISTQMenu for push button lifetime issueSummary
While doing tests to check whether PySide2 could be used, an issue has been found with the handling of QMenu when used in a helper function to generate a QPushButton, the related QMenu and QActions.
On return of the method, th...Summary
While doing tests to check whether PySide2 could be used, an issue has been found with the handling of QMenu when used in a helper function to generate a QPushButton, the related QMenu and QActions.
On return of the method, the QMenu object is destroyed with PySide2 while not with PyQt5.
This is likely related to the fact that QPushButton::setMenu does not take ownership of the QMenu. So it likely is garbage collected at the end of the method.
Steps to reproduce
```
import sys
from PySide2.QtWidgets import QApplication
from PySide2.QtWidgets import QAction
from PySide2.QtWidgets import QMenu
from PySide2.QtWidgets import QPushButton
def build_button_with_menu():
button = QPushButton("The button")
menu = QMenu("The menu")
button.setMenu(menu)
action = menu.addAction("The action")
return button, action
app = QApplication(sys.argv)
button, action = build_button_with_menu()
action.triggered.connect(app.quit)
sys.exit(app.exec_())
```
What is the current bug behavior?
This will trigger a property error saying that triggered has no connect property.
Checking the action itself will show the correct type but the signal object related methods will be missing.
What is the expected correct behavior?
No error, the connection gets created, the button is shown and when clicking on the action, the application should stop.
Possible fixes
The fix is to give the QMenu a parent, in this case, the button itself, so its lifetime doesn't end with the end of the method.[v2] 1 - Edition/Visualization for small editorsSamuel GAISTSamuel GAISThttps://gitlab.idiap.ch/beat/beat.editor/-/issues/246Correct base types management in AssetModel2020-08-10T08:39:27ZSamuel GAISTCorrect base types management in AssetModelSummary
The DataFormat base types provided through AssetModel shall not be used everywhere a DataFormat is used.
An analysis must be done to determine where exactly it make sense to have them and also if they must be made availble toge...Summary
The DataFormat base types provided through AssetModel shall not be used everywhere a DataFormat is used.
An analysis must be done to determine where exactly it make sense to have them and also if they must be made availble together with the other Dataformats provided by the prefix.
AssetModel shall be purged from these types and a dedicated subclass created if it makes sense to provide them all in one or more places in the code.
Depending also on whether these base types should be the only type used, another model might be created or [QStringListModel](https://doc.qt.io/qt-5/qstringlistmodel.html) used directly in these cases.[v2] 1 - Edition/Visualization for small editorsFlavio TARSETTIFlavio TARSETTIhttps://gitlab.idiap.ch/beat/beat.editor/-/issues/245Improve error handling2019-12-11T09:57:48ZSamuel GAISTImprove error handlingSummary
Currently, there's lot of code triggering a RuntimeError which in turn will make beat.editor stop.
Most of these situations should be gracefully handled. If possible, a fix should be proposed to the user so he can continue work...Summary
Currently, there's lot of code triggering a RuntimeError which in turn will make beat.editor stop.
Most of these situations should be gracefully handled. If possible, a fix should be proposed to the user so he can continue working.
Steps to reproduce
1) Create a new Plotter
2) Load the plotter
This will make beat.editor crash as the new Plotter will be based on the prototype that contains an invalid entry.
This situation is already reported in #244
What is the current bug behavior?
beat.editor will end there
What is the expected correct behavior?
beat.editor should not stop
Possible fixes
The user should get a message about what is going wrong. If possible a fix should be proposed and applied if accepted.
In any case, the editor should continue working.[v2] 1 - Edition/Visualization for small editorsFlavio TARSETTIFlavio TARSETTIhttps://gitlab.idiap.ch/beat/beat.editor/-/issues/244Improve plotter new creation handling2019-10-04T15:12:49ZSamuel GAISTImprove plotter new creation handlingSummary
Currently when creating a new Plotter, the prototype contains "plot/unknown/1".
This has problematic implications:
- The editor will fail to load it
- Test will fail because the editor can't load that dataformat
Steps to repr...Summary
Currently when creating a new Plotter, the prototype contains "plot/unknown/1".
This has problematic implications:
- The editor will fail to load it
- Test will fail because the editor can't load that dataformat
Steps to reproduce
1) Click on new
2) Select Plotter
3) Try to edit the plotter created
What is the current bug behavior?
An error is raised and it make the application fail
What is the expected correct behavior?
Either:
- Show a dialog asking to select a dataformat to use.
- Select a suitable dataformat from the prefix. Maybe a simple default like for the algorithm prototype.
Possible fixes
One possibility could be to have a method called after the dialog has been closed that can be re-implemented in sub-classes to do whatever is needed for the newly created object.
Another would be to move the dialog logic in its own method so re-implementing _createNewAsset would be easier.
Note that this affects beat/beat.editor!101[v2] 1 - Edition/Visualization for small editorsFlavio TARSETTIFlavio TARSETTIhttps://gitlab.idiap.ch/beat/beat.editor/-/issues/240ParameterWidget needs better size handling2019-07-02T08:56:34ZSamuel GAISTParameterWidget needs better size handlingSummary
ParameterWidget has way too much white space when showing "small" editors
Steps to reproduce
Open a plotter and look at the parameters
What is the current bug behavior?
Depending on the type of parameter and it's setup, th...Summary
ParameterWidget has way too much white space when showing "small" editors
Steps to reproduce
Open a plotter and look at the parameters
What is the current bug behavior?
Depending on the type of parameter and it's setup, there's too much vertical
space.
What is the expected correct behavior?
We should have the editor take just the height needed.
Possible fixes
The widget should be resized when the current editor changes[v2] 1 - Edition/Visualization for small editorsSamuel GAISTSamuel GAISThttps://gitlab.idiap.ch/beat/beat.editor/-/issues/239Library editor forces a dump of an optional key "uses:{}" for the available l...2020-05-28T10:57:29ZFlavio TARSETTILibrary editor forces a dump of an optional key "uses:{}" for the available libraries when the field is empty#### Summary
The library editor requires fixing. The key "uses" is set mandatory during the dump when it should actually be an optional field
#### Steps to reproduce
The bug is identified here:
https://gitlab.idiap.ch/beat/beat.edito...#### Summary
The library editor requires fixing. The key "uses" is set mandatory during the dump when it should actually be an optional field
#### Steps to reproduce
The bug is identified here:
https://gitlab.idiap.ch/beat/beat.editor/blob/v2/beat/editor/test/test_libraryeditor.py#L40
and explained in detail: https://gitlab.idiap.ch/beat/beat.core/merge_requests/79
#### What is the current bug behavior?
The current behavior forces the library to have a dump "uses" key
#### What is the expected correct behavior?
The schema of the library is explicit about it being an optional field. So if empty we should not get a "uses:{}" at the dump
The test needs to be fixed accordingly
#### Relevant code:
https://gitlab.idiap.ch/beat/beat.editor/blob/v2/beat/editor/test/test_libraryeditor.py#L40[v2] 1 - Edition/Visualization for small editorsSamuel GAISTSamuel GAISThttps://gitlab.idiap.ch/beat/beat.editor/-/issues/221Open asset related files2019-10-04T15:12:53ZSamuel GAISTOpen asset related filesFiles related to the asset are currently not shown nor editable through beat/beat.editor>.
Add the possibility to edit these using the user's corresponding default editor.Files related to the asset are currently not shown nor editable through beat/beat.editor>.
Add the possibility to edit these using the user's corresponding default editor.[v2] 1 - Edition/Visualization for small editorsSamuel GAISTSamuel GAISThttps://gitlab.idiap.ch/beat/beat.editor/-/issues/219AssetModel latest only feature is incomplete2019-06-03T09:36:59ZSamuel GAISTAssetModel latest only feature is incompleteSummary
The "latest only" property implement of AssetModel is currently incomplete and does not work for all asset types.
Steps to reproduce
```
model = AssetModel()
model.prefix_path = "path/to/prefix"
model.asset_type = "AssetType....Summary
The "latest only" property implement of AssetModel is currently incomplete and does not work for all asset types.
Steps to reproduce
```
model = AssetModel()
model.prefix_path = "path/to/prefix"
model.asset_type = "AssetType.DATAFORMAT"
asset_list = model.stringList()
model.setLatestOnlyEnabled(False)
full_asset_list = model.stringList()
assert asset_list != full_asset_list
assert len(asset_list) < len(full_asset_list)
```
What is the current bug behavior?
The same list of assets is returned for types that are neither database nor protocol templates.
What is the expected correct behavior?
The two lists should be different if the prefix contains several versions of these assets
Possible fixes
Implement the same "un-filtering" for all assets where it make sense.
The fix will require beat/beat.core!76[v2] 1 - Edition/Visualization for small editorsSamuel GAISTSamuel GAISThttps://gitlab.idiap.ch/beat/beat.editor/-/issues/218Docker BEAT environment support2019-05-29T12:25:07ZSamuel GAISTDocker BEAT environment supportIn order to setup an experiment, one need the list of localy available environments.
To avoid the detection being done at each start, a cache file will be created when needed.In order to setup an experiment, one need the list of localy available environments.
To avoid the detection being done at each start, a cache file will be created when needed.[v2] 3 - Experiment editorSamuel GAISTSamuel GAISThttps://gitlab.idiap.ch/beat/beat.editor/-/issues/217Update editor needing complex type support2020-02-12T13:15:12ZSamuel GAISTUpdate editor needing complex type supportThe latest version of beat/beat.core> following beat/beat.core!65 doesn't contain complex types anymore as they are specific to the Dataformat asset.
The DataformatEditor must be updated to handle that change.The latest version of beat/beat.core> following beat/beat.core!65 doesn't contain complex types anymore as they are specific to the Dataformat asset.
The DataformatEditor must be updated to handle that change.[v2] 1 - Edition/Visualization for small editorshttps://gitlab.idiap.ch/beat/beat.editor/-/issues/216Update basetype getter2020-02-12T13:14:31ZSamuel GAISTUpdate basetype getterbeat/beat.core!65 modifies heavily the schema to be more accurate.
The basetype definition changes in that regards and the current setter doesn't support it yet.beat/beat.core!65 modifies heavily the schema to be more accurate.
The basetype definition changes in that regards and the current setter doesn't support it yet.[v2] 1 - Edition/Visualization for small editorsSamuel GAISTSamuel GAISThttps://gitlab.idiap.ch/beat/beat.editor/-/issues/215Parameter editor for algorithms and plotters editors2019-10-04T15:12:53ZFlavio TARSETTIParameter editor for algorithms and plotters editorsThis issue tracks the progress on the parameter widget reusable component used in algorithms and plotters editorsThis issue tracks the progress on the parameter widget reusable component used in algorithms and plotters editors[v2] 1 - Edition/Visualization for small editorsFlavio TARSETTIFlavio TARSETTIhttps://gitlab.idiap.ch/beat/beat.editor/-/issues/214Documentation contribute.rst for local dependencies and running unit tests ag...2019-10-04T15:12:53ZFlavio TARSETTIDocumentation contribute.rst for local dependencies and running unit tests against themSummary
The documentation does not provide the steps to build local dependencies and run the tests against themSummary
The documentation does not provide the steps to build local dependencies and run the tests against them[v2] 1 - Edition/Visualization for small editorsFlavio TARSETTIFlavio TARSETTIhttps://gitlab.idiap.ch/beat/beat.editor/-/issues/213Plotter Parameter issue on creation2019-06-25T09:28:05ZFlavio TARSETTIPlotter Parameter issue on creation**Summary**
The plotterparameter editor on beat.editor is not consistent with the behavior we have on the web platform. It doesn't save the changes but all the fields from the plotter it targets.
**Steps to reproduce**
When creating a...**Summary**
The plotterparameter editor on beat.editor is not consistent with the behavior we have on the web platform. It doesn't save the changes but all the fields from the plotter it targets.
**Steps to reproduce**
When creating a new plotter parameter, **ONLY** the updated parameters from the plotter should be saved in the `json`, **not everything**.
Each time an entry is modified, it's added to the json data of the plotterparameter. Unchanged values shouldn't be updated and saved if they were never touched.
**What is the current bug behavior?**
All parameters from the plotter get saved to the newly created plotterparameter.
**What is the expected correct behavior?**
They should be shown visually without being saved in the json data file
**Relevant logs and/or screenshots**
Please have a look on the beat web platform for a better understanding of the problem
`This is what is shown on screen after creation and during edition:`
![plotterparameter_test_shown_1](/uploads/170dbbf47a4825da12d183dbb611d580/plotterparameter_test_shown_1.png)
![plotterparameter_test_shown_2](/uploads/c22520078288c6e2fd89b386d4e5a9c3/plotterparameter_test_shown_2.png)
`This is what is saved after update on one field:`
![plotterparameter_test](/uploads/634b95fc785b1cf9655c0045d58f1f26/plotterparameter_test.png)
`This is what we have after creation or small update on one field on beat.editor:`
![plotterparameter_beat_editor](/uploads/215b46102267f5a9278504f71de9feab/plotterparameter_beat_editor.png)
**Possible fixes**
Having a signal that checks which parameter field has been updated[v1] Ongoing patching until [v2] is readyJaden DIEFENBAUGHJaden DIEFENBAUGHhttps://gitlab.idiap.ch/beat/beat.editor/-/issues/211Larger uint32 types spin boxes2019-04-25T10:25:21ZFlavio TARSETTILarger uint32 types spin boxesQt doesn't provide spin boxes for types like uint32.
The beat.editor needs them for example for algorithm parameters.
This issue is to track the advancement on this.Qt doesn't provide spin boxes for types like uint32.
The beat.editor needs them for example for algorithm parameters.
This issue is to track the advancement on this.[v2] 1 - Edition/Visualization for small editorsFlavio TARSETTIFlavio TARSETTI