diff --git a/makefile b/makefile index b93afc6..fd636f5 100644 --- a/makefile +++ b/makefile @@ -1,6 +1,6 @@ VENV=source ./.venv/bin/activate; ALEMBIC=alembic -c ./server/backend/database/alembic/alembic.ini -.PHONY: run run_debug migrate_head migrate_down migrate_history migrate_current migrate +.PHONY: run run_debug migrate_head migrate_down migrate_history migrate_current migrate_heads migrate_stamp migrate run: $(VENV) python run.py --user_name admin run_debug: @@ -13,5 +13,9 @@ migrate_history: $(VENV) $(ALEMBIC) history migrate_current: $(VENV) $(ALEMBIC) current +migrate_heads: + $(VENV) $(ALEMBIC) heads +migrate_stamp: + $(VENV) $(ALEMBIC) stamp head migrate: $(VENV) $(ALEMBIC) revision --autogenerate \ No newline at end of file diff --git a/run.py b/run.py index a206b50..5b16ec5 100644 --- a/run.py +++ b/run.py @@ -8,6 +8,7 @@ async def init_admin(user_name: str): admin_user = { "code": "123456", "name": user_name, + "middlename": user_name, "surname": user_name, "admin": True } diff --git a/server/backend/database/alembic/alembic/versions/15b87c1584bf_.py b/server/backend/database/alembic/alembic/versions/15b87c1584bf_.py new file mode 100644 index 0000000..eeb7d86 --- /dev/null +++ b/server/backend/database/alembic/alembic/versions/15b87c1584bf_.py @@ -0,0 +1,32 @@ +"""empty message + +Revision ID: 15b87c1584bf +Revises: 2e39b25a3b28 +Create Date: 2026-03-13 22:53:40.498042 + +""" +from typing import Sequence, Union + +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision: str = '15b87c1584bf' +down_revision: Union[str, Sequence[str], None] = 'dd476c0dcf61' +branch_labels: Union[str, Sequence[str], None] = None +depends_on: Union[str, Sequence[str], None] = None + + +def upgrade() -> None: + """Upgrade schema.""" + # ### commands auto generated by Alembic - please adjust! ### + op.drop_column('users', 'food') + # ### end Alembic commands ### + + +def downgrade() -> None: + """Downgrade schema.""" + # ### commands auto generated by Alembic - please adjust! ### + op.add_column('users', sa.Column('food', sa.BOOLEAN(), nullable=True)) + # ### end Alembic commands ### diff --git a/server/backend/database/alembic/alembic/versions/1fa13c2c4df4_.py b/server/backend/database/alembic/alembic/versions/1fa13c2c4df4_.py new file mode 100644 index 0000000..9f03e88 --- /dev/null +++ b/server/backend/database/alembic/alembic/versions/1fa13c2c4df4_.py @@ -0,0 +1,32 @@ +"""empty message + +Revision ID: 1fa13c2c4df4 +Revises: 15b87c1584bf +Create Date: 2026-03-13 22:56:36.115487 + +""" +from typing import Sequence, Union + +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision: str = '1fa13c2c4df4' +down_revision: Union[str, Sequence[str], None] = '15b87c1584bf' +branch_labels: Union[str, Sequence[str], None] = None +depends_on: Union[str, Sequence[str], None] = None + + +def upgrade() -> None: + """Upgrade schema.""" + # ### commands auto generated by Alembic - please adjust! ### + op.add_column('users', sa.Column('type_of_food', sa.String(), nullable=True)) + # ### end Alembic commands ### + + +def downgrade() -> None: + """Downgrade schema.""" + # ### commands auto generated by Alembic - please adjust! ### + op.drop_column('users', 'type_of_food') + # ### end Alembic commands ### diff --git a/server/backend/database/alembic/alembic/versions/55f24e794643_.py b/server/backend/database/alembic/alembic/versions/55f24e794643_.py new file mode 100644 index 0000000..9bef888 --- /dev/null +++ b/server/backend/database/alembic/alembic/versions/55f24e794643_.py @@ -0,0 +1,32 @@ +"""empty message + +Revision ID: 55f24e794643 +Revises: 1fa13c2c4df4 +Create Date: 2026-03-13 23:03:47.236864 + +""" +from typing import Sequence, Union + +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision: str = '55f24e794643' +down_revision: Union[str, Sequence[str], None] = '1fa13c2c4df4' +branch_labels: Union[str, Sequence[str], None] = None +depends_on: Union[str, Sequence[str], None] = None + + +def upgrade() -> None: + """Upgrade schema.""" + # ### commands auto generated by Alembic - please adjust! ### + op.add_column('users', sa.Column('middlename', sa.String(), nullable=True)) + # ### end Alembic commands ### + + +def downgrade() -> None: + """Downgrade schema.""" + # ### commands auto generated by Alembic - please adjust! ### + op.drop_column('users', 'middlename') + # ### end Alembic commands ### diff --git a/server/backend/database/alembic/alembic/versions/dd476c0dcf61_.py b/server/backend/database/alembic/alembic/versions/dd476c0dcf61_.py new file mode 100644 index 0000000..fc899e8 --- /dev/null +++ b/server/backend/database/alembic/alembic/versions/dd476c0dcf61_.py @@ -0,0 +1,32 @@ +"""empty message + +Revision ID: dd476c0dcf61 +Revises: 1e2bd98e74a5 +Create Date: 2026-03-13 22:38:32.065614 + +""" +from typing import Sequence, Union + +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision: str = 'dd476c0dcf61' +down_revision: Union[str, Sequence[str], None] = '1e2bd98e74a5' +branch_labels: Union[str, Sequence[str], None] = None +depends_on: Union[str, Sequence[str], None] = None + + +def upgrade() -> None: + """Upgrade schema.""" + # ### commands auto generated by Alembic - please adjust! ### + op.drop_column('users', 'alco') + # ### end Alembic commands ### + + +def downgrade() -> None: + """Downgrade schema.""" + # ### commands auto generated by Alembic - please adjust! ### + op.add_column('users', sa.Column('alco', sa.BOOLEAN(), nullable=True)) + # ### end Alembic commands ### diff --git a/server/backend/database/db.py b/server/backend/database/db.py index f67f4dc..a784c24 100644 --- a/server/backend/database/db.py +++ b/server/backend/database/db.py @@ -23,11 +23,11 @@ class User(Base): code = Column(String, unique=True, nullable=True) name = Column(String, nullable=True) + middlename=Column(String, nullable=True) surname = Column(String, nullable=True) text_field = Column(String, nullable=True) - food = Column(Boolean) - alco = Column(Boolean) - types_of_alco = Column(String, default="Nothing") + type_of_food = Column(String, nullable=True) + types_of_alco = Column(String, default="Nothing", nullable=True) activated = Column(Boolean) created_at = Column(DateTime(timezone=True), server_default=func.now()) diff --git a/server/backend/schema/pydantic.py b/server/backend/schema/pydantic.py index ef02553..8cfdc5e 100644 --- a/server/backend/schema/pydantic.py +++ b/server/backend/schema/pydantic.py @@ -2,6 +2,7 @@ from pydantic import BaseModel, Field, field_validator from pydantic_settings import BaseSettings, SettingsConfigDict from pydantic.types import StringConstraints from typing_extensions import Annotated +from typing import Optional import re NameStr = Annotated[ @@ -23,16 +24,18 @@ class UserOut(BaseModel): name: NameStr = Field(..., description="Name of the guest") surname: NameStr = Field(..., description="Surname of the guest") -class UserUpdate(UserAccess): - name: NameStr = Field(..., description="Name of the guest") - surname: NameStr = Field(..., description="Surname of the guest") - text_field: str = Field("", max_length=500, description="what the guest wants") - activated: bool = Field(False, description="activation of the guest") - food: bool = Field(False, description="Options meat or fish") - alco: bool = Field(False, description="if the guest will drink alco or not") - types_of_alco: str = Field("", description="types of alco") +class UserUpdate(BaseModel): + code: Optional[str] = Field(None, min_length=6, max_length=6, description="Code of the guest") + name: Optional[NameStr] = Field(None, description="Name of the guest") + middlename: Optional[NameStr] = Field(None, description="Middlename of the guest") + surname: Optional[NameStr] = Field(None, description="Surname of the guest") + text_field: Optional[str] = Field(None, max_length=500, description="what the guest wants") + activated: Optional[bool] = Field(None, description="activation of the guest") + type_of_food: Optional[str] = Field(None, description="meat or fish") + types_of_alco: Optional[str] = Field(None, description="types of alco") class UserCreate(UserUpdate): + code: str = Field(..., min_length=6, max_length=6, description="Code of the guest") admin:bool = Field(False, description="Admin privilegies") class Settings(BaseSettings): DIR:str diff --git a/server/frontend/auth/login.css b/server/frontend/auth/login.css new file mode 100644 index 0000000..e69de29 diff --git a/server/frontend/auth/login.html b/server/frontend/auth/login.html new file mode 100644 index 0000000..33bdf92 --- /dev/null +++ b/server/frontend/auth/login.html @@ -0,0 +1,21 @@ + + + + + + Login + + + +
+
+

Login

+
+ + +
+
+
+ + + \ No newline at end of file diff --git a/server/frontend/auth/login.js b/server/frontend/auth/login.js new file mode 100644 index 0000000..b16f236 --- /dev/null +++ b/server/frontend/auth/login.js @@ -0,0 +1,74 @@ +function getToken() { + return localStorage.getItem("token") || sessionStorage.getItem("token"); +} +function tokenCheck(){ + const token = getToken(); + if (token) { + window.location.href = "http://localhost:5500/server/frontend/main/index.html"; + } +} +document.getElementById('loginForm').addEventListener('submit', async function (e) { + e.preventDefault(); + const password = document.getElementById('password').value; + const userData = { + password + }; + try { + const response = await fetch("http://localhost:8000/api/auth", { + method: "POST", + headers: { + "Content-Type": "application/x-www-form-urlencoded", + }, + body: new URLSearchParams({ + password: userData.password + }), + }); + + const data = await response.json(); // читаем только один раз + if (response.ok) { // сохраняем только при успехе + // в sessionstorage до перезахода в браузер( + sessionStorage.setItem("token", data.access_token); + + window.location.href = 'http://localhost:5500/server/frontend/main/index.html'; + } else { //парсинг и вывод ошибок, если есть + if (Array.isArray(data.detail)) { + const messages = data.detail.map(e => { + const field = e.loc.filter(locPart => locPart !== 'body').join(' -> '); + return `${field}: ${e.msg}`; + }); + showError(messages); + } else if (typeof data.detail === 'string') { + showError([data.detail]); + } else { + showError(['Unknown error']); + } + } + } catch (err) { + showError(['Connection error: ' + err.message]); + } +}); +function showError(messages){ //Добавление их на form со стилями + let errorElem = document.getElementById('formError'); + let container = document.getElementById('glass-container'); + if (!errorElem){ + errorElem = document.createElement('div'); + errorElem.style.transition="3s"; + errorElem.id = 'formError'; + errorElem.style.color = 'red'; + errorElem.style.marginTop = '20px'; + errorElem.style.fontSize = '14px'; + errorElem.style.fontWeight = '100'; + errorElem.style.marginBottom = '20px'; + errorElem.style.lineHeight="120%"; + errorElem.style.height = 'auto'; + const form = document.getElementById('loginForm'); + form.insertAdjacentElement('afterend', errorElem); + }; + errorElem.innerHTML = ''; + messages.forEach(msg => { + const li = document.createElement('li'); + li.style.listStyleType="none"; + li.textContent = msg; + errorElem.appendChild(li); + }); +} \ No newline at end of file diff --git a/server/frontend/main/api.js b/server/frontend/main/api.js new file mode 100644 index 0000000..52e2bf3 --- /dev/null +++ b/server/frontend/main/api.js @@ -0,0 +1,69 @@ +function getToken() { + return localStorage.getItem("token") || sessionStorage.getItem("token"); +} +function tokenCheck(){ + const token = getToken(); + if (!token) { + window.location.href = "http://localhost:5500/server/frontend/auth/login.html"; + } +} + +tokenCheck() +document.getElementById('logoutForm').addEventListener('submit', async function (e) { + e.preventDefault(); + localStorage.removeItem("token"); + sessionStorage.removeItem("token"); + tokenCheck(); +}); + +document.addEventListener("DOMContentLoaded", () => { + const form = document.querySelector(".form-info"); + + form.addEventListener("submit", async (e) => { + e.preventDefault(); + // try { + // собираем данные из формы + const name = document.getElementById('ffname').value || ""; + const middlename = document.getElementById('fmname').value || ""; + const surname = document.getElementById('flname').value || ""; + const text_field = document.getElementById('text_field')?.value || ""; + const food = document.querySelector('input[name="food"]:checked')?.value || ""; + const types_of_alco = Array.from(document.querySelectorAll('input[name="drink"]:checked')) + .map(el => el.value) + .join(', '); + + const guestData = { + name: name, + middlename: middlename, + surname: surname, + text_field: text_field, + activated: true, + types_of_food: food, + types_of_alco: types_of_alco + }; + console.log(guestData) + + // отправка на /api/update с Authorization + // const updateResponse = await fetch('/api/update', { + // method: 'POST', + // headers: { + // 'Content-Type': 'application/json', + // 'Authorization': `Bearer ${token}` + // }, + // body: JSON.stringify(guestData) + // }); + + // if (!updateResponse.ok) { + // throw new Error('Ошибка при отправке формы'); + // } + + // const updateData = await updateResponse.json(); + // console.log('Форма успешно отправлена:', updateData); + + // } catch (err) { + // console.error(err); + // alert('Ошибка: ' + err.message); + // } + }); +}); + diff --git a/server/frontend/fonts/MurreyC/COPYRIGHT.txt b/server/frontend/main/fonts/MurreyC/COPYRIGHT.txt similarity index 100% rename from server/frontend/fonts/MurreyC/COPYRIGHT.txt rename to server/frontend/main/fonts/MurreyC/COPYRIGHT.txt diff --git a/server/frontend/fonts/MurreyC/murreyc.eot b/server/frontend/main/fonts/MurreyC/murreyc.eot similarity index 100% rename from server/frontend/fonts/MurreyC/murreyc.eot rename to server/frontend/main/fonts/MurreyC/murreyc.eot diff --git a/server/frontend/fonts/MurreyC/murreyc.ttf b/server/frontend/main/fonts/MurreyC/murreyc.ttf similarity index 100% rename from server/frontend/fonts/MurreyC/murreyc.ttf rename to server/frontend/main/fonts/MurreyC/murreyc.ttf diff --git a/server/frontend/fonts/MurreyC/murreyc.woff b/server/frontend/main/fonts/MurreyC/murreyc.woff similarity index 100% rename from server/frontend/fonts/MurreyC/murreyc.woff rename to server/frontend/main/fonts/MurreyC/murreyc.woff diff --git a/server/frontend/fonts/MurreyC/murreyc.woff2 b/server/frontend/main/fonts/MurreyC/murreyc.woff2 similarity index 100% rename from server/frontend/fonts/MurreyC/murreyc.woff2 rename to server/frontend/main/fonts/MurreyC/murreyc.woff2 diff --git a/server/frontend/images/1.jpg b/server/frontend/main/images/1.jpg similarity index 100% rename from server/frontend/images/1.jpg rename to server/frontend/main/images/1.jpg diff --git a/server/frontend/images/234.png b/server/frontend/main/images/234.png similarity index 100% rename from server/frontend/images/234.png rename to server/frontend/main/images/234.png diff --git a/server/frontend/images/236595.png b/server/frontend/main/images/236595.png similarity index 100% rename from server/frontend/images/236595.png rename to server/frontend/main/images/236595.png diff --git a/server/frontend/images/25.png b/server/frontend/main/images/25.png similarity index 100% rename from server/frontend/images/25.png rename to server/frontend/main/images/25.png diff --git a/server/frontend/images/360_F_782055879_otsYbwETI2WfPTGAdbLfuXdUjHB8bwBU.jpg b/server/frontend/main/images/360_F_782055879_otsYbwETI2WfPTGAdbLfuXdUjHB8bwBU.jpg similarity index 100% rename from server/frontend/images/360_F_782055879_otsYbwETI2WfPTGAdbLfuXdUjHB8bwBU.jpg rename to server/frontend/main/images/360_F_782055879_otsYbwETI2WfPTGAdbLfuXdUjHB8bwBU.jpg diff --git a/server/frontend/images/55555.jpg b/server/frontend/main/images/55555.jpg similarity index 100% rename from server/frontend/images/55555.jpg rename to server/frontend/main/images/55555.jpg diff --git a/server/frontend/images/56532 (2).png b/server/frontend/main/images/56532 (2).png similarity index 100% rename from server/frontend/images/56532 (2).png rename to server/frontend/main/images/56532 (2).png diff --git a/server/frontend/images/565656565.jpg b/server/frontend/main/images/565656565.jpg similarity index 100% rename from server/frontend/images/565656565.jpg rename to server/frontend/main/images/565656565.jpg diff --git a/server/frontend/images/Brown_Simple_Happy_Wedding_Photo_Collage.png b/server/frontend/main/images/Brown_Simple_Happy_Wedding_Photo_Collage.png similarity index 100% rename from server/frontend/images/Brown_Simple_Happy_Wedding_Photo_Collage.png rename to server/frontend/main/images/Brown_Simple_Happy_Wedding_Photo_Collage.png diff --git a/server/frontend/images/ChatGPT Image 5 янв. 2026 г., 15_49_39.png b/server/frontend/main/images/ChatGPT Image 5 янв. 2026 г., 15_49_39.png similarity index 100% rename from server/frontend/images/ChatGPT Image 5 янв. 2026 г., 15_49_39.png rename to server/frontend/main/images/ChatGPT Image 5 янв. 2026 г., 15_49_39.png diff --git a/server/frontend/images/ChatGPT Image 5 янв. 2026 г., 17_27_11.png b/server/frontend/main/images/ChatGPT Image 5 янв. 2026 г., 17_27_11.png similarity index 100% rename from server/frontend/images/ChatGPT Image 5 янв. 2026 г., 17_27_11.png rename to server/frontend/main/images/ChatGPT Image 5 янв. 2026 г., 17_27_11.png diff --git a/server/frontend/images/Dreamy Outdoor Wedding Under a Canopy of Lights .jpg b/server/frontend/main/images/Dreamy Outdoor Wedding Under a Canopy of Lights .jpg similarity index 100% rename from server/frontend/images/Dreamy Outdoor Wedding Under a Canopy of Lights .jpg rename to server/frontend/main/images/Dreamy Outdoor Wedding Under a Canopy of Lights .jpg diff --git a/server/frontend/images/backgraund_mai копия22.jpg b/server/frontend/main/images/backgraund_mai копия22.jpg similarity index 100% rename from server/frontend/images/backgraund_mai копия22.jpg rename to server/frontend/main/images/backgraund_mai копия22.jpg diff --git a/server/frontend/images/backgraund_main.jpg b/server/frontend/main/images/backgraund_main.jpg similarity index 100% rename from server/frontend/images/backgraund_main.jpg rename to server/frontend/main/images/backgraund_main.jpg diff --git a/server/frontend/images/bc6.jpg b/server/frontend/main/images/bc6.jpg similarity index 100% rename from server/frontend/images/bc6.jpg rename to server/frontend/main/images/bc6.jpg diff --git a/server/frontend/images/bg.jpg b/server/frontend/main/images/bg.jpg similarity index 100% rename from server/frontend/images/bg.jpg rename to server/frontend/main/images/bg.jpg diff --git a/server/frontend/images/bg1.jpg b/server/frontend/main/images/bg1.jpg similarity index 100% rename from server/frontend/images/bg1.jpg rename to server/frontend/main/images/bg1.jpg diff --git a/server/frontend/images/bg2.jpg b/server/frontend/main/images/bg2.jpg similarity index 100% rename from server/frontend/images/bg2.jpg rename to server/frontend/main/images/bg2.jpg diff --git a/server/frontend/images/icon.png b/server/frontend/main/images/icon.png similarity index 100% rename from server/frontend/images/icon.png rename to server/frontend/main/images/icon.png diff --git a/server/frontend/images/people/IMG_20260107_135956_402.jpg b/server/frontend/main/images/people/IMG_20260107_135956_402.jpg similarity index 100% rename from server/frontend/images/people/IMG_20260107_135956_402.jpg rename to server/frontend/main/images/people/IMG_20260107_135956_402.jpg diff --git a/server/frontend/images/people/IMG_20260107_140110_500.jpg b/server/frontend/main/images/people/IMG_20260107_140110_500.jpg similarity index 100% rename from server/frontend/images/people/IMG_20260107_140110_500.jpg rename to server/frontend/main/images/people/IMG_20260107_140110_500.jpg diff --git a/server/frontend/images/people/IMG_20260107_140120_301.jpg b/server/frontend/main/images/people/IMG_20260107_140120_301.jpg similarity index 100% rename from server/frontend/images/people/IMG_20260107_140120_301.jpg rename to server/frontend/main/images/people/IMG_20260107_140120_301.jpg diff --git a/server/frontend/images/photos/IMG_20260223_151005_128.jpg b/server/frontend/main/images/photos/IMG_20260223_151005_128.jpg similarity index 100% rename from server/frontend/images/photos/IMG_20260223_151005_128.jpg rename to server/frontend/main/images/photos/IMG_20260223_151005_128.jpg diff --git a/server/frontend/images/photos/IMG_20260223_151049_713.jpg b/server/frontend/main/images/photos/IMG_20260223_151049_713.jpg similarity index 100% rename from server/frontend/images/photos/IMG_20260223_151049_713.jpg rename to server/frontend/main/images/photos/IMG_20260223_151049_713.jpg diff --git a/server/frontend/images/telegram-svgrepo-com.svg b/server/frontend/main/images/telegram-svgrepo-com.svg similarity index 100% rename from server/frontend/images/telegram-svgrepo-com.svg rename to server/frontend/main/images/telegram-svgrepo-com.svg diff --git a/server/frontend/images/time/1.jpg b/server/frontend/main/images/time/1.jpg similarity index 100% rename from server/frontend/images/time/1.jpg rename to server/frontend/main/images/time/1.jpg diff --git a/server/frontend/images/time/2.jpg b/server/frontend/main/images/time/2.jpg similarity index 100% rename from server/frontend/images/time/2.jpg rename to server/frontend/main/images/time/2.jpg diff --git a/server/frontend/images/time/3.jpg b/server/frontend/main/images/time/3.jpg similarity index 100% rename from server/frontend/images/time/3.jpg rename to server/frontend/main/images/time/3.jpg diff --git a/server/frontend/images/time/ChatGPT Image 19 янв. 2026 г., 20_18_11.png b/server/frontend/main/images/time/ChatGPT Image 19 янв. 2026 г., 20_18_11.png similarity index 100% rename from server/frontend/images/time/ChatGPT Image 19 янв. 2026 г., 20_18_11.png rename to server/frontend/main/images/time/ChatGPT Image 19 янв. 2026 г., 20_18_11.png diff --git a/server/frontend/images/time/beverage_4137183.png b/server/frontend/main/images/time/beverage_4137183.png similarity index 100% rename from server/frontend/images/time/beverage_4137183.png rename to server/frontend/main/images/time/beverage_4137183.png diff --git a/server/frontend/images/time/cake.png b/server/frontend/main/images/time/cake.png similarity index 100% rename from server/frontend/images/time/cake.png rename to server/frontend/main/images/time/cake.png diff --git a/server/frontend/images/time/camera.png b/server/frontend/main/images/time/camera.png similarity index 100% rename from server/frontend/images/time/camera.png rename to server/frontend/main/images/time/camera.png diff --git a/server/frontend/images/time/disco-ball_1034052.png b/server/frontend/main/images/time/disco-ball_1034052.png similarity index 100% rename from server/frontend/images/time/disco-ball_1034052.png rename to server/frontend/main/images/time/disco-ball_1034052.png diff --git a/server/frontend/images/time/disco-ball_18181959.png b/server/frontend/main/images/time/disco-ball_18181959.png similarity index 100% rename from server/frontend/images/time/disco-ball_18181959.png rename to server/frontend/main/images/time/disco-ball_18181959.png diff --git a/server/frontend/images/time/food.png b/server/frontend/main/images/time/food.png similarity index 100% rename from server/frontend/images/time/food.png rename to server/frontend/main/images/time/food.png diff --git a/server/frontend/images/time/free-icon-fireworks-7201451.png b/server/frontend/main/images/time/free-icon-fireworks-7201451.png similarity index 100% rename from server/frontend/images/time/free-icon-fireworks-7201451.png rename to server/frontend/main/images/time/free-icon-fireworks-7201451.png diff --git a/server/frontend/images/time/glasses.png b/server/frontend/main/images/time/glasses.png similarity index 100% rename from server/frontend/images/time/glasses.png rename to server/frontend/main/images/time/glasses.png diff --git a/server/frontend/images/time/love-letter_6425091.png b/server/frontend/main/images/time/love-letter_6425091.png similarity index 100% rename from server/frontend/images/time/love-letter_6425091.png rename to server/frontend/main/images/time/love-letter_6425091.png diff --git a/server/frontend/images/time/love-world_18905915.png b/server/frontend/main/images/time/love-world_18905915.png similarity index 100% rename from server/frontend/images/time/love-world_18905915.png rename to server/frontend/main/images/time/love-world_18905915.png diff --git a/server/frontend/images/time/message_6649165.png b/server/frontend/main/images/time/message_6649165.png similarity index 100% rename from server/frontend/images/time/message_6649165.png rename to server/frontend/main/images/time/message_6649165.png diff --git a/server/frontend/images/time/ring.png b/server/frontend/main/images/time/ring.png similarity index 100% rename from server/frontend/images/time/ring.png rename to server/frontend/main/images/time/ring.png diff --git a/server/frontend/images/time/table.png b/server/frontend/main/images/time/table.png similarity index 100% rename from server/frontend/images/time/table.png rename to server/frontend/main/images/time/table.png diff --git a/server/frontend/images/time/wedding-dinner_11196102.png b/server/frontend/main/images/time/wedding-dinner_11196102.png similarity index 100% rename from server/frontend/images/time/wedding-dinner_11196102.png rename to server/frontend/main/images/time/wedding-dinner_11196102.png diff --git a/server/frontend/images/Без названия (1).jpg b/server/frontend/main/images/Без названия (1).jpg similarity index 100% rename from server/frontend/images/Без названия (1).jpg rename to server/frontend/main/images/Без названия (1).jpg diff --git a/server/frontend/images/Без названия (2).jpg b/server/frontend/main/images/Без названия (2).jpg similarity index 100% rename from server/frontend/images/Без названия (2).jpg rename to server/frontend/main/images/Без названия (2).jpg diff --git a/server/frontend/images/Без названия (3).jpg b/server/frontend/main/images/Без названия (3).jpg similarity index 100% rename from server/frontend/images/Без названия (3).jpg rename to server/frontend/main/images/Без названия (3).jpg diff --git a/server/frontend/images/Без названия.jpg b/server/frontend/main/images/Без названия.jpg similarity index 100% rename from server/frontend/images/Без названия.jpg rename to server/frontend/main/images/Без названия.jpg diff --git a/server/frontend/images/Элегантный свадебный банкет_ пастельные цветы и золотые детали.jpg b/server/frontend/main/images/Элегантный свадебный банкет_ пастельные цветы и золотые детали.jpg similarity index 100% rename from server/frontend/images/Элегантный свадебный банкет_ пастельные цветы и золотые детали.jpg rename to server/frontend/main/images/Элегантный свадебный банкет_ пастельные цветы и золотые детали.jpg diff --git a/server/frontend/images/мудборд.jpg b/server/frontend/main/images/мудборд.jpg similarity index 100% rename from server/frontend/images/мудборд.jpg rename to server/frontend/main/images/мудборд.jpg diff --git a/server/frontend/index.html b/server/frontend/main/index.html similarity index 86% rename from server/frontend/index.html rename to server/frontend/main/index.html index b2dcf64..f41ec46 100644 --- a/server/frontend/index.html +++ b/server/frontend/main/index.html @@ -64,7 +64,7 @@ - +
@@ -434,20 +423,20 @@ Просим Вас заполнить форму и подтвердить своё участие -
+
@@ -456,12 +445,12 @@

Горячее блюдо

@@ -470,21 +459,21 @@

Напитки

- - - - - + + + + +
-
- +