summaryrefslogtreecommitdiffstats
path: root/ogcp/views.py
Commit message (Collapse)AuthorAgeFilesLines
* views: add missing checks for offline ogServerv1.1.3-27Alejandro Sirgo Rica2024-07-251-5/+63
| | | | | check when the API REST responses are null and report that ogServer might be offline.
* views: restrict EFI part size to 500MiB or higherAlejandro Sirgo Rica2024-07-251-0/+5
| | | | | | | Modern Windows systems require higher EFI partition sizes than most other OS. Validate partition & format form to ensure the EFI partition has as size of 500MiB or higher.
* ogcp: add image restrict functionalityAlejandro Sirgo Rica2024-07-251-24/+106
| | | | | | | | | | | Add center scope restriction using /image/restrict. Add view in Images to update scope permissions. Disable images in Commands for image update and restore if the client belongs to a disabled center. Consolidate template code to render scope selection checkboxes.
* views: add repository_id to image/update payloadv1.1.3-26Alejandro Sirgo Rica2024-07-191-1/+1
| | | | | Give ogServer context about the proper repository to process the correct image.
* views: exclude clients with no partition in image/restore1.1.3-25Alejandro Sirgo Rica2024-07-171-0/+11
| | | | | | Clients cannot have an image restore when no partition configuration is available. Shown an error listing all the clients with no partitions.
* ogcp: show oglive client groups by ipAlejandro Sirgo Rica2024-07-171-3/+2
| | | | | Use the same visualization as the other parts of the web in the table that groups clients by ogLive.
* views: list default oglive in Set ogLive formAlejandro Sirgo Rica2024-07-171-10/+11
| | | | | | | Show default oglive as "ogLive (live name)" as the last option int the Set ogLive form. The previous implementation defined the default oglive as the most used when the default one is defined by /oglive/list.
* ogcp: show cache contents in client detailsAlejandro Sirgo Rica2024-07-161-28/+53
| | | | | | Show cache contents in client details for a more complete view of the client's state. Move the cache inspector code to its own template for reusability.
* ogcp: enable modification of client ipAlejandro Sirgo Rica2024-07-151-1/+2
| | | | | | Add 'id' value to the /client/update payload. Enable modification for the ip input field in the client update form.
* ogcp: show checksum in image infoAlejandro Sirgo Rica2024-07-121-0/+6
| | | | | | | Improve potential image troubleshooting within ogCP. Add checksum to the image info view. Show "Unknown" when no checksum is available.
* ogcp: add checksum to images in Manage cacheAlejandro Sirgo Rica2024-07-121-0/+1
| | | | | Ease detection of potential problems with images in cache. Show checksum under each image in the form.
* views: fix user scope filteringAlejandro Sirgo Rica2024-07-091-1/+2
| | | | | | | Create a copy of the array with scope references before the iteration and modification of the scopes dictionary. Prevent skipping values after deleting an element during the scope iteration.
* views: skip cache space checks if already contains the imageAlejandro Sirgo Rica2024-07-091-10/+23
| | | | | | | Skip checks of image_fits_in_cache() if the image data contains not 'size' or 'checksum' information. Skip checks for the clients with the image already in cache.
* ogcp: select images of selected partition in image/updateAlejandro Sirgo Rica2024-07-091-2/+14
| | | | | | | | | | | Select the image field value containing the restored image of the partition selected by the user. Create a dictionary where the key is the value= of the partition field and the value is the id of the image restored in the partition. Add each dictionary entry only only if the corresponding image exists in the repository. Pass the dictionary to the HTML template and convert it to JS.
* views: add auxiliar function is_valid_ip()Alejandro Sirgo Rica2024-07-091-9/+10
| | | | | Move ip validation logic to a separate function to make the code more expressive and reusable.
* ogcp: make client name field mandatory in client formAlejandro Sirgo Rica2024-07-091-0/+6
| | | | | | Add InputRequired validator to the name field of the ClientDetailsForm. Validate name value in the POST function.
* ogcp: use csv as new format for import clientsAlejandro Sirgo Rica2024-07-091-24/+47
| | | | | | | | | | | Replace dhcpd format with the simpler csv format to configure the list of clients to import in /action/clients/import. Replace regex parsing with a simpler manual parsing. Improve error report. Example configuration: client_name1,94:c6:91:a6:25:1a,10.141.10.100 client_name2,94:c6:91:a6:25:1b,10.141.10.101
* views: check invalid values in prettify_mac()Alejandro Sirgo Rica2024-07-041-3/+7
| | | | Return without modification if the MAC is not valid.
* views: validate MAC address after POSTAlejandro Sirgo Rica2024-07-031-2/+21
| | | | | | Check if the provided MAC address is valid in every form where the use has to provide one. Show an error message when the format is incorrect.
* views: show MAC as lowercase with colon separatorsAlejandro Sirgo Rica2024-07-031-4/+7
| | | | | | | Define a function to format the MAC string for every view in the web. Example of formatted MAC address: aa:bb:cc:dd:ee:aa Show MAC address in client pills in that same format.
* views: normalize every MAC address during POST processingAlejandro Sirgo Rica2024-07-031-3/+6
| | | | | | | | | | Use aabbccddeeaa as MAC format in every payload. List of accepted MAC formats: aabbccddeeaa aa:bb:cc:dd:ee:aa aa-bb-cc-dd-ee-aa aa.bb.cc.dd.ee.aa
* views: remove debug messages with payload infoAlejandro Sirgo Rica2024-07-011-2/+2
| | | | Remove print statements in views.py to reduce logging noise.
* views: add check for failed /center/info get requestAlejandro Sirgo Rica2024-06-281-0/+6
| | | | Check if the request response is null and report it to the user.
* views: notify user edit and user creationAlejandro Sirgo Rica2024-06-281-4/+8
| | | | Show a flash message when an user is created or edited successfully.
* views: fix English grammatical error in error messageAlejandro Sirgo Rica2024-06-281-5/+5
| | | | Replace "do not exists" with "does not exist" in error messages.
* ogcp: add user permission mechanismAlejandro Sirgo Rica2024-06-271-3/+69
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add a new user permission system to control the allowed operations accessible from each account. Add a permission matrix editable through the user/add and user/edit views. The permission matrix has client, center, room, folder, image and repository as permission targets and add, update and delete as permission types. Restrict each view based on the user permissions, hide all actions from not autheticated users. permissions defined in the class UserForm. Serialize each user permissions into ogcp.json as: { ... "USERS" [ { "USER": "admin" ... "PERMISSIONS": { "CLIENT": { "ADD": true, "UPDATE": true, "DELETE": true, }, ... <- same structure for "CENTER", "ROOM", "FOLDER", "IMAGE" and "REPOSITORY" } }, ... ], ... } Grant all the permissions to old user configuration to not disrupt their workflow. The administrator will need to assign the permissions for each user. Ignore scope and permission restrictions for admin users. Save permissions and scopes even if the user is admin to account for the case of a temporal admin promotion without losing the previous configuration. Use template inheritance for add_user.html and edit_user.html to prevent big code duplication with the new HTML code to render the permission matrix. Make user administration an admin only feature. Define methods get_permission and target_is_disabled to improve readability in template conditionals that disable features based on user permissions.
* ogcp: add support to view script outputAlejandro Sirgo Rica2024-06-251-0/+42
| | | | | | | | | | Add view at /action/script/output to visualize the result of /shell/run for multiple clients. Use shell/output to request the execution data of the selected clients. Each client element has execution timestamip (UTC), client ip, cmd, return code and stdout of the executed command.
* ogcp: add support to run scripts in clientsAlejandro Sirgo Rica2024-06-251-1/+70
| | | | | | | | Add view at /action/script/run to visualize the available scripts and run a single script file in the selected clients. Use shell/list to request the script list and shell/run API call to request the execution.
* views: remove unsupported partition types from image operationsAlejandro Sirgo Rica2024-06-251-12/+31
| | | | | | | | | | | Prevent unexpected behaviour in image operations caused by user error. Remove partitions of type 'EMPTY', 'LINUX-SWAP', 'CACHE' and 'EFI' from the image/create, image/restore and image/update forms. Remove check for the existence of these partitions in action_image_restore as they are no longer available in the form.
* views: prevent user removal after password mismatch in user/editAlejandro Sirgo Rica2024-06-191-2/+6
| | | | | | | | | | | If password and confirm password fields mismatch in user/edit, then the user is deleted. The deletion of the user happens before the password validation and the new user configuration is only saved if the validation passes. Add code to properly handle the user deletion after the validation.
* views: make password optional in user/editAlejandro Sirgo Rica2024-06-191-12/+20
| | | | | | | | | Add the option to leave the password fields empty in the form. When the passwords are not set the user keeps the old password configuration. Define a EditUserForm based on UserForm in forms/auth.py to remove the InputRequired validator in the password fields. Update the html template to make the password fields optional.
* views: improve cache check messages in image/restoreAlejandro Sirgo Rica2024-06-191-2/+2
| | | | | Improve the wording of the error message reporting the clients without enough cache to hold the image to be restored.
* views: check if the image fits in cache before image/restoreAlejandro Sirgo Rica2024-06-181-0/+33
| | | | | | | | | Check if the image to be restored fits in the client's cache to provide a better feedback for a failed restore operation. Report the needed free space in clients where it does not fit. Only check if the reported image size is not 0, older images may not define the "size" attribute. Ignore the check if the restore type is UNICAST-DIRECT.
* views: ignore image datasize check if datasize is zeroAlejandro Sirgo Rica2024-06-181-1/+1
| | | | | | Check the restored image fits in the target partition only if the datasize value is not zero. Proceed with the check before the image/restore request otherwise.
* ogcp: add room details view to scopes managementAlejandro Sirgo Rica2024-06-171-0/+32
| | | | | | Add a readonly view for the room data. Mark all the form fields as readonly and set the hidden attribute to the submit field.
* ogcp: add center details view to scopes managementAlejandro Sirgo Rica2024-06-171-0/+36
| | | | | | Add a readonly view for the center data. Mark all the form fields as readonly and set the hidden attribute to the submit field.
* views: fix image restore cache checks1.1.3-22Alejandro Sirgo Rica2024-06-171-2/+3
| | | | | | | Fix the scope of the has_cache variable to reset the value for each client. Check the partition type based on the PART_TYPE_CODES string version instead of the numerical value of the partition type.
* ogcp: add move client to scopes managementAlejandro Sirgo Rica2024-06-171-1/+62
| | | | | | | | | | Add front end for the client/move REST API. Enable the move of multiple clients selected from the sidebar of Scopes Management. Show the target of the move operation as a list of paths in a dropdown widget in the form. Each path will be structured as: Server/Center/Room The path will also contain folders if they are present.
* ogcp: fix restricted user mode1.1.3-21Alejandro Sirgo Rica2024-06-141-18/+13
| | | | | | | | | | | | | | Match user enabled scopes as numerical id instead of the scope name. Rename get_available_scopes to get_center_choices and add only center data. This function returns the list of values used to validate the data returned by the form (form.scopes.choices). Fix scope filtering to only allow the scopes stored in the user configuration. The filtering removes the scopes of type 'center' from the scopes dictionary when the center id is not present in the list of available scopes for the logged user.
* views: fix center/update validation with no selectionAlejandro Sirgo Rica2024-06-141-3/+3
| | | | | | | Check no center selection before missing server data. Lack of checkbox selection will not carry server data as server information is defined based on the components selected. Report no center selection instead of lack server data in that case.
* views: fix folder/update validationAlejandro Sirgo Rica2024-06-141-2/+2
| | | | | Validate request parameters before accessing the dictionary values. Prevent web backtrace.
* views: remove duplicated validation errorsAlejandro Sirgo Rica2024-06-131-2/+0
| | | | | | Remove flash() error messages after validate_elements(). validate_elements() defines error messages for min and max element selection from sidebar.
* views: allow scope server data in restricted user modeAlejandro Sirgo Rica2024-06-131-1/+1
| | | | | | | | | | Add the server scope during scope filtering for user accounts with restricted scope access. The HTML server scope component in the sidebar holds important information as a hidden component. The removal of the server scope also removes the respective HTML component in the web. Missing server scopes result in a backtrace while trying to get data such as server IP.
* views: skip non-200 OK requests to serversOpenGnSys Support Team2024-06-121-0/+3
| | | | | Update multi_request() to skip non-200 OK requests to servers, otherwise traceback is displayed while trying to access the json body.
* views: check cache presence in tiptorrent and unicast restoreAlejandro Sirgo Rica2024-06-071-2/+10
| | | | | | Ensure a cache partition is present before trying to do a UNICAST or TIPTORRENT image restore. Inform the user about the lack of cache in such case.
* views: enable client partitioning without cacheAlejandro Sirgo Rica2024-06-071-4/+0
| | | | | Remove the check that disables creating a client without cache. This is the initial step towards unicast restoration support.
* views: exclude 00unknown and 10 from boot mode listAlejandro Sirgo Rica2024-06-071-1/+3
| | | | | Ignore '00unknown', '10' from the list of boot modes in the form shown in action/mode.
* views: use conventional for loop in boot mode selectionAlejandro Sirgo Rica2024-06-071-1/+5
| | | | | Use a conventional for loop instead of a oneliner. Improve code readability.
* views: show human readable boot modesAlejandro Sirgo Rica2024-06-071-2/+12
| | | | | | | Add better visualization to the boot modes shown in /action/mode. Use a dictinary to implement hardcoded human readble strings of the form choices. A better method will be implemented in the future.
* views: fix invalid url redirection in client/server addAlejandro Sirgo Rica2024-06-071-2/+2
| | | | | Remove 2 instances of redirect(url_for('servers')), this path does not exist anymore and causes the web to show a backtrace.