{"id":18472201,"url":"https://github.com/hipo/django-sloop","last_synced_at":"2025-10-13T01:36:44.428Z","repository":{"id":24998506,"uuid":"28417416","full_name":"Hipo/django-sloop","owner":"Hipo","description":"The django package for sloop implementation","archived":false,"fork":false,"pushed_at":"2022-11-08T08:15:27.000Z","size":3077,"stargazers_count":16,"open_issues_count":9,"forks_count":4,"subscribers_count":22,"default_branch":"master","last_synced_at":"2025-09-21T21:01:03.454Z","etag":null,"topics":["apns","django","django-rest-framework","fcm","push-notifications","sns"],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"mhx/Tie-Hash-Indexed","license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Hipo.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2014-12-23T20:11:11.000Z","updated_at":"2022-07-02T12:41:45.000Z","dependencies_parsed_at":"2023-01-14T01:57:16.029Z","dependency_job_id":null,"html_url":"https://github.com/Hipo/django-sloop","commit_stats":null,"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/Hipo/django-sloop","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Hipo%2Fdjango-sloop","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Hipo%2Fdjango-sloop/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Hipo%2Fdjango-sloop/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Hipo%2Fdjango-sloop/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Hipo","download_url":"https://codeload.github.com/Hipo/django-sloop/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Hipo%2Fdjango-sloop/sbom","scorecard":{"id":62676,"data":{"date":"2025-08-11","repo":{"name":"github.com/Hipo/django-sloop","commit":"9e34f8a6d72f5da964f1ef6de8a0862f217371fa"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":1.8,"checks":[{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Code-Review","score":2,"reason":"Found 5/20 approved changesets -- score normalized to 2","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: Apache License 2.0: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: containerImage not pinned by hash: Dockerfile:1: pin your Docker image by updating ubuntu:18.04 to ubuntu:18.04@sha256:152dc042452c496007f07ca9127571cb9c29697f42acbfad72324b2bb2e43c98","Warn: pipCommand not pinned by hash: Dockerfile:21","Warn: pipCommand not pinned by hash: Dockerfile:22","Warn: pipCommand not pinned by hash: Dockerfile:23","Info:   0 out of   1 containerImage dependencies pinned","Info:   0 out of   3 pipCommand dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 15 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Vulnerabilities","score":0,"reason":"28 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: PYSEC-2021-858 / GHSA-q4xr-rc97-m4xx","Warn: Project is vulnerable to: PYSEC-2018-6 / GHSA-2f9x-5v75-3qv4","Warn: Project is vulnerable to: PYSEC-2019-17 / GHSA-337x-4q8g-prc5","Warn: Project is vulnerable to: PYSEC-2020-36 / GHSA-3gh2-xw74-jmcw","Warn: Project is vulnerable to: PYSEC-2018-2 / GHSA-5hg3-6c2f-f3wr","Warn: Project is vulnerable to: PYSEC-2021-98 / GHSA-68w8-qjq3-2gfm","Warn: Project is vulnerable to: PYSEC-2019-10 / GHSA-6c7v-2f49-8h26","Warn: Project is vulnerable to: PYSEC-2019-13 / GHSA-6r97-cj55-9hrq","Warn: Project is vulnerable to: PYSEC-2019-79 / GHSA-7rp2-fm2h-wchj","Warn: Project is vulnerable to: GHSA-7xr5-9hcq-chf9","Warn: Project is vulnerable to: GHSA-8x94-hmjh-97hq","Warn: Project is vulnerable to: PYSEC-2017-44 / GHSA-9r8w-6x8c-6jr9","Warn: Project is vulnerable to: PYSEC-2019-11 / GHSA-c4qh-4vgv-qc6g","Warn: Project is vulnerable to: PYSEC-2019-12 / GHSA-h5jv-4p7w-64jg","Warn: Project is vulnerable to: PYSEC-2020-35 / GHSA-hmr4-m2h5-33qx","Warn: Project is vulnerable to: PYSEC-2018-5 / GHSA-r28v-mw67-m5p9","Warn: Project is vulnerable to: GHSA-rrqc-c2jx-6jgv","Warn: Project is vulnerable to: PYSEC-2019-14 / GHSA-v9qg-3j8p-r63v","Warn: Project is vulnerable to: PYSEC-2019-16 / GHSA-vfq6-hq5r-27r6","Warn: Project is vulnerable to: PYSEC-2019-18 / GHSA-wh4h-v3f2-r2pp","Warn: Project is vulnerable to: PYSEC-2020-263 / GHSA-fx83-3ph3-9j2q","Warn: Project is vulnerable to: GHSA-gw84-84pc-xp82","Warn: Project is vulnerable to: GHSA-29gw-9793-fvw7","Warn: Project is vulnerable to: PYSEC-2015-24 / GHSA-4vwq-x64q-j4cj","Warn: Project is vulnerable to: PYSEC-2017-46 / GHSA-66gw-5xpf-gfp5","Warn: Project is vulnerable to: PYSEC-2015-25 / GHSA-92mr-v722-f48m","Warn: Project is vulnerable to: PYSEC-2022-12 / GHSA-pq7m-3gw7-gq5x","Warn: Project is vulnerable to: PYSEC-2017-47"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-15T02:02:53.416Z","repository_id":24998506,"created_at":"2025-08-15T02:02:53.416Z","updated_at":"2025-08-15T02:02:53.416Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279013901,"owners_count":26085326,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-12T02:00:06.719Z","response_time":53,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["apns","django","django-rest-framework","fcm","push-notifications","sns"],"created_at":"2024-11-06T10:19:22.796Z","updated_at":"2025-10-13T01:36:44.396Z","avatar_url":"https://github.com/Hipo.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"![Sloop](/docs/img/splash.jpg?raw=true \"Django-Sloop\")\n\nThis package contains some tools that will ease the implementation of push notifications using AWS SNS and other backends into django projects.\n\n# Django-Sloop\n\n## Installation\n\n1. Install the package via Github or PIP (pip install django-sloop)\n\n2. Add **django_sloop** to the INSTALLED_APPS list in the settings file.\n\n3. Extend the django_sloop.models.AbstractSNSDevice class and create your own push token device model.\n\n```python\n# models.py\n\nfrom django_sloop.models import AbstractSNSDevice\n\n\nclass Device(AbstractSNSDevice):\n    pass\n    \n    # (Optional) if you need to override Meta.\n    class Meta(AbstractSNSDevice.Meta):\n        pass\n```\n\n4. Make sure that you fill necessary information at the settings file:\n\n```python\n# settings.py\n\nDJANGO_SLOOP_SETTINGS = {\n    \"AWS_REGION_NAME\": \"\",\n    \"AWS_ACCESS_KEY_ID\": \"\",\n    \"AWS_SECRET_ACCESS_KEY\": \"\",\n    \"SNS_IOS_APPLICATION_ARN\": \"test_ios_arn\",\n    \"SNS_IOS_SANDBOX_ENABLED\": False,\n    \"SNS_ANDROID_APPLICATION_ARN\": \"test_android_arn\",\n    \"LOG_SENT_MESSAGES\": False,  # False by default.\n    \"DEFAULT_SOUND\": \"\",\n    \"DEVICE_MODEL\": \"module_name.Device\",\n}\n```\n\nYou cannot change the DEVICE_MODEL setting during the lifetime of a project (i.e. once you have made and migrated models that depend on it) without serious effort. The model it refers to must be available in the first migration of\nthe app that it lives in.\n\n5. Create migrations for newly created Device model and migrate.\n\n**Note:** django_sloop's migrations must run after your Device is created. If you run into a problem while running migrations add following to the your migration file where the Device is created.\n```\nrun_before = [\n   ('django_sloop', '0001_initial'),\n]\n```\n\n6. Add django_sloop.models.PushNotificationMixin to your User model.\n```python\nclass User(PushNotificationMixin, ...):\n    pass\n\nuser.send_push_notification_async(message=\"Sample push notification.\")\n\n```\n\n\n7. Add django_sloop.admin.SloopAdminMixin to your UserAdmin to enable sending push messages to users from Django admin panel.\n\n```python\n# admin.py\n\nfrom django_sloop.admin import SloopAdminMixin\nfrom django.contrib import admin\n\nclass UserAdmin(SloopAdminMixin, admin.ModelAdmin):\n    \n    actions = (\"send_push_notification\", )\n    \n```\n\n8. Add django rest framework urls to create and delete device.\n\n```python\n# urls.py\nfrom django.urls import path\nfrom django.urls import include\n\nurlpatterns = [\n    # ...\n    path('api/devices/', include('django_sloop.urls')),\n    # ...\n]\n```\n\nDone!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhipo%2Fdjango-sloop","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhipo%2Fdjango-sloop","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhipo%2Fdjango-sloop/lists"}