Skip to content

Commit

Permalink
Merge pull request #35 from ivellios/main
Browse files Browse the repository at this point in the history
  • Loading branch information
ivellios authored Dec 24, 2024
2 parents 5280c8c + de0d0d7 commit eb48669
Show file tree
Hide file tree
Showing 13 changed files with 126 additions and 45 deletions.
53 changes: 45 additions & 8 deletions .github/ISSUE_TEMPLATE/nowa.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -12,13 +12,13 @@ body:
Dziękujemy za zainteresowanie dołączeniem do programu Wyślij.co. Wypełnij poniższe pola informacjami o swojej organizacji, żeby zgłosić ją do programu.
# Podstawowe informacje
- type: input
id: nazwa
id: name
attributes:
label: Nazwa Twojej organizacji
validations:
required: true
- type: input
id: www
id: website
attributes:
label: Adres strony internetowej Twojej organizacji
validations:
Expand Down Expand Up @@ -63,7 +63,7 @@ body:
**Uwaga!** Zastrzegamy sobie prawo do zmiany tej wartości w celu zapewnienia równego traktowania wszystkich organizacji korzystających z programu Wyślij.co.
- type: input
id: nazwa_strony
id: slug
attributes:
label: Nazwa Twojej strony w Wyślij.co
description: Wprowadź nazwę bez polskich znaków diakrytycznych, oraz spacjami zmienionymi na `-`
Expand All @@ -75,36 +75,73 @@ body:
attributes:
value: |
# Dane teleadresowe do dostaw
Podaj dane dla dostaw przesyłek do Twojej organizacji. Powinny to być oficjalne dane teleadresowe.
Pamiętaj, że przekazane tutaj informacje będą publicznie dostępne na stronie Twojej organizacji
w Wyślij.co.
- type: input
id: ulica
id: street
attributes:
label: Ulica i numer budynku/lokalu
validations:
required: true
- type: input
id: kod_pocztowy
id: postal_code
attributes:
label: Kod Pocztowy
description: Wprowadź kod pocztowy w formacie `00-000`
placeholder: 00-000
validations:
required: true
- type: input
id: miasto
id: city
attributes:
label: Miasto
validations:
required: true
- type: input
id: telefon
id: email
attributes:
label: Adres email dla firmy kurierskiej
description: |
Podaj oficjalny adres email, na który firma kurierska wyśle powiadomienia dotyczące przesyłki.
Pamiętaj, że ten adres będzie publicznie widoczny w internecie.
placeholder: [email protected]
validations:
required: true
- type: input
id: phone_number
attributes:
label: Telefon kontaktowy dla kuriera
description: Wprowadź numer telefonu w formacie `000 000 000`
description: |
Wprowadź numer telefonu w formacie `000 000 000`
Podaj oficjalny numer telefonu, na który firma kurierska wyśle powiadomienia dotyczące przesyłki.
Pamiętaj, że ten numer będzie publicznie widoczny w internecie.
placeholder: 000 000 000
validations:
required: true
- type: input
id: package_box_code
attributes:
label: Kod paczkomatu
description: |
Podaj kod paczkomatu, w którym możesz odebrać przesyłki wysłane za pośrednictwem firmy InPost.
Kod paczkomatu możesz znaleźć na stronie [Znajdź Paczkomat](https://inpost.pl/znajdz-paczkomat).
placeholder: WAW01M
validations:
required: false
- type: input
id: additional_info
attributes:
label: Dodatkowe informacje dla dostawcy
description: |
Jeżeli to konieczne, podaj dodatkowe informacje do przekazania dla firmy dostawczej.
validations:
required: false
- type: markdown
attributes:
value: |
# Następne kroki
Po wypełnieniu formularza, Twój wniosek zostanie zweryfikowany przez nasz zespół. W celu weryfikacji poprawności danych skontaktujemy się z Twoją organizacją poprzez oficjalne dane kontaktowe dostępne na stronie internetowej organizacji lub w rejestrze KRS. W przypadku pozytywnej weryfikacji, otrzymasz od nas informację o dalszych krokach w komentarzu do tego zgłoszenia (zakładka Issues).
**Pamiętaj, że przekazane przez Ciebie dane powinny być informacjami oficjalnymi Twojej organizacji i będą dostępne publicznie w zgłoszeniu, kodzie oraz na stronach Wyślij.co.**
2 changes: 1 addition & 1 deletion .github/scripts/cli.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
)
logger = logging.getLogger(__file__)

GITHUB_TOKEN = os.getenv("GITHUB_TOKEN")
GITHUB_TOKEN = os.getenv("GITHUB_PAT")
GITHUB_REPOSITORY = os.getenv("GITHUB_REPOSITORY")

auth = Auth.Token(GITHUB_TOKEN)
Expand Down
17 changes: 10 additions & 7 deletions .github/scripts/consts.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,17 @@


class OrgFormSchemaIds(enum.StrEnum):
name = "nazwa"
website = "www"
name = "name"
website = "website"
krs = "krs"
slug = "nazwa_strony"
street = "ulica"
postal_code = "kod_pocztowy"
city = "miasto"
phone_number = "telefon"
slug = "slug"
street = "street"
postal_code = "postal_code"
city = "city"
phone_number = "phone_number"
email = "email"
package_box_code = "package_box_code"
additional_info = "additional_info"


NEW_ORG_ISSUE_DEFAULT_TITLE = "[Nowa Organizacja]"
Expand Down
24 changes: 9 additions & 15 deletions .github/scripts/git_managers.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
import logging
from dataclasses import dataclass

from github import GithubException, InputGitTreeElement
from github import InputGitTreeElement
from github.GithubException import UnknownObjectException
from github.GitCommit import GitCommit
from github.GitRef import GitRef
from github.Issue import Issue
Expand All @@ -12,7 +13,6 @@
from exceptions import BranchModifiedError
from parsers import GithubIssueFormDataParser


logger = logging.getLogger(__file__)


Expand Down Expand Up @@ -42,18 +42,12 @@ def get_or_create_branch(self, source_branch: str, new_branch_name: str) -> GitR
try:
branch_ref = self.repo.get_git_ref(f"heads/{new_branch_name}")
logger.info(f"Found existing branch '{new_branch_name}'.")
except GithubException as e:
if e.status == 404:
# Branch does not exist, create it from the source branch
self.repo.create_git_ref(
ref=f"refs/heads/{new_branch_name}", sha=source.commit.sha
)
branch_ref = self.repo.get_git_ref(f"heads/{new_branch_name}")
logger.info(
f"Branch '{new_branch_name}' created from '{source_branch}'."
)
else:
raise e
except UnknownObjectException:
# Branch does not exist, create it from the source branch
branch_ref = self.repo.create_git_ref(
ref=f"refs/heads/{new_branch_name}", sha=source.commit.sha
)
logger.info(f"Branch '{new_branch_name}' created from '{source_branch}'.")

latest_commit = self.repo.get_commit(branch_ref.object.sha)
if (
Expand Down Expand Up @@ -128,7 +122,7 @@ def create_organization_yaml_pr(
pr_title = f"Dodana nowa organizacja: {data.get(OrgFormSchemaIds.name)} | Zgłoszenie: #{issue.number}"
pr_body = f"Automatycznie dodana nowa organizacja na podstawie zgłoszenia z issue #{issue.number}.\n\n Closes #{issue.number}"

file_path = "organizations/organization.yaml"
file_path = f"organizations/{data.get(OrgFormSchemaIds.slug)}.yaml"

manager = GitManager(repo)
manager.create_or_update_pr_with_file(
Expand Down
4 changes: 4 additions & 0 deletions .github/scripts/organization.yaml.j2
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
---
nazwa: {{ organization.name }}

# wyslij.co/testowej - adres, pod którym będzie dostępna strona
Expand All @@ -11,6 +12,9 @@ dostawa:
kod: {{ organization.postal_code }}
miasto: {{ organization.city }}
telefon: {{ organization.phone_number }}
email: {{ organization.email }}
kod_paczkomatu:{% if organization.package_box_code %} {{ organization.package_box_code }}{% endif %}
dodatkowe_informacje:{% if organization.additional_info %} {{ organization.additional_info }}{% endif %}

produkty:
- nazwa: Testowy produkt
Expand Down
19 changes: 14 additions & 5 deletions .github/scripts/parsers.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,17 +14,26 @@ def __init__(self, form_data: dict[str, Any], form_schema_filename: str):
self.form_schema_filename = form_schema_filename
self.form_schema = self.get_form_schema(form_schema_filename)

self.field_label_map = self._create_field_label_map()

def _create_field_label_map(self):
field_label_map = {}
for field in self.form_schema.get("body", []):
if "id" in field:
field_label_map[field["id"]] = field["attributes"]["label"]
return field_label_map

@staticmethod
def get_form_schema(template_filename):
with open(f"../ISSUE_TEMPLATE/{template_filename}") as f:
return yaml.safe_load(f)

def get_label(self, identifier: str) -> str | None:
for field in self.form_schema.get("body", []):
if "id" in field and field["id"] == identifier:
return field["attributes"]["label"]
return None
return self.field_label_map.get(identifier)

def get(self, identifier: str) -> str | None:
label = self.get_label(identifier)
return self.form_data.get(label, "")
value = self.form_data.get(label, "")
if value == "_No response_":
return ""
return value
2 changes: 1 addition & 1 deletion .github/scripts/pullers.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
from typing import Optional, Self
from typing import Self

import requests
from github import Issue
Expand Down
5 changes: 4 additions & 1 deletion .github/scripts/renderers.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,9 @@ def render_organization_yaml(data: GithubIssueFormDataParser):

template = env.get_template("organization.yaml.j2")

org_data = {field: data.get(field) for field in OrgFormSchemaIds}
org_data = {
field.name: data.get(field.value)
for field in OrgFormSchemaIds
}

return template.render(organization=org_data)
1 change: 1 addition & 0 deletions .github/scripts/requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,4 @@ PyYAML==6.0.2
requests==2.32.3
GitPython==3.1.43
ruff==0.8.3
Jinja2==3.1.4
10 changes: 10 additions & 0 deletions .github/workflows/flask-gh-pages.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,18 @@ concurrency:
cancel-in-progress: false

jobs:
yaml-linting:
name: Walidacja plików organizacji
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: ibiqlik/action-yamllint@v3
with:
file_or_dir: organizations/*.yaml

# Build job
build:
needs: [yaml-linting]
runs-on: ubuntu-latest
steps:
- name: Checkout
Expand Down
7 changes: 2 additions & 5 deletions .github/workflows/nowa-organizacja.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,8 @@ on:
issues:
types: [opened, edited]


env:
GITHUB_TOKEN: ${{ github.token }}

permissions:
contents: read
contents: write
issues: write
pull-requests: write

Expand Down Expand Up @@ -47,6 +43,7 @@ jobs:
GITHUB_ISSUE_NUMBER: ${{ github.event.issue.number }}
GITHUB_FORM_JSON: ${{ needs.validate-form.outputs.payload }}
GITHUB_REPOSITORY: ${{ github.repository }}
GITHUB_PAT: ${{ secrets.CUSTOM_GITHUB_PAT }}
working-directory: ./.github/scripts
run: python cli.py

23 changes: 23 additions & 0 deletions .github/workflows/organization-update.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
name: Walidacja zmiany plików organizacji

on:
push:
paths:
- 'organizations/*.yaml'
pull_request:
paths:
- 'organizations/*.yaml'

permissions:
contents: read

jobs:

yaml-linting:
name: Walidacja pliku organizacji
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: ibiqlik/action-yamllint@v3
with:
file_or_dir: organizations/*.yaml
4 changes: 2 additions & 2 deletions organizations/testowa.yaml
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
---
nazwa: Testowa organizacja

# wyslij.co/testowej - adres, pod którym będzie dostępna strona
Expand All @@ -17,7 +18,6 @@ produkty:
link: http://testowy.pl
- nazwa: Testowy produkt 2
link: http://testowy2.pl
opis: Opcjonalny opis, Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus lacinia odio vitae vestibulum vestibulum. Cras vehicula, urna sit amet tincidunt tincidunt, neque tellus egestas libero, nec convallis sem sapien ut nulla.
opis: Opcjonalny, krótki opis, Lorem ipsum dolor sit amet.
- nazwa: Testowy produkt 3
link: http://testowy3.pl
opis:

0 comments on commit eb48669

Please sign in to comment.