{"id":21522286,"url":"https://github.com/andmerk93/django-test","last_synced_at":"2026-04-14T06:02:47.018Z","repository":{"id":191954042,"uuid":"685744274","full_name":"andmerk93/django-test","owner":"andmerk93","description":"Django + DRF + celery + summernote + импорт/экспорт Excel + PyOWM  (сторонняя API) + tresuremap (работа с картами)  + constance + docker","archived":false,"fork":false,"pushed_at":"2023-10-16T18:36:35.000Z","size":59,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-17T17:23:21.828Z","etag":null,"topics":["celery","constance","django","django-rest-framework","docker","docker-compose","excel","pyowm","python","summernote","treasuremap"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/andmerk93.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,"governance":null}},"created_at":"2023-08-31T23:06:08.000Z","updated_at":"2023-10-16T18:41:55.000Z","dependencies_parsed_at":"2023-10-15T19:29:15.488Z","dependency_job_id":null,"html_url":"https://github.com/andmerk93/django-test","commit_stats":null,"previous_names":["andmerk93/django-test"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/andmerk93/django-test","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andmerk93%2Fdjango-test","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andmerk93%2Fdjango-test/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andmerk93%2Fdjango-test/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andmerk93%2Fdjango-test/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/andmerk93","download_url":"https://codeload.github.com/andmerk93/django-test/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andmerk93%2Fdjango-test/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":267061736,"owners_count":24029525,"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-07-25T02:00:09.625Z","response_time":70,"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":["celery","constance","django","django-rest-framework","docker","docker-compose","excel","pyowm","python","summernote","treasuremap"],"created_at":"2024-11-24T01:09:52.423Z","updated_at":"2026-04-14T06:02:46.964Z","avatar_url":"https://github.com/andmerk93.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# django-test\n\n## Описание \nПроект на Django с множеством различных улучшений. Сделан в качестве тестового задания в сентябре 2023.\n\n## Возможности\n- Аутентификация пользователей по токену\n- Разделение прав доступа пользователей к разным действиям (`permissions`)\n- Каждый пользователь может редактировать и удалять свои записи (свой пермишен)\n- Наделение пользователей правами модерирования и администрирования\n- Удобная панель администрирования, на русском (требует создание пользователя с правами администратора, средствами движка Django)\n- Получение, создание, обновление и удаление записей\n- Используется пагинация записей \n- Просмотр и редактирование записей с rich-текстом в админке (`summernote`)\n- Импорт Примечательных мест из xlsx-файла с данными (путём отправки на эндпоинт, `openpyxl`)\n- Просмотр и редактирование Примечательных мест в админке (`tresuremap`)\n- Получение Сводки погоды в Примечательном месте (GET-запрос на эндпоинт, `pyowm`, нужен API-токен)\n- Просмотр Сводки погоды в админке с фильтром по дате снятия показаний\n- Экспорт Сводки погоды в xlsx-файл с фильтром по Примечательному месту и дате снятия показаний (GET-запрос + query-параметры на эндпоинт, `xlsxWriter`)\n- Возможность выполнения периодических задач (`celery`)\n- Работает в `Docker`-контейнерах и в `venv`\n\n\n## Технические подробности\n\nДля просмотра списка эндпоинтов просто перейдите на главную страницу проекта. \n\nСтруктура записи:\n```\n\"id\": 3,\n\"thumbnail\": \"url\",\n\"title\": \"Title\",\n\"image\": \"url\",\n\"text\": \"Text\",\n\"date\": \"2023-09-04, 06:08:20\",\n\"author\": \"admin\"\n```\n\nСтруктура примечательного места:\n```\n\"id\": 1,\n\"title\": \"Birmingem\",\n\"rating\": 10,\n\"author\": \"admin\",\n\"latitude\": 52.484227,\n\"longitude\": -1.691047\n```\n\nСтруктура сводки погоды:\n```\n\"id\": 31,\n\"temper\": 15.2,         # Температура по шкале Цельсия\n\"humidity\": 87.0,       # Влажность воздуха, в %\n\"pressure\": 768,        # Атмосферное давление, в мм ртутного столба\n\"wind_direction\": 123,  # Направление ветра, градусы\n\"wind_speed\": 1.53,     # Скорость ветра, в м/с\n\"place\": \"Birmingem\",   # Название места\n\"author\": \"admin\"       # Пользователь, автор запроса\n```\n\nСтруктура таблицы для импорта примечательных мест в xlsx:\n\n| title  | latitude  | longitude | rating |\n|--------|-----------|-----------|--------|\n| Berlin | 52.518368 | 13.374546 | 12     |\n| Paris  | 48.856664 | 2.350803  | 14     |\n| Madrid | 40.418711 | -3.713149 | 16     |\n| Vienna | 48.206335 | 16.362918 | 20     |\n| Rome   | 41.902653 | 12.495441 | 20     |\n\nСтруктура таблицы экспорта сводок погоды за определенную дату в xlsx:\n\n| id | temper | humidity | pressure | wind_direction | wind_speed | place     | author |\n|----|--------|----------|----------|----------------|------------|-----------|--------|\n| 17 | 19,78  | 68       | 759      | 110            | 2,57       | Birmingem | admin  |\n| 18 | 19,78  | 68       | 759      | 110            | 2,57       | Birmingem | admin  |\n| 19 | 17,91  | 78       | 760      | 60             | 2,06       | Birmingem | admin  |\n| 20 | 16,79  | 83       | 760      | 30             | 2,06       | Birmingem | admin  |\n| 21 | 16,65  | 83       | 760      | 30             | 2,06       | Birmingem | admin  |\n\nДля авторизации нужно послать post-запрос на эндпоинт `token` с json-параметрами вида\n```\n{\n  \"username\": \"admin\",\n  \"password\": \"admin\"\n}\n```\n\nДля последующей аутентификации нужно добавлять в запросы HTTP-заголовок вида:\n```\nAuthorization: Token 72c5c4148399532c95b8e45c73280e007e9438c2\n```\n\nЧтобы получить погоду в примечательном месте в данный момент, нужно отправить GET-запрос на эндпоинт вида\n`/api/weather/current/{place_name}/`\n\nЧтобы получить xlsx-файл со сводками погоды в примечательном месте за определённую дату, нужно отправить GET-запрос на эндпоинт вида\n`/api/weather/current/{place_name}/?date=YYYY-MM-DD`\n\nЧтобы импортировать список примечательных мест из xlsx-файла, нужно отправить POST-запрос на эндпоинт\n`/api/place/import/`\nс добавлением HTTP-заголовка вида\n```\nContent-Disposition: attachment; filename=import.xlsx\n```\n\n## Требования:\n- Python 3\n- Django 4.2.4\n- djangorestframework 3.14.0\n- sorl-thumbnail 12.9.0\n- sorl-thumbnail-serializer-field 0.2.1\n- django-treasuremap 0.3.4\n- django-summernote 0.8.20.0\n- django-constance 3.1.0\n- XlsxWriter 3.1.2\n- openpyxl 3.1.2\n- pyowm 3.3.0\n- python-dotenv 1.0.0\n- celery 5.3.4\n- psycopg2-binary 2.9.9\n- и их зависимости (описано в requirements.txt)\n\n### Запуск в Docker Compose\n\nВ корневой директории нужно создать файл `.env` с переменными окружения для работы \nпо примеру файла `.env.sample`\n\nЗатем, запустить приложение в Docker-контейнерах:\n```\ndocker compose up -d\n```\n\nВыполнить миграции в приложении Django\n```\ndocker compose exec web python manage.py migrate\n```\n\nСоздать суперпользователя для входа в админку\n```\ndocker exec web python manage.py createsuperuser\n\nUsername (leave blank to use 'user'): # Придумайте логин (например, admin)\nEmail address:                        # укажите почту, опционально\nPassword:                             # придумайте пароль\nPassword (again):                     # повторите пароль\nSuperuser created successfully.\n```\n\nСохранить статичные файлы\n```\ndocker compose exec web python manage.py collectstatic\n```\n\nАдминка будет доступна по http://localhost/admin/\n\nFlower будет доступен по http://localhost/flower/\n\n\n### Установка и запуск в виртуальном окружении\n\nНа машине должен быть установлен Python актуальной версии (тестировалось на 3.11).\n\nКлонировать репозиторий на машину, с которой будет будет запускаться сервис \n```\ngit clone https://github.com/andmerk93/django-test.git\n```\nРазвернуть виртуальное окружение python в папке с проектом (django-test)\n```\npython3 -m venv venv\n```\nАктивировать виртуальное окружение для linux/unix\n```\nsource ./venv/bin/activate \n``` \nДля Windows, должно быть разрешено выполнение скриптов Powershell\n```\nvenv\\Scripts\\activate\n``` \nС запущенным виртуальным окружением нужно выполнить установку требуемых компонентов\n```\npip install -r ./django_test/requirements.txt\n```\n\nДля запуска нужно создать в корневой директории файл `.env` с переменными окружения для работы \nпо примеру файла `.env.sample`\n\n```\nSECRET_KEY=\"django-insecure-secret-key\"\nOWM_API_KEY=API10005000500205\nDJANGO_DEBUG=True\nDB_ENGINE=движок БД, если DJANGO_DEBUG не указан\nDB_NAME=имя инстанса БД\nDB_USER=юзер БД\nDB_PASSWORD=пароль\nDB_HOST=адрес хоста\nDB_PORT=порт\n```\n\nЗатем, перейти в директорию `django_test`, дальнейшие действия выполнять отсюда\n```\ncd .\\django_test\\\n```\n\nВыполнить миграции (из виртуального окружения)\n```\npython .\\manage.py migrate\n```\nИ запустить проект\n```\npython .\\manage.py runserver 80\n```\n\nТестовый сервер поднимется и будет доступен по http://localhost/\n\n\nДля создания суперюзера нужно выполнить команду (из вирт. окружения) и следовать инструкциям\n```\npython .\\manage.py createsuperuser\n```\n\nДля работы `celery` нужно запустить базу данных `Redis` в контйенере:\n```\ndocker run -d -p 6379:6379 redis\n```\n\nПодключить обрабочик задач:\n```\ncelery -A django_test worker --loglevel=info\n```\n\nПодключить планировщик периодических задач:\n```\ncelery -A django_test beat --loglevel=info\n```\n\n\n### TODO:\n- django-celery-beat\n- auto swagger\n- proxy для flower","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandmerk93%2Fdjango-test","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fandmerk93%2Fdjango-test","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandmerk93%2Fdjango-test/lists"}