{"id":20589549,"url":"https://github.com/nankuf/photoalbum","last_synced_at":"2026-04-22T13:31:25.469Z","repository":{"id":127739286,"uuid":"547904845","full_name":"NankuF/photoalbum","owner":"NankuF","description":"Photo album created with Django and DRF","archived":false,"fork":false,"pushed_at":"2022-10-08T16:57:44.000Z","size":72,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-06T13:33:44.236Z","etag":null,"topics":["coverage","django","django-rest-framework","python39"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/NankuF.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-10-08T14:32:33.000Z","updated_at":"2022-10-08T14:34:20.000Z","dependencies_parsed_at":null,"dependency_job_id":"8b483842-bd0d-46f1-83d0-98add6be42bc","html_url":"https://github.com/NankuF/photoalbum","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/NankuF/photoalbum","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NankuF%2Fphotoalbum","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NankuF%2Fphotoalbum/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NankuF%2Fphotoalbum/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NankuF%2Fphotoalbum/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/NankuF","download_url":"https://codeload.github.com/NankuF/photoalbum/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NankuF%2Fphotoalbum/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32139091,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-22T13:27:12.868Z","status":"ssl_error","status_checked_at":"2026-04-22T13:26:44.791Z","response_time":58,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["coverage","django","django-rest-framework","python39"],"created_at":"2024-11-16T07:29:46.122Z","updated_at":"2026-04-22T13:31:25.450Z","avatar_url":"https://github.com/NankuF.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Фотоальбом\nТестовое задание на знание Django и DRF.\n\u003cdetails\u003e\n    \u003csummary\u003eЗадание\u003c/summary\u003e\nСделать фотоальбом на Django и DRF, покрыть тестами API запросы и модули - модульные и интеграционные тесты. Разработать только бэкенд-часть.\n\n- Название главного модуля - \"app\".\n- Должна быть стандартная админка Django.\n- Безопасность - пользователи не должны видеть чужие альбомы.\n- Регистрация и авторизация перед использованием, работа по токену.\n- manage.py команда для первоначального заполнения данными.\n- Файлы можно загружать не более определенного размера (5 мб) - форматы PNG (.png), JPEG (.jpg, *.jpeg).\n- Для альбома и фото должны быть еще нередактируемые пользователем поля - дата создания, у альбома также - количество фотографий в альбоме, автор (ID). Эти поля также должны возвращаться из API.\n- API методы должны начинаться с /api/v1/\n- Методы API:\n  - авторизация,\n  - регистрация,\n  - создать новый альбом (название), отредактировать альбом (название), получить список альбомов (возможные сортировки - по дате создания, по количеству фотографий в альбоме), получить один альбом, удалить альбом.\n  - загрузить фотографию в альбом (название, список тегов, файл), изменить фотографию в альбоме (название, список тегов), удалить фотографию из альбома, получить список фотографий (возможные фильтры - альбом, тег, возможные сортировки - по дате, по альбому), получить фотографию.\n- При запросе фотографий из альбома должны возвращаться не только оригинальные размеры, но и уменьшенные копии - 150 пикселей по бОльшей стороне.\n- Подключить документацию DRF.\n- Покрыть вышеперечисленное тестами.\n- Должно проходить pylint (кодстайл должен быть pep8, ошибок не должно быть, coverage должен быть больше или равен 90%).\n- Лицевую часть делать не надо - только REST и админка.\n\u003c/details\u003e\n\n---\n# Визуальная проверка\n### Запуск\n##### Выполнить последовательно команды\n```commandline\ncd photoalbum/app\n```\nсоздать файл `.env` внутри `photoalbum/app/`\n```text\nSECRET_KEY=django-insecure-^dqzg8p!j@6gen7m7==43+9a9u^f_t$\u0026_h5w1m)j5+8qlpq!g+\nDEBUG=True\n```\n```commandline\npython 3 -m venv venv\n```\n```commandline\n. ./venv/bin/activate\n```\n```commandline\npip install -r requirements.txt\n```\n```commandline\npython manage.py makemigrations\n```\n```commandline\npython manage.py migrate\n```\n```commandline\nmkdir -p media/images\n```\n```commandline\npython manage.py fill_db\n```\n```commandline\npython manage.py runserver\n```\n---\n#### Вход через админку\nlogin: admin\u003cbr\u003e\npassword: 123\n```commandline\nhttp://127.0.0.1:8000/admin/\n```\n---\n#### Вход через браузерный api\n```commandline\nhttp://127.0.0.1:8000/api/v1/\n```\nНажать `login` и ввести логин и пароль для админа.\n\nЧтобы войти под другим юзером необходимо:\n1. Зайти в админку под админом.\n2. Выбрать пользователя в разделе `Пользователи`.\n3. Cменить пароль пользователю.\n4. Разлогиниться\n5. Войти под логином и паролем выбранного пользователя \n```text\nhttp://127.0.0.1:8000/api/v1/\n```\n---\n## Методы\n### Регистрация\n```text\ncurl -d \"username=braundiane\u0026password=zxcvbnm,./123\" -X POST http://localhost:8000/api/v1/auth/users/\n```\n### Авторизация\n**Запрос по этому адресу вернет токен авторизации, который необходимо использовать во всех дальнейших запросах.**\n```text\ncurl -d \"username=braundiane\u0026password=zxcvbnm,./123\" -X POST http://localhost:8000/auth/token/login/\n```\nВ браузере можно залогиниться по этому адресу:\n```text\nhttp://127.0.0.1:8000/api/v1/drf-authlogin/\n```\n\n## Методы работы с альбомом\n### Создать новый альбом\n```text\ncurl -d \"title=new\" -H \"Authorization:Token 1f375e908a531cb3ee8297ecbda433ef874b4832\" -X POST http://127.0.0.1:8000/api/v1/albums/\n```\n### Список альбомов\n```text\ncurl -H \"Authorization:Token 1f375e908a531cb3ee8297ecbda433ef874b4832\" http://localhost:8000/api/v1/albums/\n```\n### Список альбомов с сортировкой по убыванию даты создания\n```text\ncurl -H \"Authorization:Token 1f375e908a531cb3ee8297ecbda433ef874b4832\" http://127.0.0.1:8000/api/v1/albums/?ordering=-created\n```\nДоступные варианты сортировки:\u003cbr\u003e\n`ordering=created` - по возрастанию\u003cbr\u003e\n`ordering=-created` - по убыванию\u003cbr\u003e\n`ordering=images_count` - кол-во фотографий по возрастанию\u003cbr\u003e\n`ordering=-images_count` - кол-во фотографий по убыванию\u003cbr\u003e\nДоступные варианты фильтрации:\u003cbr\u003e\n`created=04.10.2022`  - дата создания\u003cbr\u003e\n`created_gte=04.10.2022 14:55:01` - дата создания больше или равно\u003cbr\u003e\n`created_lte=` - дата создания меньше или равно\u003cbr\u003e\n`created_gt=` - дата создания больше чем\u003cbr\u003e\n`created_lt=` - дата создания меньше чем\u003cbr\u003e\n`images_count=1` - количество фото в альбоме\u003cbr\u003e\n`images_count_gte=` - Количество фото в альбоме больше или равно\u003cbr\u003e\n`images_count_lte=` - Количество фото в альбоме меньше или равно\u003cbr\u003e\n`images_count_gt=` - Количество фото в альбоме больше чем\u003cbr\u003e\n`images_count_lt=` - Количество фото в альбоме меньше чем\u003cbr\u003e\n### Список альбомов с сортировкой и фильтрацией\n```text\ncurl -H \"Authorization:Token 1f375e908a531cb3ee8297ecbda433ef874b4832\" http://127.0.0.1:8000/api/v1/albums/?created=\u0026created_gt=\u0026created_gte=\u0026created_lt=04.10.2022\u0026ordering=created\n```\n### Получить один альбом\n```text\ncurl -H \"Authorization:Token 1f375e908a531cb3ee8297ecbda433ef874b4832\" http://localhost:8000/api/v1/albums/25/\n```\n### Переименовать альбом\n```text\ncurl -d \"title=new_new\" -H \"Authorization:Token 1f375e908a531cb3ee8297ecbda433ef874b4832\" -X PUT http://localhost:8000/api/v1/albums/25/\n```\n### Удалить альбом\n```text\ncurl -H \"Authorization:Token 1f375e908a531cb3ee8297ecbda433ef874b4832\" -X DELETE http://localhost:8000/api/v1/albums/25/\n```\n\n## Методы работы с фотографией смотрите в документации swagger\n```text\nhttp://127.0.0.1:8000/swagger/\n```\n---\n# Тесты\n```commandline\ncoverage run manage.py test \u0026\u0026 coverage report\n```\n```text\nName                                         Stmts   Miss  Cover\n----------------------------------------------------------------\napp/__init__.py                                  0      0   100%\napp/settings.py                                 29      0   100%\napp/urls.py                                     16      1    94%\nmanage.py                                       12      2    83%\nphotoalbum/__init__.py                           0      0   100%\nphotoalbum/admin.py                             38     17    55%\nphotoalbum/apps.py                               6      0   100%\nphotoalbum/filters.py                           24      0   100%\nphotoalbum/management/__init__.py                0      0   100%\nphotoalbum/management/commands/__init__.py       0      0   100%\nphotoalbum/migrations/0001_initial.py            9      0   100%\nphotoalbum/migrations/__init__.py                0      0   100%\nphotoalbum/models.py                            65      9    86%\nphotoalbum/serializers.py                       19      3    84%\nphotoalbum/signals.py                           21      2    90%\nphotoalbum/tests.py                             94      0   100%\nphotoalbum/views.py                             25      1    96%\n----------------------------------------------------------------\nTOTAL                                          358     35    90%\n\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnankuf%2Fphotoalbum","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnankuf%2Fphotoalbum","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnankuf%2Fphotoalbum/lists"}