diff --git a/.github/workflows/new_deploy.yml b/.github/workflows/new_deploy.yml new file mode 100644 index 00000000..823a8c06 --- /dev/null +++ b/.github/workflows/new_deploy.yml @@ -0,0 +1,47 @@ +name: 'new deploy prod server' + +on: + workflow_dispatch: + +jobs: + deploy: + runs-on: ubuntu-latest + steps: + - name: run on server + uses: garygrossgarten/github-action-ssh@release + with: + host: ${{ secrets.SERVER_HOST }} + username: ${{ secrets.SERVER_USER }} + password: ${{ secrets.SERVER_PASSWORD }} + command: | + cd /home/app/new_procollab_deploy && + git pull origin master && + + rm -f .env && + touch .env && + + echo "DJANGO_SECRET_KEY=${{ secrets.DJANGO_SECRET_KEY }}" >> .env && + + echo "DATABASE_NAME=${{ secrets.DATABASE_NAME }}" >> .env && + echo "DATABASE_PASSWORD=${{ secrets.DATABASE_PASSWORD }}" >> .env && + echo "DATABASE_USER=${{ secrets.DATABASE_USER }}" >> .env && + echo "DATABASE_HOST=${{ secrets.DATABASE_HOST }}" >> .env && + echo "DATABASE_PORT=${{ secrets.DATABASE_PORT }}" >> .env && + + echo "EMAIL_USER=${{ secrets.EMAIL_USER }}" >> .env && + echo "EMAIL_PASSWORD=${{ secrets.EMAIL_PASSWORD }}" >> .env && + echo "EMAIL_HOST=${{ secrets.EMAIL_HOST }}" >> .env && + echo "EMAIL_PORT=${{ secrets.EMAIL_PORT }}" >> .env && + echo "SELECTEL_ACCOUNT_ID=${{ secrets.SELECTEL_ACCOUNT_ID }}" >> .env && + echo "SELECTEL_CONTAINER_NAME=${{ secrets.SELECTEL_CONTAINER_NAME }}" >> .env && + echo "SELECTEL_CONTAINER_PASSWORD=${{ secrets.SELECTEL_CONTAINER_PASSWORD }}" >> .env && + echo "SELECTEL_CONTAINER_USERNAME=${{ secrets.SELECTEL_CONTAINER_USERNAME }}" >> .env && + + echo "CLICKUP_API_TOKEN=${{ secrets.CLICKUP_API_TOKEN }}" >> .env && + echo "CLICKUP_SPACE_ID=${{ secrets.CLICKUP_SPACE_ID }}" >> .env && + + echo "SENTRY_DSN=${{ secrets.SENTRY_DSN }}" >> .env && + + echo "UNISENDER_GO_API_KEY=${{ secrets.UNISENDER_GO_API_KEY }}" >> .env && + + docker compose -f docker-compose.prod-ci.yml -p prod up -d --build diff --git a/docker-compose.prod-ci.yml b/docker-compose.prod-ci.yml index 226551b3..ee1a13eb 100644 --- a/docker-compose.prod-ci.yml +++ b/docker-compose.prod-ci.yml @@ -2,16 +2,31 @@ version: '3.9' services: web: + build: + context: . + dockerfile: ./Dockerfile image: ghcr.io/procollab-github/api:latest restart: unless-stopped volumes: - - log:/procollab/log + - ./log:/procollab/log env_file: - .env environment: HOST: 0.0.0.0 expose: - 8000 + + # web: + # image: ghcr.io/procollab-github/api:latest + # restart: unless-stopped + # volumes: + # - log:/procollab/log + # env_file: + # - .env + # environment: + # HOST: 0.0.0.0 + # expose: + # - 8000 grafana: image: grafana/grafana:latest restart: unless-stopped diff --git a/users/admin.py b/users/admin.py index 4f6ebba8..6a4ca8c4 100644 --- a/users/admin.py +++ b/users/admin.py @@ -277,8 +277,7 @@ def get_export_users_emails(self, users): headers=[ "Имя и фамилия", "Возраст", - "Интересы", - "ВУЗ / Школа", + "Город", "Специальность", "Эл. почта", ] @@ -287,63 +286,80 @@ def get_export_users_emails(self, users): today = date.today() date_limit_18 = date(today.year - 18, today.month, today.day) + date_limit_22 = date(today.year - 22, today.month, today.day) + # user_ed = UserEducation.objects.select_related( + # "user", "user__v2_speciality" + # ).filter(education_status="Студент") users = ( CustomUser.objects.all() .select_related("v2_speciality") - .prefetch_related( - "collaborations__project", - "collaborations__project__industry", - "skills__skill", - "education", + .filter( + birthday__lte=date_limit_18, + birthday__gte=date_limit_22 ) ) - little_mans = users.filter(birthday__lte=date_limit_18) - big_mans = users.exclude(id__in=little_mans.values_list("id", flat=True)) + # little_mans = users.filter(birthday__lte=date_limit_18) + # big_mans = users.exclude(id__in=little_mans.values_list("id", flat=True)) # whole_quality = users.count() # quantity_little_mans = little_mans.count() # quantity_big_mans = whole_quality - quantity_little_mans - for baby in little_mans: - interests = [ - collab.project.industry.name if collab.project.industry else "" - for collab in baby.collaborations.all() - ] - if not len(interests): - interests = [ - skill_to_obj.skill.name if skill_to_obj.skill else "" - for skill_to_obj in baby.skills.all() - ] - if not len(interests): - interests = baby.key_skills.split(",") if baby.key_skills else [] + for user in users: response_data.append( [ - baby.first_name + " " + baby.last_name, - today.year - baby.birthday.year, - ", ".join(interests), - "; ".join(baby.education.values_list("organization_name", flat=True)), - baby.v2_speciality if baby.v2_speciality else baby.speciality, - baby.email, + user.first_name + " " + user.last_name, + (today.year - user.birthday.year) + if user.birthday.year + else None, + user.city, + user.v2_speciality + if user.v2_speciality + else user.speciality, + user.email, ] ) - for big_man in big_mans: - industry_names = [ - collab.project.industry.name if collab.project.industry else "" - for collab in big_man.collaborations.all() - ] - response_data.append( - [ - big_man.first_name + " " + big_man.last_name, - today.year - big_man.birthday.year, - ", ".join(industry_names), - "; ".join(big_man.education.values_list("organization_name", flat=True)), - big_man.v2_speciality - if big_man.v2_speciality - else big_man.speciality, - big_man.email, - ] - ) + # for baby in little_mans: + # interests = [ + # collab.project.industry.name if collab.project.industry else "" + # for collab in baby.collaborations.all() + # ] + # if not len(interests): + # interests = [ + # skill_to_obj.skill.name if skill_to_obj.skill else "" + # for skill_to_obj in baby.skills.all() + # ] + # if not len(interests): + # interests = baby.key_skills.split(",") if baby.key_skills else [] + # response_data.append( + # [ + # baby.first_name + " " + baby.last_name, + # today.year - baby.birthday.year, + # ", ".join(interests), + # "; ".join(baby.education.values_list("organization_name", flat=True)), + # baby.v2_speciality if baby.v2_speciality else baby.speciality, + # baby.email, + # ] + # ) + # + # for big_man in big_mans: + # industry_names = [ + # collab.project.industry.name if collab.project.industry else "" + # for collab in big_man.collaborations.all() + # ] + # response_data.append( + # [ + # big_man.first_name + " " + big_man.last_name, + # today.year - big_man.birthday.year, + # ", ".join(industry_names), + # "; ".join(big_man.education.values_list("organization_name", flat=True)), + # big_man.v2_speciality + # if big_man.v2_speciality + # else big_man.speciality, + # big_man.email, + # ] + # ) # для малолеток указать теги проектов, если нет - навыки # для старших - специальность, вуз, учебное заведение