Skip to content

Commit

Permalink
chore: py2 fixes of select statements
Browse files Browse the repository at this point in the history
  • Loading branch information
smotornyuk committed Mar 12, 2024
1 parent c3f5fec commit f9506b1
Show file tree
Hide file tree
Showing 13 changed files with 84 additions and 38 deletions.
11 changes: 11 additions & 0 deletions ckanext/files/assets/resource.config
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
[depends]

files = base/main

[groups]

files =
scripts/files--shared.js
scripts/files--queue.js
scripts/files--google-cloud-storage-uploader.js
styles/files--style.css

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

10 changes: 5 additions & 5 deletions ckanext/files/assets/scripts/files--queue.js

Large diffs are not rendered by default.

16 changes: 14 additions & 2 deletions ckanext/files/assets/scripts/files--shared.js

Large diffs are not rendered by default.

8 changes: 4 additions & 4 deletions ckanext/files/assets/ts/files--queue.ts
Original file line number Diff line number Diff line change
Expand Up @@ -131,15 +131,15 @@ ckan.module("files--queue", function ($) {
file.name,
Object.entries(reasons)
.filter(([k, v]) => k[0] !== "_")
.map(([k, v]) => v.join("; "))
.map(([k, v]) => (Array.isArray(v) ? v.join("; ") : v))
.join("; "),
);
this.toggleAnimation(widget, false);

widget
.find("[data-upload-progress]")
.removeClass("bg-primary bg-secondary")
.addClass("bg-danger");
.addClass("bg-danger progress-bar-danger");
},
);
info.uploader.addEventListener(
Expand All @@ -152,7 +152,7 @@ ckan.module("files--queue", function ($) {
widget
.find("[data-upload-progress]")
.removeClass("bg-primary bg-secondary")
.addClass("bg-danger");
.addClass("bg-danger progress-bar-danger");
},
);

Expand All @@ -168,7 +168,7 @@ ckan.module("files--queue", function ($) {
widget
.find("[data-upload-progress]")
.removeClass("bg-primary bg-secondary")
.addClass("bg-success");
.addClass("bg-success progress-bar-succes");
this.sandbox.publish(
ckan.CKANEXT_FILES.topics.queueItemUploaded,
file,
Expand Down
14 changes: 13 additions & 1 deletion ckanext/files/assets/ts/files--shared.ts
Original file line number Diff line number Diff line change
Expand Up @@ -181,7 +181,19 @@ namespace ckan {
}
this._active.add(file);

let info = await this._initializeUpload(file);
let info;

try {
info = await this._initializeUpload(file);
} catch (err) {
if (typeof err === "string") {
this.dispatchError(file, err);
} else {
this.dispatchFail(file, err as any);
}
return;
}

this.dispatchCommit(file, info.id);
this.dispatchStart(file);

Expand Down
13 changes: 7 additions & 6 deletions ckanext/files/logic/action.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ def files_file_search_by_user(context, data_dict):
tk.check_access("files_file_search_by_user", context, data_dict)
sess = context["session"]

stmt = sa.select(File).join(
q = sess.query(File).join(
Owner,
sa.and_(File.id == Owner.item_id, Owner.item_type == "file"), # type: ignore
)
Expand All @@ -39,9 +39,10 @@ def files_file_search_by_user(context, data_dict):
if not user:
raise tk.ObjectNotFound("user")

stmt = stmt.where(Owner.owner_type == "user", Owner.owner_id == user.id)

total = sess.scalar(sa.select(sa.func.count()).select_from(stmt))
q = q.filter(sa.and_(Owner.owner_type == "user", Owner.owner_id == user.id))

total = q.count()

parts = data_dict["sort"].split(".")
sort = parts[0]
Expand All @@ -62,11 +63,11 @@ def files_file_search_by_user(context, data_dict):
if data_dict["reverse"]:
column = column.desc()

stmt = stmt.order_by(column)
q = q.order_by(column)

stmt = stmt.limit(data_dict["rows"]).offset(data_dict["start"])
q = q.limit(data_dict["rows"]).offset(data_dict["start"])

return {"count": total, "results": [f.dictize(context) for f in sess.scalars(stmt)]}
return {"count": total, "results": [f.dictize(context) for f in q]}


@action
Expand Down
7 changes: 5 additions & 2 deletions ckanext/files/logic/auth.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import ckan.plugins.toolkit as tk
import sqlalchemy as sa
from ckan import authz, model

from ckanext.files.model import Owner
Expand Down Expand Up @@ -33,8 +34,10 @@ def _get_user(context):
def _is_owner(user_id, file_id):
# type: (str, str) -> bool
stmt = Owner.owners_of(file_id, "file").where(
Owner.owner_type == "user",
Owner.owner_ie == user_id,
sa.and_(
Owner.owner_type == "user",
Owner.owner_ie == user_id,
)
)
return model.Session.query(stmt.exists()).scalar()

Expand Down
8 changes: 5 additions & 3 deletions ckanext/files/model/owner.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@

from ckan.lib.dictization import table_dictize
from ckan.model.types import make_uuid
import ckan.plugins.toolkit as tk

from .base import Base

Expand Down Expand Up @@ -31,11 +32,12 @@ def dictize(self, context):
def owners_of(cls, id, type):
# type: (str, str) -> types.Select
"""List records with given item."""
return sa.select(cls).where(cls.item_type == type, cls.item_id == id)
selectable = cls if tk.check_ckan_version("2.9") else [cls]
return sa.select(selectable).where(sa.and_(cls.item_type == type, cls.item_id == id))

@classmethod
def owned_by(cls, id, type):
# type: (str, str) -> types.Select
"""List records with given owner."""

return sa.select(cls).where(cls.owner_type == type, cls.owner_id == id)
selectable = cls if tk.check_ckan_version("2.9") else [cls]
return sa.select(selectable).where(sa.and_(cls.owner_type == type, cls.owner_id == id))
4 changes: 1 addition & 3 deletions ckanext/files/templates/files/snippets/_resource.html
Original file line number Diff line number Diff line change
@@ -1,3 +1 @@
{% resource "files/styles/files--style.css" %}
{% resource "files/js/files--shared.js" %}
{% resource "files/js/files--queue.js" %}
{% resource "files/files" %}
4 changes: 2 additions & 2 deletions ckanext/files/templates/files/snippets/file_table.html
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@

<i class="fa fa-sort-amount-desc"></i>
{% else %}
<a href="{{ h.remove_url_param(['sort', 'reverse'], replace=column.name) }}&reverse=false">
<a href="{{ h.remove_url_param(['sort', 'reverse'], replace=column.name, alternative_url=request.path) }}&reverse=false">
{{ _(column.label) }}
</a>
{% endif %}
Expand Down Expand Up @@ -84,7 +84,7 @@
{% endif %}

{% if not file.completed and h.check_access("files_upload_update", {"id": file.id})%}
<label type="button" class="files--no-after-content btn btn-sm btn-primary" title="Resume upload">
<label class="files--no-after-content btn btn-sm btn-primary" title="Resume upload">
<i class="fa fa-upload"></i>
<input type="file" hidden data-module="files--restorer"
data-module-name="{{ file.name }}"
Expand Down
21 changes: 14 additions & 7 deletions ckanext/files/templates/files/snippets/uploader.html
Original file line number Diff line number Diff line change
@@ -1,19 +1,28 @@
{#
storage
uploader
file_attrs
#}

{% import 'macros/form.html' as form %}

{% set storage = storage or "default" %}
{% set uploader = uploader or "Standard" %}


{% block uploader %}
<div class="file-uploader">
{% block form %}
<form action="" method="post" class="file-uploader__form" data-module="files--scheduler">
{{ form.input("upload", label="File", type="file", attrs={
"multiple": true,
{{ form.input("upload", label="File", type="file", attrs=dict({
"class": "form-control",
"data-queue-scheduler": true,
}) }}
}, **file_attrs|default({}))) }}
</form>
{% endblock form %}

{% block progress %}
<div data-module="files--queue">
<div data-module="files--queue" data-module-storage="{{ storage }}" data-module-uploader="{{ uploader }}">

<div data-upload-template hidden class="card file-uploader__queue_item my-1">
<div class="card-header">
Expand All @@ -29,18 +38,16 @@
</div>

<div class="card-footer">

<div class="file-uploader__controls">

<button type="button" class="btn btn-sm btn-light" data-upload-resume>
<i class="fa fa-play"></i>
</button>

<button type="button" class="btn btn-sm btn-light" data-upload-pause>
<i class="fa fa-pause"></i>
</button>
</div>

</div>
</div>

</div>
Expand Down
Loading

0 comments on commit f9506b1

Please sign in to comment.