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

Update django admin #211

Merged
merged 3 commits into from
Nov 18, 2023
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
3 changes: 2 additions & 1 deletion backend/api/serializers.py
Original file line number Diff line number Diff line change
Expand Up @@ -175,6 +175,7 @@ def get_status(self, data):
CLOSED = 'reception_of_responses_closed'
COMPLETED = 'project_completed'
CANCELED = 'canceled_by_organizer'
EDITING = 'editing'

# now = timezone.now()
# if data.status_approve == Project.CANCELED_BY_ORGANIZER:
Expand Down Expand Up @@ -204,7 +205,7 @@ def get_status(self, data):
return CLOSED
elif data.end_datetime <= now:
return COMPLETED
return 'Статус проекта не определен'
return EDITING

class Meta:
model = Project
Expand Down
1 change: 1 addition & 0 deletions backend/backend/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@
'django.contrib.staticfiles',
'debug_toolbar',
'django_filters',
'django_object_actions',
'djoser',
'rest_framework',
'rest_framework.authtoken',
Expand Down
20 changes: 10 additions & 10 deletions backend/data/projects.csv
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
name,description,picture,start_datetime,end_datetime,start_date_application,end_date_application,event_purpose,event_address_id,project_tasks,project_events,organizer_provides,organization_id,city_id,photo_previous_event,status_approve
Зеленый город,"Проект направлен на создание и поддержание зеленых зон в городе. В рамках проекта волонтеры будут заниматься высадкой деревьев и кустарников, уходом за ними, а также уборкой мусора и благоустройством территории ",,2024-04-01 01:00:00,2024-10-01 01:00:00,2023-10-30 01:00,2023-10-30 10:00,Создание зеленых зон в городе,1,Задачи проекта,Мероприятия следующие,саженцы,1,605,,На рассмотрении
Чистый город ,"Волонтеры будут проводить акции по уборке мусора на городских улицах, парках и пляжах.",,2023-10-01 01:00:00,2024-10-01 01:00:00,2023-10-30 01:00,2023-10-30 10:00,Создание чистоты и приятной атмосферы в городе,4,Задачи проекта,Мероприятия следующие,метлы и грабли,9,169,,На рассмотрении
Спортивные площадки для всех ,Создание и обустройство спортивных площадок для занятий различными видами спорта ,,2024-04-01 01:00:00,2024-10-01 01:00:00,2023-10-30 01:00,2023-10-31 01:00,Создание спортивных уголков во дворах города,3,Задачи проекта,Мероприятия следующие,турники,4,605,,На рассмотрении
Безопасный город ,Обучение волонтеров правилам безопасности дорожного движения и проведение акций по привлечению внимания к проблемам безопасности на дорогах ,,2023-10-01 01:00:00,2024-10-01 01:00:00,2023-10-30 01:00,2023-10-31 01:00,Повысить уровень безопасности на дорогах,2,Задачи проекта,Мероприятия следующие,информационные листовки,21,605,,На рассмотрении
Культурный обмен ,"Организация культурных мероприятий (выставки, лекции, мастер-классы) для жителей города ",,2023-10-01 01:00:00,2024-10-01 01:00:00,2023-10-30 01:00,2023-10-31 01:00,"Популяризация искусства и культуры среди жителей города, формирование эстетического вкуса и чувства прекрасного",3,Задачи проекта,Мероприятия следующие,уроки музыки,20,276,,На рассмотрении
Городские истории ,Сбор и оформление информации о истории и достопримечательностях города. Создание экскурсионных маршрутов. ,,2023-10-01 01:00:00,2024-10-01 01:00:00,2023-10-30 01:00,2023-10-31 05:00,"Приобщение жителей города к культурной жизни, расширение их кругозора.",5,Задачи проекта,Мероприятия следующие,экскурсии,21,605,,На рассмотрении
Детская площадка ,Строительство и обустройство детской площадки. ,,2023-10-01 01:00:00,2024-10-01 01:00:00,2023-10-30 01:00,2023-10-31 05:00,Создание комфортного и безопасного пространства для игр и развития детей,5,Задачи проекта,Мероприятия следующие,игры,11,80,,На рассмотрении
Велодорожки ,Разработка и реализация проекта по созданию сети велодорожек в городе ,,2023-10-01 01:00:00,2024-10-01 01:00:00,2023-10-30 01:00,2023-10-31 05:00,Повышение привлекательности велосипедного транспорта для горожан и улучшение экологической ситуации,6,Задачи проекта,Мероприятия следующие,организатор предоставляет,7,827,,На рассмотрении
Уличное искусство ,Участие волонтеров в оформлении городского пространства с использованием искусства стрит-арта ,,2023-10-01 01:00:00,2024-10-01 01:00:00,2023-10-30 01:00,2023-10-31 05:00,"Создание гармоничного и яркого облика города, приобщение жителей к творчеству и улучшение культуры улиц",5,Задачи проекта,Мероприятия следующие,предоставляет организатор следующее,10,169,,На рассмотрении
Эко-фестиваль ,"Проведение фестиваля, посвященного вопросам экологии и устойчивого развития города ",,2024-04-01 01:00:00,2024-10-01 01:00:00,2023-10-30 01:00,2023-10-31 05:00,"Привлечение внимания общественности к актуальным экологическим проблемам, формирование экологической культуры горожан",2,Задачи проекта,Мероприятия следующие,саженцы,12,80,,На рассмотрении
Зеленый город,"Проект направлен на создание и поддержание зеленых зон в городе. В рамках проекта волонтеры будут заниматься высадкой деревьев и кустарников, уходом за ними, а также уборкой мусора и благоустройством территории ",,2024-04-01 01:00:00,2024-10-01 01:00:00,2023-10-30 01:00,2023-10-30 10:00,Создание зеленых зон в городе,1,Задачи проекта,Мероприятия следующие,саженцы,1,605,,pending
Чистый город ,"Волонтеры будут проводить акции по уборке мусора на городских улицах, парках и пляжах.",,2023-10-01 01:00:00,2024-10-01 01:00:00,2023-10-30 01:00,2023-10-30 10:00,Создание чистоты и приятной атмосферы в городе,4,Задачи проекта,Мероприятия следующие,метлы и грабли,9,169,,pending
Спортивные площадки для всех ,Создание и обустройство спортивных площадок для занятий различными видами спорта ,,2024-04-01 01:00:00,2024-10-01 01:00:00,2023-10-30 01:00,2023-10-31 01:00,Создание спортивных уголков во дворах города,3,Задачи проекта,Мероприятия следующие,турники,4,605,,pending
Безопасный город ,Обучение волонтеров правилам безопасности дорожного движения и проведение акций по привлечению внимания к проблемам безопасности на дорогах ,,2023-10-01 01:00:00,2024-10-01 01:00:00,2023-10-30 01:00,2023-10-31 01:00,Повысить уровень безопасности на дорогах,2,Задачи проекта,Мероприятия следующие,информационные листовки,21,605,,pending
Культурный обмен ,"Организация культурных мероприятий (выставки, лекции, мастер-классы) для жителей города ",,2023-10-01 01:00:00,2024-10-01 01:00:00,2023-10-30 01:00,2023-10-31 01:00,"Популяризация искусства и культуры среди жителей города, формирование эстетического вкуса и чувства прекрасного",3,Задачи проекта,Мероприятия следующие,уроки музыки,20,276,,pending
Городские истории ,Сбор и оформление информации о истории и достопримечательностях города. Создание экскурсионных маршрутов. ,,2023-10-01 01:00:00,2024-10-01 01:00:00,2023-10-30 01:00,2023-10-31 05:00,"Приобщение жителей города к культурной жизни, расширение их кругозора.",5,Задачи проекта,Мероприятия следующие,экскурсии,21,605,,pending
Детская площадка ,Строительство и обустройство детской площадки. ,,2023-10-01 01:00:00,2024-10-01 01:00:00,2023-10-30 01:00,2023-10-31 05:00,Создание комфортного и безопасного пространства для игр и развития детей,5,Задачи проекта,Мероприятия следующие,игры,11,80,,pending
Велодорожки ,Разработка и реализация проекта по созданию сети велодорожек в городе ,,2023-10-01 01:00:00,2024-10-01 01:00:00,2023-10-30 01:00,2023-10-31 05:00,Повышение привлекательности велосипедного транспорта для горожан и улучшение экологической ситуации,6,Задачи проекта,Мероприятия следующие,организатор предоставляет,7,827,,pending
Уличное искусство ,Участие волонтеров в оформлении городского пространства с использованием искусства стрит-арта ,,2023-10-01 01:00:00,2024-10-01 01:00:00,2023-10-30 01:00,2023-10-31 05:00,"Создание гармоничного и яркого облика города, приобщение жителей к творчеству и улучшение культуры улиц",5,Задачи проекта,Мероприятия следующие,предоставляет организатор следующее,10,169,,pending
Эко-фестиваль ,"Проведение фестиваля, посвященного вопросам экологии и устойчивого развития города ",,2024-04-01 01:00:00,2024-10-01 01:00:00,2023-10-30 01:00,2023-10-31 05:00,"Привлечение внимания общественности к актуальным экологическим проблемам, формирование экологической культуры горожан",2,Задачи проекта,Мероприятия следующие,саженцы,12,80,,pending
63 changes: 49 additions & 14 deletions backend/projects/admin.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,9 @@
from django.contrib.admin import ModelAdmin, TabularInline, register
from django_object_actions import (
DjangoObjectActions,
action,
takes_instance_or_queryset,
)

from projects.models import (
Category,
Expand Down Expand Up @@ -80,23 +85,23 @@ class CategoryAdmin(ModelAdmin):


@register(Project)
class ProjectAdmin(ModelAdmin):
class ProjectAdmin(DjangoObjectActions, ModelAdmin):
list_display = (
'name',
'description',
'picture',
'start_datetime',
'end_datetime',
'start_date_application',
'end_date_application',
'event_purpose',
# 'start_datetime',
# 'end_datetime',
# 'start_date_application',
# 'end_date_application',
# 'event_purpose',
'organization',
'city',
'get_categories_display',
'photo_previous_event',
'get_participants_display',
# 'get_categories_display',
# 'photo_previous_event',
# 'get_participants_display',
'status_approve',
'get_skills_display',
# 'get_skills_display',
)
search_fields = (
'name',
Expand All @@ -107,10 +112,10 @@ class ProjectAdmin(ModelAdmin):
# 'categories',
)
list_filter = (
'start_datetime',
'organization',
'city',
'categories',
# 'start_datetime',
# 'organization',
# 'city',
# 'categories',
'status_approve',
)
save_on_top = True
Expand All @@ -132,6 +137,36 @@ def get_participants_display(self, obj):
[volunteer.user.last_name for volunteer in obj.participants.all()]
)

@action(label='Одобрить', description='Отправить проект на публикацию',)
def approve_project(self, request, obj):
obj.status_approve = Project.APPROVED
obj.save()

@action(label='Отклонить', description='Отправить проект на доработку',)
def reject_project(self, request, obj):
obj.status_approve = Project.REJECTED
obj.save()

change_actions = ('approve_project', 'reject_project',)

@action(
description='Отправить проект на публикацию',
label='Одобрить',
)
@takes_instance_or_queryset
def approve_projects(self, request, queryset):
queryset.update(status_approve=Project.APPROVED)

@action(
description='Отправить проект на доработку',
label='Отклонить',
)
@takes_instance_or_queryset
def reject_projects(self, request, queryset):
queryset.update(status_approve=Project.REJECTED)

actions = ('approve_projects', 'reject_projects',)


@register(ProjectParticipants)
class ProjectParticipantsAdmin(ModelAdmin):
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
# Generated by Django 4.2.6 on 2023-11-18 00:26

import datetime
import django.core.validators
from django.db import migrations, models
import projects.validators


class Migration(migrations.Migration):

dependencies = [
('projects', '0001_initial'),
]

operations = [
migrations.AddField(
model_name='project',
name='admin_comments',
field=models.TextField(
blank=True,
validators=[
projects.validators.regex_string_validator,
projects.validators.LengthValidator(
max_length=750, min_length=2
),
],
verbose_name='Комментарии администратора',
),
),
migrations.AlterField(
model_name='project',
name='name',
field=models.CharField(
max_length=150,
unique=True,
validators=[projects.validators.validate_name],
verbose_name='Название',
),
),
migrations.AlterField(
model_name='volunteer',
name='date_of_birth',
field=models.DateField(
help_text='Введите дату в формате "ГГГГ-ММ-ДД", пример: "2000-01-01".',
validators=[
django.core.validators.MinValueValidator(
limit_value=datetime.date(1900, 1, 1)
),
django.core.validators.MaxValueValidator(
limit_value=datetime.date(2023, 11, 18)
),
],
verbose_name='Дата рождения',
),
),
]
11 changes: 11 additions & 0 deletions backend/projects/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -369,6 +369,17 @@ class Project(models.Model):
# blank=True, # добавила
verbose_name='Навыки',
)
admin_comments = models.TextField(
blank=True,
validators=[
regex_string_validator,
LengthValidator(
min_length=settings.MIN_LEN_TEXT_FIELD_V1,
max_length=settings.MAX_LEN_TEXT_FIELD,
),
],
verbose_name='Комментарии администратора',
)

class Meta:
ordering = ('start_datetime',)
Expand Down
1 change: 1 addition & 0 deletions backend/requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ django-cors-headers==4.3.0
django-debug-toolbar==4.2.0
django-filter==23.3
django-gmailapi-backend==0.3.2
django-object-actions==4.2.0
django-rest-swagger==2.2.0
django-taggit==4.0.0
django-taggit-serializer==0.1.7
Expand Down