Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

postgre #72

Merged
merged 11 commits into from
Mar 10, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 10 additions & 1 deletion .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,17 @@ on:

jobs:
tests:

name: Test with flake8 and django tests
runs-on: ubuntu-latest
services:
postgres:
image: postgres:13
env:
POSTGRES_DB: postgres
POSTGRES_USER: admin
POSTGRES_PASSWORD: password
ports:
- 5432:5432

steps:
- name: Check out code
Expand Down
7 changes: 4 additions & 3 deletions backend/ambassadors/factories.py
Original file line number Diff line number Diff line change
Expand Up @@ -59,10 +59,10 @@ class Meta:
ya_edu = factory.SubFactory(TrainingProgramFactory)
country = factory.SubFactory(CountryFactory)
city = factory.SubFactory(CityFactory)
address = Faker('street_address')
address = str(Faker('street_address'))[:20]
postal_code = Faker('postcode')
email = Faker('email')
phone_number = Faker('phone_number')
phone_number = str(Faker('phone_number'))[:20]
telegram = Faker('user_name')
edu = Faker('text', max_nb_chars=200)
work = Faker('company')
Expand Down Expand Up @@ -95,6 +95,7 @@ class Meta:
elements=[choice[0] for choice in CONTENT_STATUS_CHOICES],
)
ambassador = factory.SubFactory(AmbassadorFactory)
comment = Faker('text', max_nb_chars=200)


class PromoCodeFactory(DjangoModelFactory):
Expand All @@ -105,5 +106,5 @@ class Meta:
name = Faker('lexify', text='?' * 16)
status = Faker(
'random_element',
elements=[choice[0] for choice in PROMO_CODE_STATUS_CHOICES]
elements=[choice[0] for choice in PROMO_CODE_STATUS_CHOICES],
)
10 changes: 6 additions & 4 deletions backend/ambassadors/migrations/0001_initial.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# Generated by Django 4.2.10 on 2024-03-06 05:56
# Generated by Django 4.2.10 on 2024-03-10 12:35

import django.db.models.deletion
from django.db import migrations, models
import django.db.models.deletion


class Migration(migrations.Migration):
Expand Down Expand Up @@ -80,6 +80,7 @@ class Migration(migrations.Migration):
],
options={
'verbose_name': 'Мерч',
'verbose_name_plural': 'Мерч',
},
),
migrations.CreateModel(
Expand Down Expand Up @@ -113,8 +114,8 @@ class Migration(migrations.Migration):
('status_send', models.CharField(choices=[('new', 'Новая заявка'), ('address_verified', 'Адрес проверен'), ('sent_to_logisticians', 'Отправлена логистам')], default='new', max_length=25, verbose_name='Статус отправки')),
('created_date', models.DateField(auto_now_add=True, verbose_name='Дата создания')),
('comment', models.TextField(max_length=200, verbose_name='Комментарий менеджера')),
('ambassador', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='ambassadors.ambassador', verbose_name='Амбассадор')),
('name_merch', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='ambassadors.merchandise', verbose_name='Название мерча')),
('ambassador', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='merch_shipping_requests', to='ambassadors.ambassador', verbose_name='Амбассадор')),
('name_merch', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to='ambassadors.merchandise', verbose_name='Название мерча')),
],
options={
'verbose_name': 'Заявка на отправку мерча',
Expand All @@ -130,6 +131,7 @@ class Migration(migrations.Migration):
('link', models.CharField(max_length=200, verbose_name='Ссылка на контент')),
('guide', models.BooleanField(verbose_name='В рамках Гайда?')),
('status', models.CharField(choices=[('new', 'Новая публикация'), ('approved', 'Одобрена'), ('rejected', 'Не одобрена')], default='new', max_length=50, verbose_name='Статус контента')),
('comment', models.TextField(blank=True, max_length=200, null=True, verbose_name='Комментарий менеджера')),
('created_date', models.DateField(auto_now_add=True, verbose_name='Дата создания')),
('ambassador', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='content', to='ambassadors.ambassador', verbose_name='амбассадор')),
],
Expand Down
17 changes: 11 additions & 6 deletions backend/ambassadors/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ class City(models.Model):
"""
Модель для названий городов.
"""

name = models.CharField(max_length=255, verbose_name='Название города')

def __str__(self):
Expand All @@ -29,6 +30,7 @@ class Country(models.Model):
"""
Модель для названий стран.
"""

name = models.CharField(max_length=255, verbose_name='Название страны')

def __str__(self):
Expand Down Expand Up @@ -92,13 +94,10 @@ class Ambassador(models.Model):
on_delete=models.SET_NULL,
null=True,
related_name='ambassadors',
verbose_name='Страна'
verbose_name='Страна',
)
city = models.ForeignKey(
City,
on_delete=models.SET_NULL,
null=True,
verbose_name='Город'
City, on_delete=models.SET_NULL, null=True, verbose_name='Город'
)
address = models.CharField(max_length=255, verbose_name='Адрес проживания')
postal_code = models.CharField(max_length=20, verbose_name='Индекс')
Expand Down Expand Up @@ -196,7 +195,13 @@ class Content(models.Model):
null=True,
blank=True,
related_name='content',
verbose_name='амбассадор'
verbose_name='амбассадор',
)
comment = models.TextField(
max_length=200,
verbose_name='Комментарий менеджера',
null=True,
blank=True,
)
created_date = models.DateField(
auto_now_add=True, verbose_name='Дата создания'
Expand Down
30 changes: 9 additions & 21 deletions backend/api/v1/constants.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,8 @@
"id": 1,
"status": "new",
"created_date": SCHEMA_DATE,
"ambassador": 1
"ambassador": 1,
"comment": "Пример комментария",
} | CONTENT_REQ_EXAMPLE

CONTENT_PATCH_EXAMPLE = {"status": "rejected"}
Expand All @@ -20,19 +21,16 @@
"status_send": "new",
"comment": "Комментарий",
"name_merch": 1,
"ambassador": 1
"ambassador": 1,
}
MERCH_RESP_EXAMPLE = {"id": 1, "created_date": SCHEMA_DATE} | MERCH_REQ_EXAMPLE

MERCH_PATCH_EXAMPLE = {
"status_send": "new",
"comment": "Комментарий"
}
MERCH_PATCH_EXAMPLE = {"status_send": "new", "comment": "Комментарий"}

PROMO_CODE_REQ_EXAMPLE = {
"status": "active",
"name": "promo_code",
"ambassador": 1
"ambassador": 1,
}

PROMO_CODE_RESP_EXAMPLE = {"id": 1} | PROMO_CODE_REQ_EXAMPLE
Expand All @@ -56,28 +54,18 @@
"additional_comments": "Пример комментария",
"status": "active",
"ya_edu": 1,
"amb_goals": [
1
]
"amb_goals": [1],
}

AMBASSADOR_RESP_EXAMPLE = AMBASSADOR_REQ_EXAMPLE | {
"id": 1,
"ya_edu": {
"id": 1,
"name": "Пример программы обучения"
},
"amb_goals": [
{
"id": 1,
"name": "Пример цели"
}
],
"ya_edu": {"id": 1, "name": "Пример программы обучения"},
"amb_goals": [{"id": 1, "name": "Пример цели"}],
"promo_code": "promo_code_example",
"content_count": 0,
"reg_date": f"{SCHEMA_DATE}T20:00:00.000+03:00",
"country": 1,
"city": 1
"city": 1,
}

LOYALTY_RESP_EXAMPLE = [
Expand Down
3 changes: 3 additions & 0 deletions backend/api/v1/filters.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,9 @@ class ContentFilter(FilterSet):

status = ChoiceFilter(choices=CONTENT_STATUS_CHOICES)
full_name = CharFilter(field_name='full_name', lookup_expr='icontains')
ya_edu = CharFilter(
field_name='ambassador__ya_edu__name', lookup_expr='icontains'
)

class Meta:
model = Content
Expand Down
4 changes: 4 additions & 0 deletions backend/api/v1/pagination.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,7 @@
class AmbassadorPagination(LimitOffsetPagination):
default_limit = 30
max_limit = 100


class ContentPagination(AmbassadorPagination):
pass
Loading
Loading