Skip to content

Commit 3a9e4ae

Browse files
committed
Merge branch 'master' of github.com:opengisch/QFieldCloud into release
2 parents 2e6c845 + e631ae2 commit 3a9e4ae

File tree

8 files changed

+81
-13
lines changed

8 files changed

+81
-13
lines changed

.github/workflows/build_and_push.yml

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,12 @@ jobs:
4545
docker_context: docker-nginx
4646
enable_dockerhub: true
4747

48+
-
49+
service_name: createbuckets
50+
dockerfile: docker-createbuckets/Dockerfile
51+
docker_context: docker-createbuckets
52+
enable_dockerhub: true
53+
4854
steps:
4955
-
5056
name: Checkout
@@ -67,8 +73,8 @@ jobs:
6773
tags: |
6874
type=ref,enable=true,priority=600,prefix=pr-,suffix=,event=pr
6975
type=sha,format=short,prefix=commit-,event=pr
70-
type=semver,pattern={{version}},event=release
71-
type=edge,branch=main
76+
type=match,pattern=v(.*),group=1
77+
type=edge,branch=master
7278
7379
-
7480
name: Login to GitHub Container Repository (ghcr.io)

docker-app/qfieldcloud/core/models.py

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1249,14 +1249,12 @@ def thumbnail_url(self) -> str:
12491249
Todo:
12501250
* Delete with QF-4963 Drop support for legacy storage
12511251
"""
1252-
if (
1253-
# legacy storage
1254-
self.uses_legacy_storage
1255-
and not self.legacy_thumbnail_uri
1256-
# new storage
1257-
or not self.thumbnail
1258-
):
1259-
return ""
1252+
if self.uses_legacy_storage:
1253+
if not self.legacy_thumbnail_uri:
1254+
return ""
1255+
else:
1256+
if not self.thumbnail:
1257+
return ""
12601258

12611259
return reverse_lazy(
12621260
"filestorage_project_thumbnails",
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
/* SSO providers buttons */
2+
.provider-button-parent {
3+
list-style: none;
4+
margin: 0 1em 1em 0;
5+
padding: 0;
6+
}
7+
8+
.provider-button {
9+
border-radius: .25rem;
10+
padding: .5rem;
11+
}
12+
13+
.provider-button img {
14+
margin-right: 1em;
15+
width: 50px;
16+
height: 50px;
17+
}
18+
19+
.provider-button span {
20+
font-size: larger;
21+
margin-bottom: 0;
22+
}
23+
/* /SSO providers buttons */
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
<li class="provider-button-parent">
2+
3+
<a title="{{ attrs.name }}" href="{{ attrs.href }}">
4+
<div class="provider-button" style="border: 1px solid {{ attrs.styles.light.color_stroke|default:"grey" }}; background-color: {{ attrs.styles.light.color_fill|default:"white" }}">
5+
6+
<img src="{{ attrs.styles.light.logo }}" alt="{{ attrs.name }}">
7+
<span>
8+
<strong style="color: {{ attrs.styles.light.color_text|default:"black" }}">{{ attrs.name }}</strong>
9+
</span>
10+
11+
</div>
12+
</a>
13+
</li>

docker-app/qfieldcloud/core/templates/socialaccount/snippets/provider_list.html

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
{% load allauth socialaccount %}
22
{% get_providers as socialaccount_providers %}
3+
4+
{% load static %}
5+
<link rel="stylesheet" type="text/css" href="{% static 'css/sso.css' %}">
6+
37
{% if socialaccount_providers %}
48
{% element provider_list %}
59
{% for provider in socialaccount_providers %}

docker-app/qfieldcloud/core/views/package_views.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -355,6 +355,7 @@ def get(self, request, project_id, filename):
355355
project_id,
356356
filename,
357357
file_type=file_type,
358+
package_job_id=project.last_package_job_id,
358359
)
359360

360361

docker-app/qfieldcloud/filestorage/models.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ class FileType(models.IntegerChoices):
4949
related_name="files",
5050
)
5151

52-
package_job_id: int
52+
package_job_id: UUID
5353
package_job = models.ForeignKey(
5454
Job,
5555
on_delete=models.DO_NOTHING,

docker-app/qfieldcloud/filestorage/view_helpers.py

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
from django.conf import settings
66
from django.core.exceptions import ValidationError as DjangoValidationError
77
from django.db import transaction
8+
from django.db.models import Q
89
from django.db.models.fields.files import FieldFile
910
from django.http import FileResponse, HttpResponse
1011
from django.http.response import HttpResponseBase
@@ -162,23 +163,45 @@ def download_project_file_version(
162163
filename: str,
163164
file_type: File.FileType,
164165
as_attachment: bool = True,
166+
package_job_id: UUID | None = None,
165167
) -> HttpResponseBase:
166168
version_id = request.GET.get("version")
167169

170+
if file_type == File.FileType.PACKAGE_FILE and not package_job_id:
171+
raise Exception(
172+
f"When downloading a package file the `package_job_id` should be non-empty, but got {package_job_id=}."
173+
)
174+
168175
if version_id:
169-
file_version = FileVersion.objects.get(
176+
filters = Q(
170177
id=version_id,
171178
file__project_id=project_id,
172179
file__name=filename,
173180
file__file_type=file_type,
174181
)
182+
183+
if package_job_id:
184+
filters &= Q(
185+
Q(file__package_job_id=package_job_id)
186+
| Q(file__file_type=File.FileType.PROJECT_FILE)
187+
)
188+
189+
file_version = FileVersion.objects.get(filters)
175190
else:
176-
file = File.objects.select_related("latest_version").get(
191+
filters = Q(
177192
project_id=project_id,
178193
name=filename,
179194
file_type=file_type,
180195
)
181196

197+
if package_job_id:
198+
filters &= Q(
199+
Q(package_job_id=package_job_id)
200+
| Q(file_type=File.FileType.PROJECT_FILE)
201+
)
202+
203+
file = File.objects.select_related("latest_version").get(filters)
204+
182205
assert file.latest_version
183206

184207
file_version = file.latest_version

0 commit comments

Comments
 (0)