Skip to content

Commit 1a2f7c1

Browse files
committed
Merge branch 'feature/remove-remaining-quickiles-code' of https://github.com/bodintsov/osf.io into feature/notification-refactor-phase-1
* 'feature/remove-remaining-quickiles-code' of https://github.com/bodintsov/osf.io: flake8 fixed tests remove quickfiles
2 parents 3fda17f + 41b3a72 commit 1a2f7c1

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

52 files changed

+61
-1081
lines changed

README-docker-compose.md

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -271,10 +271,8 @@
271271
docker compose run --rm web python3 -m scripts.parse_citation_styles
272272
```
273273
- Start ember_osf_web
274-
- Needed for quickfiles feature:
275-
```bash
276-
docker compose up -d ember_osf_web
277-
```
274+
- Needed for ember app:
275+
- `docker-compose up -d ember_osf_web`
278276
- OPTIONAL: Register OAuth Scopes
279277
- Needed for things such as the ember-osf dummy app
280278
```bash

addons/base/views.py

Lines changed: 2 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@
2121

2222
from addons.base import exceptions as addon_errors
2323
from addons.base.models import BaseStorageAddon
24-
from addons.osfstorage.models import OsfStorageFile
2524
from addons.osfstorage.models import OsfStorageFileNode
2625
from addons.osfstorage.utils import enqueue_update_analytics
2726

@@ -34,7 +33,6 @@
3433
from framework.exceptions import HTTPError
3534
from framework.flask import redirect
3635
from framework.sentry import log_exception
37-
from framework.routing import proxy_url
3836
from framework.transactions.handlers import no_auto_transaction
3937
from website import mails
4038
from website import settings
@@ -483,7 +481,7 @@ def _construct_payload(auth, resource, credentials, waterbutler_settings):
483481

484482
@must_be_signed
485483
@no_auto_transaction
486-
@must_be_valid_project(quickfiles_valid=True, preprints_valid=True)
484+
@must_be_valid_project(preprints_valid=True)
487485
def create_waterbutler_log(payload, **kwargs):
488486
with transaction.atomic():
489487
try:
@@ -603,7 +601,7 @@ def create_waterbutler_log(payload, **kwargs):
603601
metadata = payload.get('metadata') or payload.get('destination')
604602

605603
target_node = AbstractNode.load(metadata.get('nid'))
606-
if target_node and not target_node.is_quickfiles and payload['action'] != 'download_file':
604+
if target_node and payload['action'] != 'download_file':
607605
update_storage_usage_with_size(payload)
608606

609607
with transaction.atomic():
@@ -1032,16 +1030,6 @@ def persistent_file_download(auth, **kwargs):
10321030
)
10331031

10341032

1035-
def addon_view_or_download_quickfile(**kwargs):
1036-
fid = kwargs.get('fid', 'NOT_AN_FID')
1037-
file_ = OsfStorageFile.load(fid)
1038-
if not file_:
1039-
raise HTTPError(http_status.HTTP_404_NOT_FOUND, data={
1040-
'message_short': 'File Not Found',
1041-
'message_long': 'The requested file could not be found.'
1042-
})
1043-
return proxy_url(f'/project/{file_.target._id}/files/osfstorage/{fid}/')
1044-
10451033
def addon_view_file(auth, node, file_node, version):
10461034
# TODO: resolve circular import issue
10471035
from addons.wiki import settings as wiki_settings

addons/osfstorage/tests/test_views.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
from framework.auth import cas
2525

2626
from osf import features
27-
from osf.models import Tag, QuickFilesNode
27+
from osf.models import Tag
2828
from osf.models import files as models
2929
from addons.osfstorage.apps import osf_storage_root
3030
from addons.osfstorage import utils

addons/osfstorage/views.py

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -314,9 +314,6 @@ def osfstorage_create_child(file_node, payload, **kwargs):
314314
if not (name or user) or '/' in name:
315315
raise HTTPError(http_status.HTTP_400_BAD_REQUEST)
316316

317-
if getattr(file_node.target, 'is_quickfiles', False) and is_folder:
318-
raise HTTPError(http_status.HTTP_400_BAD_REQUEST, data={'message_long': 'You may not create a folder for QuickFiles'})
319-
320317
try:
321318
# Create a save point so that we can rollback and unlock
322319
# the parent record

admin/base/settings/defaults.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,8 @@
4040
CSRF_COOKIE_HTTPONLY = False
4141

4242
ALLOWED_HOSTS = [
43-
'.osf.io'
43+
'.osf.io',
44+
'*'
4445
]
4546

4647
AUTH_PASSWORD_VALIDATORS = [

api/caching/tasks.py

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -181,7 +181,7 @@ def update_storage_usage(target):
181181
# for fetching files we use AbstractNode instances, this is why we use branched_from property
182182
if isinstance(target, DraftRegistration):
183183
enqueue_postcommit_task(update_storage_usage_cache, (target.branched_from.id, target.branched_from._id), {}, celery=True)
184-
elif not isinstance(target, Preprint) and not target.is_quickfiles:
184+
elif not isinstance(target, Preprint):
185185
enqueue_postcommit_task(update_storage_usage_cache, (target.id, target._id), {}, celery=True)
186186

187187
def update_storage_usage_with_size(payload):
@@ -194,9 +194,6 @@ def update_storage_usage_with_size(payload):
194194
return
195195
target_node = AbstractNode.load(metadata['nid'])
196196

197-
if target_node.is_quickfiles:
198-
return
199-
200197
action = payload['action']
201198
provider = metadata.get('provider', 'osfstorage')
202199

@@ -225,7 +222,7 @@ def update_storage_usage_with_size(payload):
225222
source_provider = payload['source']['provider']
226223
if target_node == source_node and source_provider == provider:
227224
return # Its not going anywhere.
228-
if source_provider == 'osfstorage' and not source_node.is_quickfiles:
225+
if source_provider == 'osfstorage':
229226
if source_node.storage_limit_status is settings.StorageLimits.NOT_CALCULATED:
230227
return update_storage_usage(source_node)
231228

api/files/serializers.py

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -448,18 +448,6 @@ def to_representation(self, value):
448448
return data
449449

450450

451-
class QuickFilesSerializer(BaseFileSerializer):
452-
user = RelationshipField(
453-
related_view='users:user-detail',
454-
related_view_kwargs={'user_id': '<target.creator._id>'},
455-
help_text='The user who uploaded this file',
456-
)
457-
458-
459-
class QuickFilesDetailSerializer(QuickFilesSerializer):
460-
id = IDField(source='_id', required=True)
461-
462-
463451
class FileVersionSerializer(JSONAPISerializer):
464452
filterable_fields = frozenset([
465453
'id',

api/files/views.py

Lines changed: 7 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -24,11 +24,12 @@
2424
from api.cedar_metadata_records.utils import can_view_record
2525
from api.nodes.permissions import ContributorOrPublic
2626
from api.files import annotations
27-
from api.files.permissions import IsPreprintFile
28-
from api.files.permissions import CheckedOutOrAdmin
29-
from api.files.serializers import FileSerializer
30-
from api.files.serializers import FileDetailSerializer
31-
from api.files.serializers import FileVersionSerializer
27+
from api.files.permissions import IsPreprintFile, CheckedOutOrAdmin
28+
from api.files.serializers import (
29+
FileSerializer,
30+
FileDetailSerializer,
31+
FileVersionSerializer,
32+
)
3233
from osf.utils.permissions import ADMIN
3334

3435

@@ -53,10 +54,6 @@ def get_file(self, check_permissions=True):
5354
if getattr(obj.target, 'deleted', None):
5455
raise Gone(detail='The requested file is no longer available')
5556

56-
if getattr(obj.target, 'is_quickfiles', False) and getattr(obj.target, 'creator'):
57-
if obj.target.creator.is_disabled:
58-
raise Gone(detail='This user has been deactivated and their quickfiles are no longer available.')
59-
6057
if getattr(obj.target, 'is_retracted', False):
6158
raise Gone(detail='The requested file is no longer available.')
6259

@@ -85,9 +82,6 @@ class FileDetail(JSONAPIBaseView, generics.RetrieveUpdateAPIView, FileMixin):
8582
view_category = 'files'
8683
view_name = 'file-detail'
8784

88-
def get_serializer_class(self):
89-
return FileDetailSerializer
90-
9185
def get_target(self):
9286
return self.get_file().target
9387

@@ -97,8 +91,7 @@ def get_object(self):
9791
file = self.get_file()
9892

9993
if self.request.GET.get('create_guid', False):
100-
# allows quickfiles to be given guids when another user wants a permanent link to it
101-
if (self.get_target().has_permission(user, ADMIN) and utils.has_admin_scope(self.request)) or getattr(file.target, 'is_quickfiles', False):
94+
if (self.get_target().has_permission(user, ADMIN) and utils.has_admin_scope(self.request)):
10295
file.get_guid(create=True)
10396

10497
# We normally would pass this through `get_file` as an annotation, but the `select_for_update` feature prevents

api/users/urls.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@
2424
re_path(r'^(?P<user_id>\w+)/registrations/$', views.UserRegistrations.as_view(), name=views.UserRegistrations.view_name),
2525
re_path(r'^(?P<user_id>\w+)/settings/$', views.UserSettings.as_view(), name=views.UserSettings.view_name),
2626
re_path(r'^(?P<user_id>\w+)/messages/$', views.UserMessageView.as_view(), name=views.UserMessageView.view_name),
27-
re_path(r'^(?P<user_id>\w+)/quickfiles/$', views.UserQuickFiles.as_view(), name=views.UserQuickFiles.view_name),
2827
re_path(r'^(?P<user_id>\w+)/relationships/institutions/$', views.UserInstitutionsRelationship.as_view(), name=views.UserInstitutionsRelationship.view_name),
2928
re_path(r'^(?P<user_id>\w+)/settings/emails/$', views.UserEmailsList.as_view(), name=views.UserEmailsList.view_name),
3029
re_path(r'^(?P<user_id>\w+)/settings/emails/(?P<email_id>\w+)/$', views.UserEmailsDetail.as_view(), name=views.UserEmailsDetail.view_name),

api/users/views.py

Lines changed: 1 addition & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
from api.addons.views import AddonSettingsMixin
1313
from api.base import permissions as base_permissions
1414
from api.users.permissions import UserMessagePermissions
15-
from api.base.exceptions import Conflict, UserGone, Gone
15+
from api.base.exceptions import Conflict, UserGone
1616
from api.base.filters import ListFilterMixin, PreprintFilterMixin
1717
from api.base.parsers import (
1818
JSONAPIRelationshipParser,
@@ -356,22 +356,6 @@ def get_queryset(self):
356356
)
357357

358358

359-
class UserQuickFiles(JSONAPIBaseView, generics.ListAPIView):
360-
view_category = 'users'
361-
view_name = 'user-quickfiles'
362-
363-
permission_classes = (
364-
drf_permissions.IsAuthenticatedOrReadOnly,
365-
base_permissions.TokenHasScope,
366-
)
367-
368-
required_read_scopes = [CoreScopes.NULL]
369-
required_write_scopes = [CoreScopes.NULL]
370-
371-
def get(self, *args, **kwargs):
372-
raise Gone()
373-
374-
375359
class UserPreprints(JSONAPIBaseView, generics.ListAPIView, UserMixin, PreprintFilterMixin):
376360
"""The documentation for this endpoint can be found [here](https://developer.osf.io/#operation/users_preprints_list).
377361
"""

api_tests/files/views/test_file_detail.py

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
from api.base.settings.defaults import API_BASE
1717
from api_tests import utils as api_utils
1818
from framework.auth.core import Auth
19-
from osf.models import NodeLog, QuickFilesNode, Node, FileVersionUserMetadata
19+
from osf.models import NodeLog, Node, FileVersionUserMetadata
2020
from osf.utils.permissions import WRITE, READ
2121
from osf.utils.workflows import DefaultStates
2222
from osf_tests.factories import (
@@ -56,10 +56,6 @@ class TestFileView:
5656
def node(self, user):
5757
return ProjectFactory(creator=user, comment_level='public')
5858

59-
@pytest.fixture()
60-
def quickfiles_node(self, user):
61-
return QuickFilesNode.objects.get(creator=user)
62-
6359
@pytest.fixture()
6460
def file(self, user, node):
6561
return api_utils.create_test_file(node, user, create_guid=False)

api_tests/wb/views/test_wb_hooks.py

Lines changed: 0 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import pytest
22

3-
from addons.osfstorage.models import OsfStorageFolder
43
from framework.auth import signing
54

65
from osf_tests.factories import (
@@ -9,26 +8,12 @@
98
PreprintFactory
109
)
1110
from api_tests.utils import create_test_file, create_test_preprint_file
12-
from osf.models import QuickFilesNode
1311

1412

1513
@pytest.fixture()
1614
def user():
1715
return AuthUserFactory()
1816

19-
@pytest.fixture()
20-
def quickfiles_node(user):
21-
return QuickFilesNode.objects.get_for_user(user)
22-
23-
@pytest.fixture()
24-
def quickfiles_file(user, quickfiles_node):
25-
file = create_test_file(quickfiles_node, user, filename='road_dogg.mp3')
26-
return file
27-
28-
@pytest.fixture()
29-
def quickfiles_folder(quickfiles_node):
30-
return OsfStorageFolder.objects.get_root(target=quickfiles_node)
31-
3217
@pytest.fixture()
3318
def node(user):
3419
return ProjectFactory(creator=user)
@@ -72,10 +57,6 @@ class TestMove():
7257
def move_url(self, node):
7358
return f'/_/wb/hooks/{node._id}/move/'
7459

75-
@pytest.fixture()
76-
def quickfiles_move_url(self, quickfiles_node):
77-
return f'/_/wb/hooks/{quickfiles_node._id}/move/'
78-
7960
@pytest.fixture()
8061
def payload(self, file, folder, root_node, user):
8162
return {
@@ -568,10 +549,6 @@ class TestCopy():
568549
def copy_url(self, node):
569550
return f'/_/wb/hooks/{node._id}/copy/'
570551

571-
@pytest.fixture()
572-
def quickfiles_copy_url(self, quickfiles_node):
573-
return f'/_/wb/hooks/{quickfiles_node._id}/copy/'
574-
575552
@pytest.fixture()
576553
def payload(self, file, folder, root_node, user):
577554
return {

osf/management/commands/data_storage_usage.py

Lines changed: 0 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -139,23 +139,6 @@
139139
GROUP BY node.type, node.is_public
140140
"""
141141

142-
# Aggregation of non-deleted quick file sizes (NOTE: This will break when QuickFolders is merged)
143-
ND_QUICK_FILE_SIZE_SUM_SQL = """
144-
SELECT
145-
node.type, sum(size)
146-
FROM osf_basefileversionsthrough AS obfnv
147-
LEFT JOIN osf_basefilenode file ON obfnv.basefilenode_id = file.id
148-
LEFT JOIN osf_fileversion version ON obfnv.fileversion_id = version.id
149-
LEFT JOIN osf_abstractnode node ON file.target_object_id = node.id
150-
WHERE file.provider = 'osfstorage' AND file.target_content_type_id = %s
151-
AND node.type = 'osf.quickfilesnode'
152-
AND node.is_deleted = False
153-
AND file.deleted_on IS NULL
154-
AND obfnv.id >= %s AND obfnv.id <= %s
155-
GROUP BY node.type
156-
157-
"""
158-
159142
# Aggregation of size of non-deleted files in preprint supplemental nodes based on the node query above
160143
ND_PREPRINT_SUPPLEMENT_SIZE_SUM_SQL = """
161144
SELECT
@@ -320,16 +303,6 @@ def gather_usage_data(start, end, dry_run, zip_file):
320303
cursor=cursor,
321304
))
322305

323-
# TODO: Move the next when Quick Folders is done
324-
logger.debug(f'Gathering quickfile summary at {datetime.datetime.now()}')
325-
summary_data = combine_summary_data(summary_data, summarize(
326-
sql=ND_QUICK_FILE_SIZE_SUM_SQL,
327-
content_type=abstractnode_content_type,
328-
start=start,
329-
end=end,
330-
cursor=cursor,
331-
))
332-
333306
logger.debug(f'Gathering supplement summary at {datetime.datetime.now()}')
334307
summary_data = combine_summary_data(summary_data, summarize(
335308
sql=ND_PREPRINT_SUPPLEMENT_SIZE_SUM_SQL,

0 commit comments

Comments
 (0)