Все новости
Опубликовано 20.08.2026

Тестовая новость

Описание тестовой новости
Тестовая новость

REST API — Замена GraphQL для кабинета /my/

Изменения

  • Создана структура backend/{app}/rest/ (viewsets/, serializers/, filters/) в 10 приложениях
  • Все viewset’ы зарегистрированы в backend/config/urls.py (router + DefaultRouter)
  • GraphQL (/graphql/) продолжает работать — старый код не затронут

1. Профиль пользователя

App: users

GET /api/profile/me/

Замена UserProfile (profile).

{
  "id": 1,
  "enter_with_password": false,
  "phone": "+7...",
  "username": "...",
  "telegram_nickname": "",
  "email": "...",
  "first_name": "...",
  "last_name": "...",
  "patronymic": "...",
  "additional_last_name": "",
  "additional_first_name": "",
  "additional_patronymic": "",
  "additional_phone": "",
  "additional_email": "",
  "phone_two": "",
  "ad_agreement": true
}

PATCH /api/profile/update_me/

Замена мутации UserProfile (update). Body: любые поля из списка выше (кроме id, phone, username).

POST /api/profile/logout/

Замена мутации logout. Response: {"ok": true}


2. Страницы кабинета (хедеры)

App: users

GET /api/stage-dealing-page/

Замена stageDealingPage.

{
  "title": "...",
  "sub_title": "...",
  "image_dealing": [],
  "image_dealing_mobile": []
}

GET /api/stage-mortgage-page/

Замена stageMortgagePage.

{
  "title": "...",
  "sub_title": "...",
  "image_mortgage": [],
  "image_mortgage_mobile": []
}

3. Избранное

App: favorites

Будет делать в другой таске

4. Сделки

App: deals

Будет сделано в другой таске


5. Бронирования

App: online_booking

GET /api/cabinet-bookings/

Замена getBooked, getUserBookingRequests. Auth: IsAuthenticated, фильтр по user.

GET /api/cabinet-bookings/{uuid}/

Замена getOnlineBooking(id_booked).

GET /api/pre-booking-disclaimer/

Замена PreBookingDisclaimer.


6. Офисы

App: offices

GET /api/offices/

Замена allOffices. Только активные офисы.

[
  {
    "id": 1,
    "is_central": true,
    "is_combined": false,
    "name": "",
    "address": "...",
    "coords": "...",
    "phone": "...",
    "email": "...",
    "hours": [
      {"days": "Пн-Пт", "open_at": "09:00", "close_at": "20:00", "is_free_day": false}
    ]
  }
]

7. Динамика строительства

App: progress

GET /api/progress/

Замена allProgress.

[
  {
    "id": 1,
    "date": "2026-06-01",
    "project": 1,
    "cover": "url",
    "images": [
      {"id": 1, "file": "url", "name": "Фото", "buildings": [1, 2]}
    ]
  }
]

GET /api/webcams/

Замена allWebcams.

GET /api/aerophotos/

Замена allAerophotos.


8. Секции корпуса

App: buildings

GET /api/sections/?building=uuid

Замена allSections. Фильтр по building_id.


9. Ипотечный калькулятор

App: mortgage

GET /api/mortgage-calculator-page/

Замена mortgageCalculatorPage.

{
  "initial_mortgage_term": 30,
  "initial_mortgage_deposit": "20.00",
  "initial_mortgage_program_category": 1
}

10. Альбомы изображений проекта

App: projects

GET /api/album-images/?project=slug

Замена allProjectImageAlbums.


11. Счётчики и рекомендации

App: properties

GET /api/property-counts/

Замена flatFacets, storageFacets, parkingFacets (только count).

[
  {"typename": "FlatType", "count": 42},
  {"typename": "ParkingType", "count": 15},
  {"typename": "StorageType", "count": 8}
]

12. Акции

App: promos

GET /api/cabinet-promos/?project=slug

Замена allPromos (AllPromosQuery). Фильтры: project (slug проекта), month (М/ГГГГ). Queryset повторяет GraphQL-резолвер: published().with_month().timeframed(). Поля повторяют PromoType (snake_case): id, pk, crm_id, title, tag_name, sub_title, slug, start, end, legal_info, video, show_timer, short_description, description, link, request_form, time_scrolling, timer_text, show_with_promo, tooltip, show_tooltip, preview, popup_image, image_card, image_two_card, image_one_card, video_card, video_two_card, video_one_card, tags[{id, name}], mobile_tag{id, name}, history_slides[], projects[{slug, title}]. description/short_description и тексты слайдов проходят через get_text_after_mortgage_converter, как в GraphQL.


Уже существующие (не изменялись)

Endpoint GraphQL
/api/project/ detailLivingProject
/api/flat/ flatFacets, flats
/api/parking/ parkingFacets
/api/storage/ storageFacets
/api/finish-type/ finishingSpecs
/api/bank/ allBanks
/api/mortgage-programm/ allMortgageProgramCategory
/api/mortgage-offer/ allMortgageOffers, mortgageOfferSpecs, mortgageOfferFacets
/api/promotions/ панельный CRUD, портал не использует (AllPromosQuery → /api/cabinet-promos/)
/api/booking_documents/ Документы бронирования
Эпоха Колонизации © 2026 · Приватный Minecraft RP сервер