Merge pull request #373 from akuker/rdmark_inline_prop

Display image properties inline in the image list
This commit is contained in:
Eric Helgeson 2021-10-24 11:59:55 -05:00 committed by GitHub
commit 7772b92503
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 33 additions and 48 deletions

View File

@ -67,9 +67,10 @@ def list_images():
files = [] files = []
for f in result.image_files_info.image_files: for f in result.image_files_info.image_files:
# Add flag for whether an image file has an associated *.properties file # Add properties meta data for the image, if applicable
if f.name in prop_files: if f.name in prop_files:
prop = True process = read_drive_properties(f"{cfg_dir}/{f.name}.{PROPERTIES_SUFFIX}")
prop = process["conf"]
else: else:
prop = False prop = False
size_mb = "{:,.1f}".format(f.size / 1024 / 1024) size_mb = "{:,.1f}".format(f.size / 1024 / 1024)
@ -309,10 +310,9 @@ def write_drive_properties(file_name, conf):
def read_drive_properties(path_name): def read_drive_properties(path_name):
""" """
Reads drive properties to any dir. Reads drive properties from json formatted file.
Either ones deployed to the images dir, or the canonical database. Takes (str) path_name as argument.
Takes file path and bas (str) as argument Returns dict with boolean status, str msg, dict conf
Returns dict with boolean status and str msg
""" """
from json import load from json import load
try: try:

View File

@ -48,7 +48,7 @@ td.inactive {
background-color:tan; background-color:tan;
} }
summary { summary.heading {
color: black; color: black;
font-size: large; font-size: large;
font-weight: bold; font-weight: bold;

View File

@ -2,7 +2,7 @@
{% block content %} {% block content %}
<details> <details>
<summary>Current RaSCSI Configuration</summary> <summary class="heading">Current RaSCSI Configuration</summary>
<ul> <ul>
<li>Displays the currently attached devices for each available SCSI ID.</li> <li>Displays the currently attached devices for each available SCSI ID.</li>
<li>Save and load device configurations into <tt>{{cfg_dir}}</tt></li> <li>Save and load device configurations into <tt>{{cfg_dir}}</tt></li>
@ -105,7 +105,7 @@
<hr/> <hr/>
<details> <details>
<summary>Image File Management</summary> <summary class="heading">Image File Management</summary>
<ul> <ul>
<li>Manage image files in the active RaSCSI image directory: <tt>{{base_dir}}</tt></li> <li>Manage image files in the active RaSCSI image directory: <tt>{{base_dir}}</tt></li>
<li>Select a valid SCSI ID and <a href="https://en.wikipedia.org/wiki/Logical_unit_number">LUN</a> to attach to. Unless you know what you're doing, always use LUN 0.</li> <li>Select a valid SCSI ID and <a href="https://en.wikipedia.org/wiki/Logical_unit_number">LUN</a> to attach to. Unless you know what you're doing, always use LUN 0.</li>
@ -123,7 +123,20 @@
</tr> </tr>
{% for file in files %} {% for file in files %}
<tr> <tr>
{% if file["prop"] %}
<td>
<details>
<summary>{{file["name"]}}</summary>
<ul>
{% for key in file["prop"] %}
<li>{{key}}: {{file['prop'][key]}}</li>
{% endfor %}
</ul>
</details>
</td>
{% else %}
<td>{{file["name"]}}</td> <td>{{file["name"]}}</td>
{% endif %}
<td style="text-align:center"> <td style="text-align:center">
<form action="/files/download" method="post"> <form action="/files/download" method="post">
<input type="hidden" name="image" value="{{file["name"]}}"> <input type="hidden" name="image" value="{{file["name"]}}">
@ -172,13 +185,6 @@
<input type="hidden" name="image" value="{{file["name"]}}"> <input type="hidden" name="image" value="{{file["name"]}}">
<input type="submit" value="Delete" /> <input type="submit" value="Delete" />
</form> </form>
{% if file["prop"] %}
<form action="/files/prop" method="post">
<input type="hidden" name="image" value="{{file["name"]}}">
<input type="submit" value="Properties">
</form>
{% endif %}
{% endif %}
{% endif %} {% endif %}
</td> </td>
</tr> </tr>
@ -190,7 +196,7 @@
<hr/> <hr/>
<details> <details>
<summary>Attach Ethernet Adapter</summary> <summary class="heading">Attach Ethernet Adapter</summary>
<ul> <ul>
<li>Emulates a SCSI DaynaPORT Ethernet Adapter. <a href="https://github.com/akuker/RASCSI/wiki/Dayna-Port-SCSI-Link#-macintosh-setup-instructions">Host drivers and configuration required</a>.</li> <li>Emulates a SCSI DaynaPORT Ethernet Adapter. <a href="https://github.com/akuker/RASCSI/wiki/Dayna-Port-SCSI-Link#-macintosh-setup-instructions">Host drivers and configuration required</a>.</li>
<li>If you have a DHCP setup, choose only the interface, and ignore the Static IP fields when attaching.</li> <li>If you have a DHCP setup, choose only the interface, and ignore the Static IP fields when attaching.</li>
@ -228,7 +234,7 @@
<hr/> <hr/>
<details> <details>
<summary>Upload File</summary> <summary class="heading">Upload File</summary>
<ul> <ul>
<li>Uploads file to <tt>{{base_dir}}</tt>. The largest file size accepted is {{max_file_size}} MB.</li> <li>Uploads file to <tt>{{base_dir}}</tt>. The largest file size accepted is {{max_file_size}} MB.</li>
<li>For unrecognized file types, try renaming hard drive images to '.hds' and CD-ROM images to '.iso' before uploading.</li> <li>For unrecognized file types, try renaming hard drive images to '.hds' and CD-ROM images to '.iso' before uploading.</li>
@ -259,7 +265,7 @@
<hr/> <hr/>
<details> <details>
<summary>Download File to Images</summary> <summary class="heading">Download File to Images</summary>
<ul> <ul>
<li>Given a URL, download that file to the <tt>{{base_dir}}</tt> directory.</li> <li>Given a URL, download that file to the <tt>{{base_dir}}</tt> directory.</li>
</ul> </ul>
@ -280,7 +286,7 @@
<hr/> <hr/>
<details> <details>
<summary>Download File to AppleShare</summary> <summary class="heading">Download File to AppleShare</summary>
<ul> <ul>
<li>Given a URL, download that file to the <tt>{{afp_dir}}</tt> directory and share it over AFP.</li> <li>Given a URL, download that file to the <tt>{{afp_dir}}</tt> directory and share it over AFP.</li>
<li>Manage the files you download here through AppleShare on your vintage Mac.</li> <li>Manage the files you download here through AppleShare on your vintage Mac.</li>
@ -307,7 +313,7 @@
<hr/> <hr/>
<details> <details>
<summary>Download File from Web and Create HFS CD (Macintosh)</summary> <summary class="heading">Download File from Web and Create HFS CD (Macintosh)</summary>
<ul> <ul>
<li>Given a URL this will download a file, create a HFS iso, and mount it on the SCSI ID given.</li> <li>Given a URL this will download a file, create a HFS iso, and mount it on the SCSI ID given.</li>
<li>Requires a <a href="https://github.com/akuker/RASCSI/wiki/Drive-Setup#Mounting_CD_ISO_or_MO_images">compatible CD-ROM driver</a> installed on the target system.</li> <li>Requires a <a href="https://github.com/akuker/RASCSI/wiki/Drive-Setup#Mounting_CD_ISO_or_MO_images">compatible CD-ROM driver</a> installed on the target system.</li>
@ -335,7 +341,7 @@
<hr/> <hr/>
<details> <details>
<summary>Create Empty Disk Image File</summary> <summary class="heading">Create Empty Disk Image File</summary>
<ul> <ul>
<li>The Generic image type is recommended for most systems</li> <li>The Generic image type is recommended for most systems</li>
<li>APPLE GENUINE and NEC GENUINE image types will make RaSCSI masquerade as a particular drive type that are recognized by Mac and PC98 systems, respectively.</li> <li>APPLE GENUINE and NEC GENUINE image types will make RaSCSI masquerade as a particular drive type that are recognized by Mac and PC98 systems, respectively.</li>
@ -367,7 +373,7 @@
<hr/> <hr/>
<details> <details>
<summary>Create Named Drive</summary> <summary class="heading">Create Named Drive</summary>
<ul> <ul>
<li>Here you can create pairs of images and properties files from a list of real-life drives.</li> <li>Here you can create pairs of images and properties files from a list of real-life drives.</li>
<li>This will make RaSCSI use certain vendor strings and block sizes that may improve compatibility with certain systems</li> <li>This will make RaSCSI use certain vendor strings and block sizes that may improve compatibility with certain systems</li>
@ -379,7 +385,7 @@
<hr/> <hr/>
<details> <details>
<summary>Logging</summary> <summary class="heading">Logging</summary>
<ul> <ul>
<li>Get a certain number of lines of service logs with the given scope.</li> <li>Get a certain number of lines of service logs with the given scope.</li>
</ul> </ul>
@ -406,7 +412,7 @@
<hr/> <hr/>
<details> <details>
<summary>Server Log Level</summary> <summary class="heading">Server Log Level</summary>
<ul> <ul>
<li>Change the log level of the RaSCSI backend service.</li> <li>Change the log level of the RaSCSI backend service.</li>
<li>The dropdown will indicate the current log level.</li> <li>The dropdown will indicate the current log level.</li>
@ -432,7 +438,7 @@
<hr/> <hr/>
<details> <details>
<summary>Raspberry Pi Operations</summary> <summary class="heading">Raspberry Pi Operations</summary>
<ul> <ul>
<li>Issue reboot or shutdown commands to the Raspberr Pi.</li> <li>Issue reboot or shutdown commands to the Raspberr Pi.</li>
<li>You can also restart the RaSCSI backend service here.</li> <li>You can also restart the RaSCSI backend service here.</li>

View File

@ -646,27 +646,6 @@ def unzip():
return redirect(url_for("index")) return redirect(url_for("index"))
@app.route("/files/prop", methods=["POST"])
def show_properties():
file_name = request.form.get("image")
file_path = f"{cfg_dir}{file_name}.{PROPERTIES_SUFFIX}"
process = read_drive_properties(file_path)
prop = process["conf"]
if process["status"]:
flash("=== DRIVE PROPERTIES ===")
flash(f"File Name: {cfg_dir}{file_name}")
flash(f"Vendor: {prop['vendor']}")
flash(f"Product: {prop['product']}")
flash(f"Revision: {prop['revision']}")
flash(f"Block Size: {prop['block_size']}")
return redirect(url_for("index"))
else:
flash(f"Failed to get drive properties for {file_name}", "error")
return redirect(url_for("index"))
if __name__ == "__main__": if __name__ == "__main__":
app.secret_key = "rascsi_is_awesome_insecure_secret_key" app.secret_key = "rascsi_is_awesome_insecure_secret_key"
app.config["SESSION_TYPE"] = "filesystem" app.config["SESSION_TYPE"] = "filesystem"