From 287f848cdd4b11b14d3214e805ae2e3d86248952 Mon Sep 17 00:00:00 2001 From: Henri Dickson <90480431+alphatownsman@users.noreply.github.com> Date: Fri, 16 Dec 2022 09:53:06 -0500 Subject: [PATCH] add test for github action --- .github/workflows/django.yml | 47 +++++++++++++++++ .github/workflows/pysa.yml | 50 ------------------- catalog/common/downloaders.py | 6 ++- catalog/common/models.py | 1 - catalog/common/sites.py | 2 +- misc/dev-reset.sh | 2 +- ...64_language_zh_CN_external_source_imdb_id} | 0 ...64_language_zh_CN_external_source_imdb_id} | 0 ...64_language_zh_CN_external_source_imdb_id} | 0 ...64_language_zh_CN_external_source_imdb_id} | 0 ...64_language_zh_CN_external_source_imdb_id} | 0 ...64_language_zh_CN_external_source_imdb_id} | 0 ...N_append_to_response_external_ids_credits} | 0 ...N_append_to_response_external_ids_credits} | 0 ...N_append_to_response_external_ids_credits} | 0 ...N_append_to_response_external_ids_credits} | 0 ...N_append_to_response_external_ids_credits} | 0 ...N_append_to_response_external_ids_credits} | 0 ...N_append_to_response_external_ids_credits} | 0 ...age_zh_CN_append_to_response_external_ids} | 0 ...N_append_to_response_external_ids_credits} | 0 users/models.py | 2 +- 22 files changed, 54 insertions(+), 56 deletions(-) create mode 100644 .github/workflows/django.yml delete mode 100644 .github/workflows/pysa.yml rename test_data/{https___api_themoviedb_org_3_find_tt0436992_api_key_19890604_language_zh_CN_external_source_imdb_id => https___api_themoviedb_org_3_find_tt0436992_api_key_8964_language_zh_CN_external_source_imdb_id} (100%) rename test_data/{https___api_themoviedb_org_3_find_tt0827573_api_key_19890604_language_zh_CN_external_source_imdb_id => https___api_themoviedb_org_3_find_tt0827573_api_key_8964_language_zh_CN_external_source_imdb_id} (100%) rename test_data/{https___api_themoviedb_org_3_find_tt1159991_api_key_19890604_language_zh_CN_external_source_imdb_id => https___api_themoviedb_org_3_find_tt1159991_api_key_8964_language_zh_CN_external_source_imdb_id} (100%) rename test_data/{https___api_themoviedb_org_3_find_tt1375666_api_key_19890604_language_zh_CN_external_source_imdb_id => https___api_themoviedb_org_3_find_tt1375666_api_key_8964_language_zh_CN_external_source_imdb_id} (100%) rename test_data/{https___api_themoviedb_org_3_find_tt15389382_api_key_19890604_language_zh_CN_external_source_imdb_id => https___api_themoviedb_org_3_find_tt15389382_api_key_8964_language_zh_CN_external_source_imdb_id} (100%) rename test_data/{https___api_themoviedb_org_3_find_tt7660970_api_key_19890604_language_zh_CN_external_source_imdb_id => https___api_themoviedb_org_3_find_tt7660970_api_key_8964_language_zh_CN_external_source_imdb_id} (100%) rename test_data/{https___api_themoviedb_org_3_movie_27205_api_key_19890604_language_zh_CN_append_to_response_external_ids_credits => https___api_themoviedb_org_3_movie_27205_api_key_8964_language_zh_CN_append_to_response_external_ids_credits} (100%) rename test_data/{https___api_themoviedb_org_3_movie_282758_api_key_19890604_language_zh_CN_append_to_response_external_ids_credits => https___api_themoviedb_org_3_movie_282758_api_key_8964_language_zh_CN_append_to_response_external_ids_credits} (100%) rename test_data/{https___api_themoviedb_org_3_movie_293767_api_key_19890604_language_zh_CN_append_to_response_external_ids_credits => https___api_themoviedb_org_3_movie_293767_api_key_8964_language_zh_CN_append_to_response_external_ids_credits} (100%) rename test_data/{https___api_themoviedb_org_3_tv_57243_api_key_19890604_language_zh_CN_append_to_response_external_ids_credits => https___api_themoviedb_org_3_tv_57243_api_key_8964_language_zh_CN_append_to_response_external_ids_credits} (100%) rename test_data/{https___api_themoviedb_org_3_tv_57243_season_4_api_key_19890604_language_zh_CN_append_to_response_external_ids_credits => https___api_themoviedb_org_3_tv_57243_season_4_api_key_8964_language_zh_CN_append_to_response_external_ids_credits} (100%) rename test_data/{https___api_themoviedb_org_3_tv_57243_season_4_episode_1_api_key_19890604_language_zh_CN_append_to_response_external_ids_credits => https___api_themoviedb_org_3_tv_57243_season_4_episode_1_api_key_8964_language_zh_CN_append_to_response_external_ids_credits} (100%) rename test_data/{https___api_themoviedb_org_3_tv_60625_api_key_19890604_language_zh_CN_append_to_response_external_ids_credits => https___api_themoviedb_org_3_tv_60625_api_key_8964_language_zh_CN_append_to_response_external_ids_credits} (100%) rename test_data/{https___api_themoviedb_org_3_tv_60625_season_6_episode_1_api_key_19890604_language_zh_CN_append_to_response_external_ids => https___api_themoviedb_org_3_tv_60625_season_6_episode_1_api_key_8964_language_zh_CN_append_to_response_external_ids} (100%) rename test_data/{https___api_themoviedb_org_3_tv_86941_api_key_19890604_language_zh_CN_append_to_response_external_ids_credits => https___api_themoviedb_org_3_tv_86941_api_key_8964_language_zh_CN_append_to_response_external_ids_credits} (100%) diff --git a/.github/workflows/django.yml b/.github/workflows/django.yml new file mode 100644 index 00000000..ab27dc91 --- /dev/null +++ b/.github/workflows/django.yml @@ -0,0 +1,47 @@ +name: Django CI + +on: + push: + pull_request: + branches: [ "main" ] + +jobs: + build: + + runs-on: ubuntu-latest + services: + db: + image: postgres:12.13-alpine + env: + POSTGRES_USER: postgres + POSTGRES_PASSWORD: admin123 + POSTGRES_DB: test + ports: + - 5432:5432 + options: --mount type=tmpfs,destination=/var/lib/postgresql/data --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5 + + strategy: + max-parallel: 4 + matrix: + python-version: ['3.8', '3.11'] + + steps: + - uses: actions/checkout@v3 + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v3 + with: + python-version: ${{ matrix.python-version }} + - name: Install Dependencies + run: | + python -m pip install --upgrade pip + pip install -r requirements.txt + pip install django-ninja + pip install django-polymorphic + - run: | + sudo apt-get update + sudo apt-get install --yes --no-install-recommends postgresql-client + - name: Run Tests + run: | + PGPASSWORD=admin123 psql template1 -U postgres -h localhost -c 'create extension hstore;' + new_data_model=1 python manage.py makemigrations auth mastodon users books movies games music sync management collection common sync management timeline catalog journal social + new_data_model=1 python manage.py test diff --git a/.github/workflows/pysa.yml b/.github/workflows/pysa.yml deleted file mode 100644 index 50e8865b..00000000 --- a/.github/workflows/pysa.yml +++ /dev/null @@ -1,50 +0,0 @@ -# This workflow uses actions that are not certified by GitHub. -# They are provided by a third-party and are governed by -# separate terms of service, privacy policy, and support -# documentation. - -# This workflow integrates Python Static Analyzer (Pysa) with -# GitHub's Code Scanning feature. -# -# Python Static Analyzer (Pysa) is a security-focused static -# analysis tool that tracks flows of data from where they -# originate to where they terminate in a dangerous location. -# -# See https://pyre-check.org/docs/pysa-basics/ - -name: Pysa - -on: - workflow_dispatch: - push: - branches: [ "master" ] - pull_request: - branches: [ "master" ] - schedule: - - cron: '45 12 * * 4' - -permissions: - contents: read - -jobs: - pysa: - permissions: - actions: read - contents: read - security-events: write - - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - with: - submodules: true - - - name: Run Pysa - uses: facebook/pysa-action@f46a63777e59268613bd6e2ff4e29f144ca9e88b - with: - # To customize these inputs: - # See https://github.com/facebook/pysa-action#inputs - repo-directory: './' - requirements-path: 'requirements.txt' - infer-types: true - include-default-sapp-filters: true diff --git a/catalog/common/downloaders.py b/catalog/common/downloaders.py index 31e7818e..a9d95e21 100644 --- a/catalog/common/downloaders.py +++ b/catalog/common/downloaders.py @@ -43,8 +43,10 @@ def get_mock_mode(): def get_mock_file(url): - fn = re.sub(r'[^\w]', '_', url) - return re.sub(r'_key_[A-Za-z0-9]+', '_key_19890604', fn) + fn = url.replace('***REMOVED***', '1234') # Thank you, Github Action -_-! + fn = re.sub(r'[^\w]', '_', fn) + fn = re.sub(r'_key_[*A-Za-z0-9]+', '_key_8964', fn) + return fn class DownloadError(Exception): diff --git a/catalog/common/models.py b/catalog/common/models.py index 5c572fb7..da5e6ba2 100644 --- a/catalog/common/models.py +++ b/catalog/common/models.py @@ -250,7 +250,6 @@ class Item(SoftDeleteMixin, PolymorphicModel): # TODO # ll = set(lookup_ids) # ll = list(filter(lambda a, b: b, ll)) - # print(ll) pass METADATA_COPY_LIST = ['title', 'brief'] # list of metadata keys to copy from resource to item diff --git a/catalog/common/sites.py b/catalog/common/sites.py index 926beeef..579e9061 100644 --- a/catalog/common/sites.py +++ b/catalog/common/sites.py @@ -67,7 +67,7 @@ class AbstractSite: self.resource = ExternalResource(id_type=self.ID_TYPE, id_value=self.id_value, url=self.url) return self.resource - def bypass_scrape(self, data_from_link) -> ResourceContent | None: + def bypass_scrape(self, data_from_link) -> ResourceContent: """subclass may implement this to use data from linked resource and bypass actual scrape""" return None diff --git a/misc/dev-reset.sh b/misc/dev-reset.sh index cf231dcc..8622e406 100755 --- a/misc/dev-reset.sh +++ b/misc/dev-reset.sh @@ -22,7 +22,7 @@ psql $* neodb -c "CREATE EXTENSION hstore WITH SCHEMA public;" || exit $? find -type d -name migrations | xargs rm -rf -python3 manage.py makemigrations mastodon users books movies games music sync management collection common sync management catalog journal social || exit $? +python3 manage.py makemigrations auth mastodon users books movies games music sync management collection common sync management timeline catalog journal social || exit $? python3 manage.py migrate || exit $? diff --git a/test_data/https___api_themoviedb_org_3_find_tt0436992_api_key_19890604_language_zh_CN_external_source_imdb_id b/test_data/https___api_themoviedb_org_3_find_tt0436992_api_key_8964_language_zh_CN_external_source_imdb_id similarity index 100% rename from test_data/https___api_themoviedb_org_3_find_tt0436992_api_key_19890604_language_zh_CN_external_source_imdb_id rename to test_data/https___api_themoviedb_org_3_find_tt0436992_api_key_8964_language_zh_CN_external_source_imdb_id diff --git a/test_data/https___api_themoviedb_org_3_find_tt0827573_api_key_19890604_language_zh_CN_external_source_imdb_id b/test_data/https___api_themoviedb_org_3_find_tt0827573_api_key_8964_language_zh_CN_external_source_imdb_id similarity index 100% rename from test_data/https___api_themoviedb_org_3_find_tt0827573_api_key_19890604_language_zh_CN_external_source_imdb_id rename to test_data/https___api_themoviedb_org_3_find_tt0827573_api_key_8964_language_zh_CN_external_source_imdb_id diff --git a/test_data/https___api_themoviedb_org_3_find_tt1159991_api_key_19890604_language_zh_CN_external_source_imdb_id b/test_data/https___api_themoviedb_org_3_find_tt1159991_api_key_8964_language_zh_CN_external_source_imdb_id similarity index 100% rename from test_data/https___api_themoviedb_org_3_find_tt1159991_api_key_19890604_language_zh_CN_external_source_imdb_id rename to test_data/https___api_themoviedb_org_3_find_tt1159991_api_key_8964_language_zh_CN_external_source_imdb_id diff --git a/test_data/https___api_themoviedb_org_3_find_tt1375666_api_key_19890604_language_zh_CN_external_source_imdb_id b/test_data/https___api_themoviedb_org_3_find_tt1375666_api_key_8964_language_zh_CN_external_source_imdb_id similarity index 100% rename from test_data/https___api_themoviedb_org_3_find_tt1375666_api_key_19890604_language_zh_CN_external_source_imdb_id rename to test_data/https___api_themoviedb_org_3_find_tt1375666_api_key_8964_language_zh_CN_external_source_imdb_id diff --git a/test_data/https___api_themoviedb_org_3_find_tt15389382_api_key_19890604_language_zh_CN_external_source_imdb_id b/test_data/https___api_themoviedb_org_3_find_tt15389382_api_key_8964_language_zh_CN_external_source_imdb_id similarity index 100% rename from test_data/https___api_themoviedb_org_3_find_tt15389382_api_key_19890604_language_zh_CN_external_source_imdb_id rename to test_data/https___api_themoviedb_org_3_find_tt15389382_api_key_8964_language_zh_CN_external_source_imdb_id diff --git a/test_data/https___api_themoviedb_org_3_find_tt7660970_api_key_19890604_language_zh_CN_external_source_imdb_id b/test_data/https___api_themoviedb_org_3_find_tt7660970_api_key_8964_language_zh_CN_external_source_imdb_id similarity index 100% rename from test_data/https___api_themoviedb_org_3_find_tt7660970_api_key_19890604_language_zh_CN_external_source_imdb_id rename to test_data/https___api_themoviedb_org_3_find_tt7660970_api_key_8964_language_zh_CN_external_source_imdb_id diff --git a/test_data/https___api_themoviedb_org_3_movie_27205_api_key_19890604_language_zh_CN_append_to_response_external_ids_credits b/test_data/https___api_themoviedb_org_3_movie_27205_api_key_8964_language_zh_CN_append_to_response_external_ids_credits similarity index 100% rename from test_data/https___api_themoviedb_org_3_movie_27205_api_key_19890604_language_zh_CN_append_to_response_external_ids_credits rename to test_data/https___api_themoviedb_org_3_movie_27205_api_key_8964_language_zh_CN_append_to_response_external_ids_credits diff --git a/test_data/https___api_themoviedb_org_3_movie_282758_api_key_19890604_language_zh_CN_append_to_response_external_ids_credits b/test_data/https___api_themoviedb_org_3_movie_282758_api_key_8964_language_zh_CN_append_to_response_external_ids_credits similarity index 100% rename from test_data/https___api_themoviedb_org_3_movie_282758_api_key_19890604_language_zh_CN_append_to_response_external_ids_credits rename to test_data/https___api_themoviedb_org_3_movie_282758_api_key_8964_language_zh_CN_append_to_response_external_ids_credits diff --git a/test_data/https___api_themoviedb_org_3_movie_293767_api_key_19890604_language_zh_CN_append_to_response_external_ids_credits b/test_data/https___api_themoviedb_org_3_movie_293767_api_key_8964_language_zh_CN_append_to_response_external_ids_credits similarity index 100% rename from test_data/https___api_themoviedb_org_3_movie_293767_api_key_19890604_language_zh_CN_append_to_response_external_ids_credits rename to test_data/https___api_themoviedb_org_3_movie_293767_api_key_8964_language_zh_CN_append_to_response_external_ids_credits diff --git a/test_data/https___api_themoviedb_org_3_tv_57243_api_key_19890604_language_zh_CN_append_to_response_external_ids_credits b/test_data/https___api_themoviedb_org_3_tv_57243_api_key_8964_language_zh_CN_append_to_response_external_ids_credits similarity index 100% rename from test_data/https___api_themoviedb_org_3_tv_57243_api_key_19890604_language_zh_CN_append_to_response_external_ids_credits rename to test_data/https___api_themoviedb_org_3_tv_57243_api_key_8964_language_zh_CN_append_to_response_external_ids_credits diff --git a/test_data/https___api_themoviedb_org_3_tv_57243_season_4_api_key_19890604_language_zh_CN_append_to_response_external_ids_credits b/test_data/https___api_themoviedb_org_3_tv_57243_season_4_api_key_8964_language_zh_CN_append_to_response_external_ids_credits similarity index 100% rename from test_data/https___api_themoviedb_org_3_tv_57243_season_4_api_key_19890604_language_zh_CN_append_to_response_external_ids_credits rename to test_data/https___api_themoviedb_org_3_tv_57243_season_4_api_key_8964_language_zh_CN_append_to_response_external_ids_credits diff --git a/test_data/https___api_themoviedb_org_3_tv_57243_season_4_episode_1_api_key_19890604_language_zh_CN_append_to_response_external_ids_credits b/test_data/https___api_themoviedb_org_3_tv_57243_season_4_episode_1_api_key_8964_language_zh_CN_append_to_response_external_ids_credits similarity index 100% rename from test_data/https___api_themoviedb_org_3_tv_57243_season_4_episode_1_api_key_19890604_language_zh_CN_append_to_response_external_ids_credits rename to test_data/https___api_themoviedb_org_3_tv_57243_season_4_episode_1_api_key_8964_language_zh_CN_append_to_response_external_ids_credits diff --git a/test_data/https___api_themoviedb_org_3_tv_60625_api_key_19890604_language_zh_CN_append_to_response_external_ids_credits b/test_data/https___api_themoviedb_org_3_tv_60625_api_key_8964_language_zh_CN_append_to_response_external_ids_credits similarity index 100% rename from test_data/https___api_themoviedb_org_3_tv_60625_api_key_19890604_language_zh_CN_append_to_response_external_ids_credits rename to test_data/https___api_themoviedb_org_3_tv_60625_api_key_8964_language_zh_CN_append_to_response_external_ids_credits diff --git a/test_data/https___api_themoviedb_org_3_tv_60625_season_6_episode_1_api_key_19890604_language_zh_CN_append_to_response_external_ids b/test_data/https___api_themoviedb_org_3_tv_60625_season_6_episode_1_api_key_8964_language_zh_CN_append_to_response_external_ids similarity index 100% rename from test_data/https___api_themoviedb_org_3_tv_60625_season_6_episode_1_api_key_19890604_language_zh_CN_append_to_response_external_ids rename to test_data/https___api_themoviedb_org_3_tv_60625_season_6_episode_1_api_key_8964_language_zh_CN_append_to_response_external_ids diff --git a/test_data/https___api_themoviedb_org_3_tv_86941_api_key_19890604_language_zh_CN_append_to_response_external_ids_credits b/test_data/https___api_themoviedb_org_3_tv_86941_api_key_8964_language_zh_CN_append_to_response_external_ids_credits similarity index 100% rename from test_data/https___api_themoviedb_org_3_tv_86941_api_key_19890604_language_zh_CN_append_to_response_external_ids_credits rename to test_data/https___api_themoviedb_org_3_tv_86941_api_key_8964_language_zh_CN_append_to_response_external_ids_credits diff --git a/users/models.py b/users/models.py index 282c5df9..206ce8b1 100644 --- a/users/models.py +++ b/users/models.py @@ -183,7 +183,7 @@ class Preference(models.Model): class Report(models.Model): submit_user = models.ForeignKey(User, on_delete=models.SET_NULL, related_name='sumbitted_reports', null=True) reported_user = models.ForeignKey(User, on_delete=models.SET_NULL, related_name='accused_reports', null=True) - image = models.ImageField(upload_to=report_image_path, height_field=None, width_field=None, max_length=None, blank=True, default='') + image = models.ImageField(upload_to=report_image_path, height_field=None, width_field=None, blank=True, default='') is_read = models.BooleanField(default=False) submitted_time = models.DateTimeField(auto_now_add=True) message = models.CharField(max_length=1000)