From 46de62a2195d32dc17e8a3d71f9ca70c6703bead Mon Sep 17 00:00:00 2001 From: catileptic Date: Sat, 6 Nov 2021 16:50:15 +0200 Subject: [PATCH 01/71] Add dockerhub.yml --- .github/workflows/dockerhub.yml | 48 +++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 .github/workflows/dockerhub.yml diff --git a/.github/workflows/dockerhub.yml b/.github/workflows/dockerhub.yml new file mode 100644 index 00000000..bdab39f5 --- /dev/null +++ b/.github/workflows/dockerhub.yml @@ -0,0 +1,48 @@ +on: + push: + tags: + - "v*" + +name: Deploy + +env: + DOCKER_IMAGE_BASE: code4romania/votong + +jobs: + build-dockerimage: + name: Build Docker container + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v2 + + - name: Cache Docker layers + uses: actions/cache@v2 + with: + path: /tmp/.buildx-cache + key: ${{ runner.os }}-buildx-${{ github.sha }} + restore-keys: | + ${{ runner.os }}-buildx- + - name: Set up Docker Buildx + id: buildx + uses: docker/setup-buildx-action@v1 + + - name: Login to Docker Hub + uses: docker/login-action@v1 + with: + username: ${{ secrets.DOCKER_HUB_USERNAME }} + password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }} + + - name: Set tag env + run: echo "RELEASE_VERSION=${GITHUB_REF#refs/*/}" >> $GITHUB_ENV + + - name: Build and push + id: docker_build + uses: docker/build-push-action@v2 + with: + context: ./src + builder: ${{ steps.buildx.outputs.name }} + push: true + tags: ${{ env.DOCKER_IMAGE_BASE }}:latest,${{ env.DOCKER_IMAGE_BASE }}:${{ env.RELEASE_VERSION }} + cache-from: type=local,src=/tmp/.buildx-cache + cache-to: type=local,dest=/tmp/.buildx-cache From b635e8d682ba08ef4b7cd27c5e266e5f612c6dbb Mon Sep 17 00:00:00 2001 From: catileptic Date: Sat, 6 Nov 2021 16:54:49 +0200 Subject: [PATCH 02/71] Update dockerhub.yml --- .github/workflows/dockerhub.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/dockerhub.yml b/.github/workflows/dockerhub.yml index bdab39f5..e5c222f8 100644 --- a/.github/workflows/dockerhub.yml +++ b/.github/workflows/dockerhub.yml @@ -40,7 +40,7 @@ jobs: id: docker_build uses: docker/build-push-action@v2 with: - context: ./src + context: ./ builder: ${{ steps.buildx.outputs.name }} push: true tags: ${{ env.DOCKER_IMAGE_BASE }}:latest,${{ env.DOCKER_IMAGE_BASE }}:${{ env.RELEASE_VERSION }} From 7650ddb98752f964ad1c83652d34e8fa7a1cfd8a Mon Sep 17 00:00:00 2001 From: catileptic Date: Sat, 6 Nov 2021 17:00:05 +0200 Subject: [PATCH 03/71] Update dockerhub.yml --- .github/workflows/dockerhub.yml | 9 --------- 1 file changed, 9 deletions(-) diff --git a/.github/workflows/dockerhub.yml b/.github/workflows/dockerhub.yml index e5c222f8..3fb430db 100644 --- a/.github/workflows/dockerhub.yml +++ b/.github/workflows/dockerhub.yml @@ -16,13 +16,6 @@ jobs: - name: Checkout uses: actions/checkout@v2 - - name: Cache Docker layers - uses: actions/cache@v2 - with: - path: /tmp/.buildx-cache - key: ${{ runner.os }}-buildx-${{ github.sha }} - restore-keys: | - ${{ runner.os }}-buildx- - name: Set up Docker Buildx id: buildx uses: docker/setup-buildx-action@v1 @@ -44,5 +37,3 @@ jobs: builder: ${{ steps.buildx.outputs.name }} push: true tags: ${{ env.DOCKER_IMAGE_BASE }}:latest,${{ env.DOCKER_IMAGE_BASE }}:${{ env.RELEASE_VERSION }} - cache-from: type=local,src=/tmp/.buildx-cache - cache-to: type=local,dest=/tmp/.buildx-cache From 87545cb6baf18a445ff2e47eb3f393597f38bd5d Mon Sep 17 00:00:00 2001 From: Alex Stefanescu Date: Mon, 8 Nov 2021 19:24:10 +0200 Subject: [PATCH 04/71] Update Dockerfile location in GHA --- .github/workflows/dockerhub.yml | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/.github/workflows/dockerhub.yml b/.github/workflows/dockerhub.yml index 3fb430db..0b1ac1b1 100644 --- a/.github/workflows/dockerhub.yml +++ b/.github/workflows/dockerhub.yml @@ -16,6 +16,13 @@ jobs: - name: Checkout uses: actions/checkout@v2 + - name: Cache Docker layers + uses: actions/cache@v2 + with: + path: /tmp/.buildx-cache + key: ${{ runner.os }}-buildx-${{ github.sha }} + restore-keys: | + ${{ runner.os }}-buildx- - name: Set up Docker Buildx id: buildx uses: docker/setup-buildx-action@v1 @@ -33,7 +40,9 @@ jobs: id: docker_build uses: docker/build-push-action@v2 with: - context: ./ + context: ./docker/web/ builder: ${{ steps.buildx.outputs.name }} push: true tags: ${{ env.DOCKER_IMAGE_BASE }}:latest,${{ env.DOCKER_IMAGE_BASE }}:${{ env.RELEASE_VERSION }} + cache-from: type=local,src=/tmp/.buildx-cache + cache-to: type=local,dest=/tmp/.buildx-cache \ No newline at end of file From 19ef5edf6f4d12be036b06a97f336546e82e743c Mon Sep 17 00:00:00 2001 From: Alex Stefanescu Date: Mon, 8 Nov 2021 19:27:46 +0200 Subject: [PATCH 05/71] Add file path to GHA --- .github/workflows/dockerhub.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/dockerhub.yml b/.github/workflows/dockerhub.yml index 0b1ac1b1..4a8f01b4 100644 --- a/.github/workflows/dockerhub.yml +++ b/.github/workflows/dockerhub.yml @@ -40,7 +40,8 @@ jobs: id: docker_build uses: docker/build-push-action@v2 with: - context: ./docker/web/ + context: ./ + file: ./docker/web/Dockerfile builder: ${{ steps.buildx.outputs.name }} push: true tags: ${{ env.DOCKER_IMAGE_BASE }}:latest,${{ env.DOCKER_IMAGE_BASE }}:${{ env.RELEASE_VERSION }} From 16e2ad9416821042830d0156b802cc4d54796f66 Mon Sep 17 00:00:00 2001 From: Angel Ramboi Date: Tue, 9 Nov 2021 11:42:40 +0200 Subject: [PATCH 06/71] CE 2021 - initial changes (#256) - update dependencies - add global disable for candidate support - attempt to optimize loading of the candidate page in admin - fix date timezone in the voting audit email - fix UX issue when setting the flag phases in admin --- .github/workflows/pipeline.yml | 4 +- Makefile | 2 +- .../civil_society_vote/settings/base.py | 5 +- civil_society_vote/hub/admin.py | 69 ++++-- civil_society_vote/hub/context_processors.py | 1 + .../hub/management/commands/seed.py | 14 +- civil_society_vote/hub/models.py | 9 +- .../hub/templates/candidate/detail.html | 2 +- .../hub/templates/committee/candidates.html | 2 + civil_society_vote/hub/utils.py | 2 +- civil_society_vote/hub/views.py | 2 +- .../locale/en/LC_MESSAGES/django.po | 196 +++++++++-------- .../locale/ro/LC_MESSAGES/django.mo | Bin 19830 -> 19883 bytes .../locale/ro/LC_MESSAGES/django.po | 207 ++++++++++-------- requirements-dev.txt | 143 ++++++------ requirements.in | 2 +- requirements.txt | 76 +++---- 17 files changed, 397 insertions(+), 339 deletions(-) diff --git a/.github/workflows/pipeline.yml b/.github/workflows/pipeline.yml index e31c81f9..79d4a9e1 100644 --- a/.github/workflows/pipeline.yml +++ b/.github/workflows/pipeline.yml @@ -18,7 +18,7 @@ on: jobs: static_analysis: runs-on: ubuntu-latest - container: python:3.7.7-buster + container: python:3.9.7-buster steps: - uses: actions/checkout@v2 @@ -29,7 +29,7 @@ jobs: cat requirements-dev.txt | grep black== | cut -d' ' -f1 | xargs pip install - name: Check code formatting with black run: | - black -l 120 -t py37 --check . + black -l 120 -t py38 --check . - name: Check imports order with isort run: | isort . --check diff --git a/Makefile b/Makefile index 2c12bf3e..95bcd157 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ help: @echo "clean - shut down containers and clean python cache and test files" lint: - docker-compose run --rm --no-deps --entrypoint "bash -c" web "isort . && black --exclude venv/ -t py37 ." + docker-compose run --rm --no-deps --entrypoint "bash -c" web "isort . && black --exclude venv/ -t py38 ." migrations: docker-compose run --rm --entrypoint "bash -c" web "./manage.py makemigrations hub" diff --git a/civil_society_vote/civil_society_vote/settings/base.py b/civil_society_vote/civil_society_vote/settings/base.py index a5d4fbd3..bc85fd76 100644 --- a/civil_society_vote/civil_society_vote/settings/base.py +++ b/civil_society_vote/civil_society_vote/settings/base.py @@ -24,6 +24,7 @@ RECAPTCHA_PRIVATE_KEY=(str, ""), SENTRY_DSN=(str, ""), ANALYTICS_ENABLED=(bool, False), + GLOBAL_SUPPORT_ENABLED=(bool, False), ) environ.Env.read_env(f"{root}/.env") # reading .env file @@ -231,7 +232,7 @@ CKEDITOR_BASEPATH = f"{STATIC_URL}ckeditor/ckeditor/" CKEDITOR_CONFIGS = { - "default": {"toolbar": "full", "height": 600, "width": 950,}, + "default": {"toolbar": "full", "height": 600, "width": 950}, } CKEDITOR_UPLOAD_PATH = "uploads/" @@ -247,3 +248,5 @@ send_default_pii=True, environment="staging" if DEBUG else "prod", ) + +GLOBAL_SUPPORT_ENABLED = env("GLOBAL_SUPPORT_ENABLED") diff --git a/civil_society_vote/hub/admin.py b/civil_society_vote/hub/admin.py index 6e844c2e..6e0efa0a 100644 --- a/civil_society_vote/hub/admin.py +++ b/civil_society_vote/hub/admin.py @@ -2,12 +2,13 @@ import io from accounts.models import User +from django.conf import settings from django.contrib import admin, messages from django.contrib.admin.filters import AllValuesFieldListFilter +from django.contrib.admin.helpers import ACTION_CHECKBOX_NAME from django.contrib.auth.admin import UserAdmin from django.contrib.auth.models import Group from django.contrib.sites.shortcuts import get_current_site -from django.db.models import Count from django.shortcuts import redirect, render from django.template import Context from django.urls import path, reverse @@ -159,10 +160,12 @@ class CandidateSupportersListFilter(admin.SimpleListFilter): parameter_name = "supporters" def lookups(self, request, model_admin): - return ( - ("gte10", _("10 or more")), - ("lt10", _("less than 10")), - ) + if settings.GLOBAL_SUPPORT_ENABLED: + return ( + ("gte10", _("10 or more")), + ("lt10", _("less than 10")), + ) + return def queryset(self, request, queryset): if self.value() == "lt10": @@ -269,36 +272,51 @@ class CandidateAdmin(admin.ModelAdmin): list_filter = ["is_proposed", "status", CandidateSupportersListFilter, CandidateConfirmationsListFilter, "domain"] search_fields = ["name", "email", "org__name"] readonly_fields = ["status", "status_changed"] - inlines = [CandidateConfirmationInline, CandidateSupporterInline, CandidateVoteInline] actions = [accept_candidates, reject_candidates, pending_candidates] list_per_page = 20 - def get_queryset(self, request): - queryset = super().get_queryset(request) - queryset = queryset.annotate( - votes_count=Count("votes", distinct=True), - supporters_count=Count("supporters", distinct=True), - confirmations_count=Count("confirmations", distinct=True), - ) - return queryset + # def get_queryset(self, request): + # queryset = super().get_queryset(request) + # if settings.GLOBAL_SUPPORT_ENABLED: + # queryset = queryset.annotate( + # votes_count=Count("votes", distinct=True), + # supporters_count=Count("supporters", distinct=True), + # confirmations_count=Count("confirmations", distinct=True), + # ) + # else: + # queryset = queryset.annotate( + # votes_count=Count("votes", distinct=True), + # confirmations_count=Count("confirmations", distinct=True), + # ) + # return queryset + + def get_inline_instances(self, request, obj=None): + if settings.GLOBAL_SUPPORT_ENABLED: + inlines = [CandidateConfirmationInline, CandidateSupporterInline, CandidateVoteInline] + else: + inlines = [CandidateConfirmationInline, CandidateVoteInline] + return [inline(self.model, self.admin_site) for inline in inlines] def votes_count(self, obj): - return obj.votes_count + return obj.votes.count() votes_count.short_description = _("Votes") - votes_count.admin_order_field = "votes_count" + # votes_count.admin_order_field = "votes_count" def supporters_count(self, obj): - return obj.supporters_count + if settings.GLOBAL_SUPPORT_ENABLED: + return obj.supporters.count() + else: + return "N/A" supporters_count.short_description = _("Supporters") - supporters_count.admin_order_field = "supporters_count" + # supporters_count.admin_order_field = "supporters_count" def confirmations_count(self, obj): - return obj.confirmations_count + return obj.confirmations.count() confirmations_count.short_description = _("Confirmations") - confirmations_count.admin_order_field = "confirmations_count" + # confirmations_count.admin_order_field = "confirmations_count" def has_add_permission(self, request, obj=None): return False @@ -414,7 +432,7 @@ def flags_phase_1(modeladmin, request, queryset): FeatureFlag.objects.filter(flag="enable_org_approval").update(is_enabled=True) FeatureFlag.objects.filter(flag="enable_org_voting").update(is_enabled=True) FeatureFlag.objects.filter(flag="enable_candidate_registration").update(is_enabled=True) - FeatureFlag.objects.filter(flag="enable_candidate_supporting").update(is_enabled=True) + FeatureFlag.objects.filter(flag="enable_candidate_supporting").update(is_enabled=settings.GLOBAL_SUPPORT_ENABLED) FeatureFlag.objects.filter(flag="enable_candidate_voting").update(is_enabled=False) @@ -463,6 +481,15 @@ class FeatureFlagAdmin(admin.ModelAdmin): readonly_fields = ["flag"] actions = [flags_phase_1, flags_phase_2, flags_phase_3, flags_final_phase] + def changelist_view(self, request, extra_context=None): + if "action" in request.POST: + if not request.POST.getlist(ACTION_CHECKBOX_NAME): + post = request.POST.copy() + for ff in FeatureFlag.objects.all(): + post.update({ACTION_CHECKBOX_NAME: str(ff.pk)}) + request._set_post(post) + return super(FeatureFlagAdmin, self).changelist_view(request, extra_context) + def has_add_permission(self, request): return False diff --git a/civil_society_vote/hub/context_processors.py b/civil_society_vote/hub/context_processors.py index 29897c9f..4b48a03c 100644 --- a/civil_society_vote/hub/context_processors.py +++ b/civil_society_vote/hub/context_processors.py @@ -9,6 +9,7 @@ def hub_settings(context): return { "DEBUG": settings.DEBUG, "ANALYTICS_ENABLED": settings.ANALYTICS_ENABLED, + "GLOBAL_SUPPORT_ENABLED": settings.GLOBAL_SUPPORT_ENABLED, "ORG_REGISTRATION_ENABLED": flags["enable_org_registration"], "ORG_APPROVAL_ENABLED": flags["enable_org_approval"], "CANDIDATE_REGISTRATION_ENABLED": flags["enable_candidate_registration"], diff --git a/civil_society_vote/hub/management/commands/seed.py b/civil_society_vote/hub/management/commands/seed.py index e4f79eca..00bddde0 100644 --- a/civil_society_vote/hub/management/commands/seed.py +++ b/civil_society_vote/hub/management/commands/seed.py @@ -69,15 +69,7 @@ def handle(self, *args, **kwargs): if not Domain.objects.count(): domains = [ - {"name": "Organizații academice și profesionale", "description": fake.text()}, - {"name": "Organizații cooperatiste și agricole", "description": fake.text()}, - { - "name": "Organizații din domeniul social, familia și persoane cu dizabiltăți și pensionari", - "description": fake.text(), - }, - {"name": "Organizații din domeniul sănătății/educației", "description": fake.text()}, - {"name": "Organizații din domeniul mediului", "description": fake.text()}, - {"name": "Organizații pentru Protecția Drepturilor Omului", "description": fake.text()}, + {"name": "CE 2021", "description": fake.text(), "seats": 5}, ] for domain in domains: Domain.objects.get_or_create(**domain) @@ -168,6 +160,10 @@ def handle(self, *args, **kwargs): self.stdout.write(f"Created organization {org} and candidate {candidate.name}") + for candidate in Candidate.objects.order_by("?")[:10]: + candidate.status = "accepted" + candidate.save() + self.stdout.write("Loaded organizations data") for flag in [x[0] for x in FLAG_CHOICES]: diff --git a/civil_society_vote/hub/models.py b/civil_society_vote/hub/models.py index b1f58531..e82d753c 100644 --- a/civil_society_vote/hub/models.py +++ b/civil_society_vote/hub/models.py @@ -183,7 +183,14 @@ def save(self, *args, **kwargs): class Organization(StatusModel, TimeStampedModel): - STATUS = Choices(("pending", _("Pending")), ("accepted", _("Accepted")), ("rejected", _("Rejected")),) + STATUS = Choices( + ("pending", _("Pending approval")), + ("accepted", _("Accepted")), + ("rejected", _("Rejected")), + # ("eligible", _("Eligible to vote")), + # ("ineligible", _("Ineligible to vote")), + # ("disabled", _("Disabled")), + ) user = models.ForeignKey( settings.AUTH_USER_MODEL, on_delete=models.SET_NULL, null=True, blank=True, related_name="orgs" diff --git a/civil_society_vote/hub/templates/candidate/detail.html b/civil_society_vote/hub/templates/candidate/detail.html index 90a3b965..a64d4222 100644 --- a/civil_society_vote/hub/templates/candidate/detail.html +++ b/civil_society_vote/hub/templates/candidate/detail.html @@ -68,7 +68,7 @@ - {% if not user.is_superuser and CANDIDATE_SUPPORTING_ENABLED and "support_candidate" in user_permissions and candidate.is_proposed %} + {% if not user.is_superuser and GLOBAL_SUPPORT_ENABLED and CANDIDATE_SUPPORTING_ENABLED and "support_candidate" in user_permissions and candidate.is_proposed %}
{% if candidate.org != request.user.orgs.first %} {% if user|already_supported:candidate %} diff --git a/civil_society_vote/hub/templates/committee/candidates.html b/civil_society_vote/hub/templates/committee/candidates.html index 8f474fe3..d0fd86ca 100644 --- a/civil_society_vote/hub/templates/committee/candidates.html +++ b/civil_society_vote/hub/templates/committee/candidates.html @@ -39,9 +39,11 @@

+ {% if GLOBAL_SUPPORT_ENABLED %}

Susținători: {% supporters candidate.id %}

+ {% endif %}
\n" "Language-Team: LANGUAGE \n" @@ -179,87 +179,87 @@ msgstr "" msgid "accounts/reset-password/complete/" msgstr "" -#: hub/admin.py:52 +#: hub/admin.py:53 msgid "groups" msgstr "" -#: hub/admin.py:99 +#: hub/admin.py:100 msgid "user" msgstr "" -#: hub/admin.py:106 +#: hub/admin.py:107 msgid "candidate" msgstr "" -#: hub/admin.py:158 +#: hub/admin.py:159 msgid "supporters" msgstr "" -#: hub/admin.py:163 +#: hub/admin.py:165 msgid "10 or more" msgstr "" -#: hub/admin.py:164 +#: hub/admin.py:166 msgid "less than 10" msgstr "" -#: hub/admin.py:175 +#: hub/admin.py:178 msgid "confirmations" msgstr "" -#: hub/admin.py:180 +#: hub/admin.py:183 msgid "5 or more" msgstr "" -#: hub/admin.py:181 +#: hub/admin.py:184 msgid "less than 5" msgstr "" -#: hub/admin.py:225 +#: hub/admin.py:228 msgid "Set selected candidates status to REJECTED" msgstr "" -#: hub/admin.py:241 +#: hub/admin.py:244 msgid "Set selected candidates status to ACCEPTED" msgstr "" -#: hub/admin.py:253 +#: hub/admin.py:256 msgid "Set selected candidates status to PENDING" msgstr "" -#: hub/admin.py:288 +#: hub/admin.py:303 msgid "Votes" msgstr "" -#: hub/admin.py:294 +#: hub/admin.py:312 msgid "Supporters" msgstr "" -#: hub/admin.py:300 +#: hub/admin.py:318 msgid "Confirmations" msgstr "" -#: hub/admin.py:398 +#: hub/admin.py:416 msgid "CSV file imported" msgstr "" -#: hub/admin.py:406 +#: hub/admin.py:424 msgid "Import Cities" msgstr "" -#: hub/admin.py:421 +#: hub/admin.py:439 msgid "Set flags for PHASE 1 - organization & candidate regisrations" msgstr "" -#: hub/admin.py:433 +#: hub/admin.py:451 msgid "Set flags for PHASE 2 - candidate validation" msgstr "" -#: hub/admin.py:445 +#: hub/admin.py:463 msgid "Set flags for PHASE 3 - voting" msgstr "" -#: hub/admin.py:457 +#: hub/admin.py:475 msgid "Set flags for FINAL PHASE - results" msgstr "" @@ -276,7 +276,7 @@ msgid "" "leading positions of political parties and are not elected officials." msgstr "" -#: hub/forms.py:104 hub/forms.py:158 hub/views.py:307 +#: hub/forms.py:104 hub/forms.py:158 hub/views.py:316 msgid "An organization with the same email address is already registered." msgstr "" @@ -433,11 +433,11 @@ msgstr "" msgid "Email templates" msgstr "" -#: hub/models.py:148 hub/models.py:367 +#: hub/models.py:148 hub/models.py:374 msgid "Name" msgstr "" -#: hub/models.py:149 hub/models.py:368 hub/templates/candidate/detail.html:108 +#: hub/models.py:149 hub/models.py:375 hub/templates/candidate/detail.html:108 msgid "Description" msgstr "" @@ -453,12 +453,12 @@ msgstr "" msgid "Domains" msgstr "" -#: hub/models.py:165 hub/models.py:170 hub/models.py:194 +#: hub/models.py:165 hub/models.py:170 hub/models.py:201 #: hub/templates/ngo/list.html:76 msgid "City" msgstr "" -#: hub/models.py:166 hub/models.py:193 hub/templates/ngo/list.html:41 +#: hub/models.py:166 hub/models.py:200 hub/templates/ngo/list.html:41 msgid "County" msgstr "" @@ -470,246 +470,250 @@ msgstr "" msgid "Cities" msgstr "" -#: hub/models.py:186 hub/models.py:350 -msgid "Pending" +#: hub/models.py:187 +msgid "Pending approval" msgstr "" -#: hub/models.py:186 hub/models.py:350 +#: hub/models.py:188 hub/models.py:357 msgid "Accepted" msgstr "" -#: hub/models.py:186 hub/models.py:350 +#: hub/models.py:189 hub/models.py:357 msgid "Rejected" msgstr "" -#: hub/models.py:192 +#: hub/models.py:199 msgid "NGO Name" msgstr "" -#: hub/models.py:195 +#: hub/models.py:202 msgid "Address" msgstr "" -#: hub/models.py:196 +#: hub/models.py:203 msgid "Registration number" msgstr "" -#: hub/models.py:198 +#: hub/models.py:205 msgid "Organisation Email" msgstr "Organisation E-mail address" -#: hub/models.py:199 +#: hub/models.py:206 msgid "Organisation Phone" msgstr "Organisation phone (optional)" -#: hub/models.py:200 +#: hub/models.py:207 msgid "Short Description" msgstr "A brief description (optional)" -#: hub/models.py:202 +#: hub/models.py:209 msgid "Legal Representative Name" msgstr "The name of the legal representative" -#: hub/models.py:203 +#: hub/models.py:210 #, fuzzy #| msgid "Legal Representative Name" msgid "Legal Representative Email" msgstr "The name of the legal representative" -#: hub/models.py:204 +#: hub/models.py:211 #, fuzzy #| msgid "Legal Representative Name" msgid "Legal Representative Phone" msgstr "The name of the legal representative" -#: hub/models.py:206 +#: hub/models.py:213 #, fuzzy #| msgid "Organisation Email" msgid "Organisation Head Name" msgstr "Organisation E-mail address" -#: hub/models.py:207 +#: hub/models.py:214 msgid "Board council" msgstr "" -#: hub/models.py:208 +#: hub/models.py:215 msgid "Logo" msgstr "" -#: hub/models.py:211 hub/templates/ngo/detail.html:110 +#: hub/models.py:218 hub/templates/ngo/detail.html:110 msgid "First page of last balance sheet" msgstr "" -#: hub/models.py:214 hub/templates/ngo/detail.html:119 +#: hub/models.py:221 hub/templates/ngo/detail.html:119 msgid "NGO Statute" msgstr "" -#: hub/models.py:221 +#: hub/models.py:228 #, fuzzy #| msgid "Accepted candidates" msgid "Accepted Terms and Conditions" msgstr "Candidați selectați" -#: hub/models.py:222 +#: hub/models.py:229 msgid "Has political party members" msgstr "" -#: hub/models.py:225 hub/templates/ngo/detail.html:139 +#: hub/models.py:232 hub/templates/ngo/detail.html:139 msgid "Yearly report 2019" msgstr "" -#: hub/models.py:233 hub/templates/ngo/detail.html:148 +#: hub/models.py:240 hub/templates/ngo/detail.html:148 msgid "Yearly report 2018" msgstr "" -#: hub/models.py:241 hub/templates/ngo/detail.html:157 +#: hub/models.py:248 hub/templates/ngo/detail.html:157 msgid "Yearly report 2017" msgstr "" -#: hub/models.py:249 hub/templates/ngo/detail.html:128 +#: hub/models.py:256 hub/templates/ngo/detail.html:128 msgid "Fiscal certificate" msgstr "" -#: hub/models.py:257 hub/templates/ngo/detail.html:166 +#: hub/models.py:264 hub/templates/ngo/detail.html:166 msgid "Statement" msgstr "" -#: hub/models.py:272 +#: hub/models.py:279 msgid "Rejection message" msgstr "" -#: hub/models.py:275 hub/templates/header.html:34 +#: hub/models.py:282 hub/templates/header.html:34 msgid "Organizations" msgstr "" -#: hub/models.py:276 +#: hub/models.py:283 msgid "Organization" msgstr "" -#: hub/models.py:362 +#: hub/models.py:357 +msgid "Pending" +msgstr "" + +#: hub/models.py:369 msgid "" "If this is set, the `org` field will be unset and the candidate is removed " "as the official proposal of the organization." msgstr "" -#: hub/models.py:369 hub/templates/candidate/detail.html:141 +#: hub/models.py:376 hub/templates/candidate/detail.html:141 msgid "Curriculum Vitae" msgstr "" -#: hub/models.py:370 +#: hub/models.py:377 #, fuzzy #| msgid "Pending Organisations" msgid "Role in organization" msgstr "Organizații nevalidate" -#: hub/models.py:376 hub/templates/candidate/detail.html:122 +#: hub/models.py:383 hub/templates/candidate/detail.html:122 msgid "Professional experience" msgstr "" -#: hub/models.py:377 hub/templates/candidate/detail.html:125 +#: hub/models.py:384 hub/templates/candidate/detail.html:125 msgid "Studies" msgstr "" -#: hub/models.py:380 +#: hub/models.py:387 msgid "Main Objectives" msgstr "" -#: hub/models.py:382 +#: hub/models.py:389 msgid "" "What are your main goals if you get a seat on the Economic and Social " "Committee?" msgstr "" -#: hub/models.py:387 +#: hub/models.py:394 msgid "Main Points" msgstr "" -#: hub/models.py:390 +#: hub/models.py:397 msgid "" "What are the most important points that should be on the agenda of the field " "for which you are applying?" msgstr "" -#: hub/models.py:396 +#: hub/models.py:403 msgid "Relevant Moments" msgstr "" -#: hub/models.py:399 +#: hub/models.py:406 msgid "" "What are the most relevant moments in your experience that recommend you to " "take a place in the Economic and Social Committee?" msgstr "" -#: hub/models.py:405 hub/templates/registration/login.html:41 +#: hub/models.py:412 hub/templates/registration/login.html:41 msgid "Email" msgstr "" -#: hub/models.py:406 +#: hub/models.py:413 msgid "Phone" msgstr "" -#: hub/models.py:407 +#: hub/models.py:414 msgid "Photo" msgstr "" -#: hub/models.py:410 hub/templates/candidate/detail.html:159 +#: hub/models.py:417 hub/templates/candidate/detail.html:159 msgid "Mandate from the organization" msgstr "" -#: hub/models.py:417 hub/templates/candidate/detail.html:150 +#: hub/models.py:424 hub/templates/candidate/detail.html:150 msgid "Letter of intent" msgstr "" -#: hub/models.py:424 hub/templates/candidate/detail.html:168 +#: hub/models.py:431 hub/templates/candidate/detail.html:168 msgid "Statement of interests" msgstr "" -#: hub/models.py:431 hub/templates/candidate/detail.html:179 +#: hub/models.py:438 hub/templates/candidate/detail.html:179 msgid "Tax records" msgstr "" -#: hub/models.py:438 hub/templates/candidate/detail.html:188 +#: hub/models.py:445 hub/templates/candidate/detail.html:188 msgid "Legal records" msgstr "" -#: hub/models.py:446 +#: hub/models.py:453 msgid "Is proposed?" msgstr "" -#: hub/models.py:452 hub/templates/candidate/list.html:39 +#: hub/models.py:459 hub/templates/candidate/list.html:39 #: hub/templates/header.html:47 msgid "Candidates" msgstr "" -#: hub/models.py:453 +#: hub/models.py:460 msgid "Candidate" msgstr "" -#: hub/models.py:473 +#: hub/models.py:480 msgid "Cannot update candidate after votes have been cast." msgstr "" -#: hub/models.py:507 +#: hub/models.py:514 msgid "Canditate votes" msgstr "" -#: hub/models.py:508 +#: hub/models.py:515 msgid "Candidate vote" msgstr "" -#: hub/models.py:531 +#: hub/models.py:538 msgid "Canditate supporters" msgstr "" -#: hub/models.py:532 +#: hub/models.py:539 msgid "Candidate supporter" msgstr "" -#: hub/models.py:546 +#: hub/models.py:553 msgid "Canditate confirmations" msgstr "" -#: hub/models.py:547 +#: hub/models.py:554 msgid "Candidate confirmation" msgstr "" @@ -736,7 +740,7 @@ msgstr "" msgid "Upload CSV file and add new cities" msgstr "" -#: hub/templates/blog/list.html:61 +#: hub/templates/blog/list.html:41 msgid "Read more" msgstr "" @@ -790,8 +794,8 @@ msgstr "" msgid "Search..." msgstr "" -#: hub/templates/candidate/list.html:98 hub/templates/candidate/results.html:83 -#: hub/templates/committee/candidates.html:49 hub/templates/ngo/votes.html:107 +#: hub/templates/candidate/list.html:79 hub/templates/candidate/results.html:63 +#: hub/templates/committee/candidates.html:51 hub/templates/ngo/votes.html:107 msgid "View details" msgstr "" @@ -830,8 +834,8 @@ msgstr "Candidați propusi" msgid "Accepted candidates" msgstr "Candidați selectați" -#: hub/templates/committee/candidates.html:65 -#: hub/templates/committee/list.html:69 hub/templates/ngo/list.html:196 +#: hub/templates/committee/candidates.html:67 +#: hub/templates/committee/list.html:69 hub/templates/ngo/list.html:177 #: hub/templates/ngo/votes.html:123 msgid "No results matching query" msgstr "" @@ -1070,15 +1074,15 @@ msgstr "" msgid "Initiated password reset" msgstr "" -#: hub/templates/shared/pagination.html:15 +#: hub/templates/shared/pagination.html:17 msgid "first" msgstr "" -#: hub/templates/shared/pagination.html:17 +#: hub/templates/shared/pagination.html:19 msgid "previous" msgstr "" -#: hub/templates/shared/pagination.html:25 +#: hub/templates/shared/pagination.html:27 #, python-format msgid "" "\n" @@ -1086,11 +1090,11 @@ msgid "" " " msgstr "" -#: hub/templates/shared/pagination.html:33 +#: hub/templates/shared/pagination.html:35 msgid "next" msgstr "" -#: hub/templates/shared/pagination.html:35 +#: hub/templates/shared/pagination.html:37 msgid "last" msgstr "" @@ -1174,7 +1178,7 @@ msgstr "" msgid "Thank you! We'll get in touch soon!" msgstr "" -#: hub/views.py:242 +#: hub/views.py:251 msgid "" "Thank you for signing up! The form you filled in has reached us. Someone " "from our team will reach out to you as soon as your organization is " @@ -1182,6 +1186,6 @@ msgid "" "contact@votong.ro" msgstr "" -#: hub/views.py:300 +#: hub/views.py:309 msgid "You must write a rejection message." msgstr "" diff --git a/civil_society_vote/locale/ro/LC_MESSAGES/django.mo b/civil_society_vote/locale/ro/LC_MESSAGES/django.mo index 7a081d397d5d6cd3d919368a3ec7d151b619343a..3a9cf5d99438ff69176a8898da68c1f18663873c 100644 GIT binary patch delta 5291 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 delta 5247 zcmYk=2~?I<9>?(ui3?l2EGi;F2;u-bDlQ<5DId!Hvy z6-#_>mHRknLz^u!l)FTG;zkQ&a(#@ceN(m#B%JK-OeVp(b(_LmA)rM!FqDpfb<_HBd6DgA5G8EYt+^ zPy>&}0Gxc6I7uZ6Z=qHk+RojhB#fnCuH)QT5iEG|c_co%A=$59hLiOTFH)P47?{tTw^+C-6m%`}x(8D`*VtVOM44JT3q zRigHAJCZfC7uE4uRL9p*nRtMVVFFkcYcU;B?S80!3Q!X(L}g}bH2K$zOS#aLI#i10 zp*mcOe9T(@=uGTGO{C6x8uhyisD2tzzq^4N@BwNfLF8KlC!+dKLw%p)P*LjgQHP_@ zwo5UYwimU+otS{Ns2i`NCSqbZpwJ4H$z;^ynTqOn5XRwX)QTPJ9MqX`-ldXHr5uOj zHGCVhV%nw!>ePP8(Uit48*nR)b}vYrdg@jSM|i>OpxN5(P%Defuni9Au}Y19^!pfA3I zy6-&iQ9`2=o z8&Ij!dwn#vq&*%r zkxABB_PQ69iKVE4R--0Th5oqJw)dhY&SyW~^c5@%cCr|_C zqMrZfQ4^hFzn_bm*kV+sR-w+w7Suw{pcZ%yHKE(sQRnc!{UV_|C!H^nk+Dq?>V{RQ z$8jxcMW3Sv-hp~?9YUotF4eUQ>T&CXnour=;V9I^CZPJ6jsAKL7EsX)m!fX`0zJ4N z`{8K}#;6`{29i+iJ{XFFP%9dZn(zy#7f>OppII1&i%=6?huWfz_^6)4omAAp5!B(U zw|<9O`5n{^rl+ev>Uy}fJ!;^1RA!P;Ta||Fs>wlKuI4wW$8j<0sn~)}ES2L_67Yuo zLAzdViqcUX4#Zp>fm+dO)Zy8Jn(z(`$HS-{&mC1 zG`FJ{Q9qoFn(=gOiz`rjR*gEv`;d2vsY4ycACbdk!qeS>Gq5%7!Kej1kIL{wR6mok z7-yxE{~{{4xWFXMI9^Md&~ns`6{wX}qdGi{TKTuAlwU@5cop?xxrdP$nc?nvDyp9+ zF&3Y~r*X1vA9kqdv^SzUip_L?*csIxhMIW+>J2s)mD)L|l`ljc!u9xb+==a+d=j1gRGy#`(%1dx^>EZ7nTc(2CC1=Z)Lx%PW#S6zEckM>1_-yN zpuQh~T4@1lLRA=n+fW&;L;7<}1C^OvxQ%*DruK6?o{xHdSD;e54mE*2sHfosw#T!` zxixo@#hPyY-S!03z@K6?u196?AZo(jV{<+Kep&7w1zOvoZtR3{*cFxXJiLQrF&+!Z z<3KFMDOiJAdH(_KfX|@L$YfON-$Z@ifLh2s?8NvcINM!$Z`586L8W$#^)-yAJrk9} zHK+{iK%I>m^ufcZ!+g}XvzXmX+5=GE*Pu@Q0aX8)8~{g^VN~RE_yQIq2ier4ULc+v z_uqj1u!Qy$)E+is4{SEbJ+$f8QK-W>4S$6ds4cpKEwIaAH#5BklYgZolM9KMhmYYj zjKXr%9&bWlJdQ1~9{uraRK_l&et!?+Fmi}{UnZ)*k*IOru)dGlg4ILFzh0G_xu89+ zL3LPak}zRgAA zm?{*<>k|?dbjEEoy(&KRJ{}U|Ibg5M!jFmHdvil#oRic(C4L}Ox)FaSS`jZ2TH{q> zE1_xqhfwKETq52l(upcUWhJ2v|GOF#oyLDP)kqOOMZ84lbdJ&6;~!LXM76tXiB}1g zuZZ=;n`%%-xR_J;B|$oy{ZUzdh0xGoVm1rN2p9C^omj$?_&OdJ#1a9CUz5lB|ah6 z5xs~Bgh~gZfw)XuAbu*r6!_Qt#yd zsX=*{*hb_M&k*y7HN-AL&!b}^sh5+cpEldXYxhgjh)3J-IZQHvm6As#L_9&S)Cx9uEkMl7}M z#nz72q1c`1Ps}9R5WNXMqLN4=W)oeBXLZWPQMp3Y6W//" msgid "accounts/reset-password/complete/" msgstr "cont/reseteaza-parola/complet/" -#: hub/admin.py:52 +#: hub/admin.py:53 msgid "groups" msgstr "grupuri" -#: hub/admin.py:99 +#: hub/admin.py:100 msgid "user" msgstr "utilizator" -#: hub/admin.py:106 +#: hub/admin.py:107 msgid "candidate" msgstr "candidat" -#: hub/admin.py:158 +#: hub/admin.py:159 msgid "supporters" msgstr "susținători" -#: hub/admin.py:163 +#: hub/admin.py:165 msgid "10 or more" msgstr "10 sau mai mulți" -#: hub/admin.py:164 +#: hub/admin.py:166 msgid "less than 10" msgstr "mai puțin de 10" -#: hub/admin.py:175 +#: hub/admin.py:178 msgid "confirmations" msgstr "confirmări" -#: hub/admin.py:180 +#: hub/admin.py:183 msgid "5 or more" msgstr "5 sau mai multe" -#: hub/admin.py:181 +#: hub/admin.py:184 msgid "less than 5" msgstr "mai puține de 5" -#: hub/admin.py:225 +#: hub/admin.py:228 msgid "Set selected candidates status to REJECTED" msgstr "Modifică starea candidaților selectați în RESPINS" -#: hub/admin.py:241 +#: hub/admin.py:244 msgid "Set selected candidates status to ACCEPTED" msgstr "Modifică starea candidaților selectați în APROBAT" -#: hub/admin.py:253 +#: hub/admin.py:256 msgid "Set selected candidates status to PENDING" msgstr "Modifică starea candidaților selectați în ÎN AȘTEPTARE" -#: hub/admin.py:288 +#: hub/admin.py:303 msgid "Votes" msgstr "Voturi" -#: hub/admin.py:294 +#: hub/admin.py:312 msgid "Supporters" msgstr "Susținători" -#: hub/admin.py:300 +#: hub/admin.py:318 msgid "Confirmations" msgstr "Confirmări" -#: hub/admin.py:398 +#: hub/admin.py:416 msgid "CSV file imported" msgstr "Fișier CSV încărcat" -#: hub/admin.py:406 +#: hub/admin.py:424 msgid "Import Cities" msgstr "Încarcă orașe" -#: hub/admin.py:421 +#: hub/admin.py:439 msgid "Set flags for PHASE 1 - organization & candidate regisrations" msgstr "" -#: hub/admin.py:433 +#: hub/admin.py:451 msgid "Set flags for PHASE 2 - candidate validation" msgstr "" -#: hub/admin.py:445 +#: hub/admin.py:463 msgid "Set flags for PHASE 3 - voting" msgstr "" -#: hub/admin.py:457 +#: hub/admin.py:475 msgid "Set flags for FINAL PHASE - results" msgstr "" @@ -284,7 +284,7 @@ msgstr "" "nu sunt membri ai conducerii unui partid politic sau persoane care au fost " "alese într-o funcție publică" -#: hub/forms.py:104 hub/forms.py:158 hub/views.py:307 +#: hub/forms.py:104 hub/forms.py:158 hub/views.py:316 msgid "An organization with the same email address is already registered." msgstr "O organizație cu aceeași adresă de email este deja înregistrată." @@ -440,11 +440,11 @@ msgstr "Șablon email" msgid "Email templates" msgstr "Șabloane email" -#: hub/models.py:148 hub/models.py:367 +#: hub/models.py:148 hub/models.py:374 msgid "Name" msgstr "Nume" -#: hub/models.py:149 hub/models.py:368 hub/templates/candidate/detail.html:108 +#: hub/models.py:149 hub/models.py:375 hub/templates/candidate/detail.html:108 msgid "Description" msgstr "Descriere" @@ -460,12 +460,12 @@ msgstr "Domeniu" msgid "Domains" msgstr "Domenii" -#: hub/models.py:165 hub/models.py:170 hub/models.py:194 +#: hub/models.py:165 hub/models.py:170 hub/models.py:201 #: hub/templates/ngo/list.html:76 msgid "City" msgstr "Oraș" -#: hub/models.py:166 hub/models.py:193 hub/templates/ngo/list.html:41 +#: hub/models.py:166 hub/models.py:200 hub/templates/ngo/list.html:41 msgid "County" msgstr "Județ" @@ -477,250 +477,254 @@ msgstr "E reședință de județ" msgid "Cities" msgstr "Orașe" -#: hub/models.py:186 hub/models.py:350 -msgid "Pending" -msgstr "În așteptare" +#: hub/models.py:187 +msgid "Pending approval" +msgstr "Așteaptă aprobare" -#: hub/models.py:186 hub/models.py:350 +#: hub/models.py:188 hub/models.py:357 msgid "Accepted" msgstr "Acceptat" -#: hub/models.py:186 hub/models.py:350 +#: hub/models.py:189 hub/models.py:357 msgid "Rejected" msgstr "Respins" -#: hub/models.py:192 +#: hub/models.py:199 msgid "NGO Name" msgstr "Numele organizației" -#: hub/models.py:195 +#: hub/models.py:202 msgid "Address" msgstr "Adresa" -#: hub/models.py:196 +#: hub/models.py:203 msgid "Registration number" msgstr "" "Numărul de înregistrare în Registrul Național al ONG-urilor (de forma 11111/" "A/2016)" -#: hub/models.py:198 +#: hub/models.py:205 msgid "Organisation Email" msgstr "Adresa de E-mail a organizației" -#: hub/models.py:199 +#: hub/models.py:206 msgid "Organisation Phone" msgstr "Telefon organizație (opțional)" -#: hub/models.py:200 +#: hub/models.py:207 msgid "Short Description" msgstr "Scurtă descriere (opțional)" -#: hub/models.py:202 +#: hub/models.py:209 msgid "Legal Representative Name" msgstr "Nume reprezentant legal" -#: hub/models.py:203 +#: hub/models.py:210 msgid "Legal Representative Email" msgstr "Adresă de E-mail a reprezentantului legal" -#: hub/models.py:204 +#: hub/models.py:211 msgid "Legal Representative Phone" msgstr "Telefon reprezentant legal (opțional)" -#: hub/models.py:206 +#: hub/models.py:213 msgid "Organisation Head Name" msgstr "" "Numele complet al președintelui organizației (sau director executiv dacă " "este cazul)" -#: hub/models.py:207 +#: hub/models.py:214 msgid "Board council" msgstr "" "Consiliu Director (adaugă numele complet al fiecărui membru, separate prin " "virgulă)" -#: hub/models.py:208 +#: hub/models.py:215 msgid "Logo" msgstr "Siglă" -#: hub/models.py:211 hub/templates/ngo/detail.html:110 +#: hub/models.py:218 hub/templates/ngo/detail.html:110 msgid "First page of last balance sheet" msgstr "" "Prima pagină a bilanțului contabil pe anul 2019 depus la Ministerul " "Finanțelor" -#: hub/models.py:214 hub/templates/ngo/detail.html:119 +#: hub/models.py:221 hub/templates/ngo/detail.html:119 msgid "NGO Statute" msgstr "Statutul organizației" -#: hub/models.py:221 +#: hub/models.py:228 msgid "Accepted Terms and Conditions" msgstr "A acceptat termenii și condițiile" -#: hub/models.py:222 +#: hub/models.py:229 msgid "Has political party members" msgstr "Are membrii în partide politice" -#: hub/models.py:225 hub/templates/ngo/detail.html:139 +#: hub/models.py:232 hub/templates/ngo/detail.html:139 msgid "Yearly report 2019" msgstr "Raport anual 2019" -#: hub/models.py:233 hub/templates/ngo/detail.html:148 +#: hub/models.py:240 hub/templates/ngo/detail.html:148 msgid "Yearly report 2018" msgstr "Raport anual 2018" -#: hub/models.py:241 hub/templates/ngo/detail.html:157 +#: hub/models.py:248 hub/templates/ngo/detail.html:157 msgid "Yearly report 2017" msgstr "Raport anual 2017" -#: hub/models.py:249 hub/templates/ngo/detail.html:128 +#: hub/models.py:256 hub/templates/ngo/detail.html:128 msgid "Fiscal certificate" msgstr "Certificat fiscal" -#: hub/models.py:257 hub/templates/ngo/detail.html:166 +#: hub/models.py:264 hub/templates/ngo/detail.html:166 msgid "Statement" msgstr "Declarație pe propria răspundere" -#: hub/models.py:272 +#: hub/models.py:279 msgid "Rejection message" msgstr "Motiv respingere" -#: hub/models.py:275 hub/templates/header.html:34 +#: hub/models.py:282 hub/templates/header.html:34 msgid "Organizations" msgstr "Organizații" -#: hub/models.py:276 +#: hub/models.py:283 msgid "Organization" msgstr "Organizație" -#: hub/models.py:362 +#: hub/models.py:357 +msgid "Pending" +msgstr "În așteptare" + +#: hub/models.py:369 msgid "" "If this is set, the `org` field will be unset and the candidate is removed " "as the official proposal of the organization." msgstr "" -#: hub/models.py:369 hub/templates/candidate/detail.html:141 +#: hub/models.py:376 hub/templates/candidate/detail.html:141 msgid "Curriculum Vitae" msgstr "Curriculum Vitae" -#: hub/models.py:370 +#: hub/models.py:377 msgid "Role in organization" msgstr "Funcție în organizație" -#: hub/models.py:376 hub/templates/candidate/detail.html:122 +#: hub/models.py:383 hub/templates/candidate/detail.html:122 msgid "Professional experience" msgstr "Activitate profesională" -#: hub/models.py:377 hub/templates/candidate/detail.html:125 +#: hub/models.py:384 hub/templates/candidate/detail.html:125 msgid "Studies" msgstr "Studii" -#: hub/models.py:380 +#: hub/models.py:387 msgid "Main Objectives" msgstr "" "Care sunt principalele obiective pe care ți le propui dacă vei obține un loc " "în Comitetul Economic și Social?" -#: hub/models.py:382 +#: hub/models.py:389 msgid "" "What are your main goals if you get a seat on the Economic and Social " "Committee?" msgstr " " -#: hub/models.py:387 +#: hub/models.py:394 msgid "Main Points" msgstr "" "Care considerați că ar trebui să fie cele mai importante puncte de pe agenda " "domeniului pentru care aplicați?" -#: hub/models.py:390 +#: hub/models.py:397 msgid "" "What are the most important points that should be on the agenda of the field " "for which you are applying?" msgstr " " -#: hub/models.py:396 +#: hub/models.py:403 msgid "Relevant Moments" msgstr "" "Care sunt cele mai relevante momente din experiența ta care te recomandă " "pentru a ocupa un loc in Comitetul Economic și Social?" -#: hub/models.py:399 +#: hub/models.py:406 msgid "" "What are the most relevant moments in your experience that recommend you to " "take a place in the Economic and Social Committee?" msgstr " " -#: hub/models.py:405 hub/templates/registration/login.html:41 +#: hub/models.py:412 hub/templates/registration/login.html:41 msgid "Email" msgstr "Email" -#: hub/models.py:406 +#: hub/models.py:413 msgid "Phone" msgstr "Telefon" -#: hub/models.py:407 +#: hub/models.py:414 msgid "Photo" msgstr "Fotografie" -#: hub/models.py:410 hub/templates/candidate/detail.html:159 +#: hub/models.py:417 hub/templates/candidate/detail.html:159 msgid "Mandate from the organization" msgstr "Mandat din partea organizației, ștampilat și semnat" -#: hub/models.py:417 hub/templates/candidate/detail.html:150 +#: hub/models.py:424 hub/templates/candidate/detail.html:150 msgid "Letter of intent" msgstr "Scrisoare de intenție" -#: hub/models.py:424 hub/templates/candidate/detail.html:168 +#: hub/models.py:431 hub/templates/candidate/detail.html:168 msgid "Statement of interests" msgstr "Declarație de interese" -#: hub/models.py:431 hub/templates/candidate/detail.html:179 +#: hub/models.py:438 hub/templates/candidate/detail.html:179 msgid "Tax records" msgstr "Cazier fiscal" -#: hub/models.py:438 hub/templates/candidate/detail.html:188 +#: hub/models.py:445 hub/templates/candidate/detail.html:188 msgid "Legal records" msgstr "Cazier juridic" -#: hub/models.py:446 +#: hub/models.py:453 msgid "Is proposed?" msgstr "Este propus?" -#: hub/models.py:452 hub/templates/candidate/list.html:39 +#: hub/models.py:459 hub/templates/candidate/list.html:39 #: hub/templates/header.html:47 msgid "Candidates" msgstr "Candidați" -#: hub/models.py:453 +#: hub/models.py:460 msgid "Candidate" msgstr "Candidat" -#: hub/models.py:473 +#: hub/models.py:480 msgid "Cannot update candidate after votes have been cast." msgstr "Nu se poate modifica candidatul dupa ce s-au inregistrat voturi." -#: hub/models.py:507 +#: hub/models.py:514 msgid "Canditate votes" msgstr "Voturi candidați" -#: hub/models.py:508 +#: hub/models.py:515 msgid "Candidate vote" msgstr "Vot candidat" -#: hub/models.py:531 +#: hub/models.py:538 msgid "Canditate supporters" msgstr "Susținători candidat" -#: hub/models.py:532 +#: hub/models.py:539 msgid "Candidate supporter" msgstr "Susținător candidat" -#: hub/models.py:546 +#: hub/models.py:553 msgid "Canditate confirmations" msgstr "Confirmări candidat" -#: hub/models.py:547 +#: hub/models.py:554 msgid "Candidate confirmation" msgstr "Confirmare candidat" @@ -749,7 +753,7 @@ msgstr "Încărcare" msgid "Upload CSV file and add new cities" msgstr "Încarcă fișier CSV și adaugă orașe" -#: hub/templates/blog/list.html:61 +#: hub/templates/blog/list.html:41 msgid "Read more" msgstr "Citește mai mult" @@ -809,8 +813,8 @@ msgstr "" msgid "Search..." msgstr "Caută..." -#: hub/templates/candidate/list.html:98 hub/templates/candidate/results.html:83 -#: hub/templates/committee/candidates.html:49 hub/templates/ngo/votes.html:107 +#: hub/templates/candidate/list.html:79 hub/templates/candidate/results.html:63 +#: hub/templates/committee/candidates.html:51 hub/templates/ngo/votes.html:107 msgid "View details" msgstr "Vizualizează detalii" @@ -847,8 +851,8 @@ msgstr "Candidați propusi" msgid "Accepted candidates" msgstr "Candidați validați" -#: hub/templates/committee/candidates.html:65 -#: hub/templates/committee/list.html:69 hub/templates/ngo/list.html:196 +#: hub/templates/committee/candidates.html:67 +#: hub/templates/committee/list.html:69 hub/templates/ngo/list.html:177 #: hub/templates/ngo/votes.html:123 msgid "No results matching query" msgstr "Nu există nici un rezultat" @@ -1088,15 +1092,15 @@ msgstr "" msgid "Initiated password reset" msgstr "S-a initializat resetarea parolei" -#: hub/templates/shared/pagination.html:15 +#: hub/templates/shared/pagination.html:17 msgid "first" msgstr "prima" -#: hub/templates/shared/pagination.html:17 +#: hub/templates/shared/pagination.html:19 msgid "previous" msgstr "precedenta" -#: hub/templates/shared/pagination.html:25 +#: hub/templates/shared/pagination.html:27 #, python-format msgid "" "\n" @@ -1108,11 +1112,11 @@ msgstr "" " \n" " " -#: hub/templates/shared/pagination.html:33 +#: hub/templates/shared/pagination.html:35 msgid "next" msgstr "următoarea" -#: hub/templates/shared/pagination.html:35 +#: hub/templates/shared/pagination.html:37 msgid "last" msgstr "ultima" @@ -1198,7 +1202,7 @@ msgstr "organizatii//actualizare" msgid "Thank you! We'll get in touch soon!" msgstr "Mulțumim! Vă vom contacta curând!" -#: hub/views.py:242 +#: hub/views.py:251 msgid "" "Thank you for signing up! The form you filled in has reached us. Someone " "from our team will reach out to you as soon as your organization is " @@ -1210,10 +1214,19 @@ msgstr "" "Dacă ai întrebări suplimentare, ne poți trimite un mesaj la adresa " "contact@votong.ro." -#: hub/views.py:300 +#: hub/views.py:309 msgid "You must write a rejection message." msgstr "Trebuie să completezi un motiv de respingere." +#~ msgid "Eligible to vote" +#~ msgstr "Eligibil să voteze" + +#~ msgid "Ineligible to vote" +#~ msgstr "Ineligibil să voteze" + +#~ msgid "Disabled" +#~ msgstr "Dezactivat" + #~ msgid "CES Results" #~ msgstr "Rezultate provizorii CES" diff --git a/requirements-dev.txt b/requirements-dev.txt index d7b81cd0..5e458034 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -1,12 +1,12 @@ # -# This file is autogenerated by pip-compile +# This file is autogenerated by pip-compile with python 3.9 # To update, run: # # pip-compile --output-file=requirements-dev.txt requirements-dev.in requirements.in # appdirs==1.4.4 # via black -attrs==20.3.0 +attrs==21.2.0 # via # black # pytest @@ -14,37 +14,49 @@ backcall==0.2.0 # via ipython black==19.10b0 # via -r requirements-dev.in -boto3==1.17.56 +boto3==1.19.12 # via -r requirements.in -botocore==1.20.56 +botocore==1.22.12 # via # boto3 # s3transfer brotlipy==0.7.0 # via -r requirements.in -certifi==2020.12.5 +certifi==2021.10.8 # via # requests # sentry-sdk -cffi==1.14.5 +cffi==1.15.0 # via brotlipy -chardet==4.0.0 +charset-normalizer==2.0.7 # via requests -click==7.1.2 +click==8.0.3 # via # black # pip-tools -decorator==5.0.7 +decorator==5.1.0 # via ipython -django-admin-autocomplete-filter==0.6.1 +django==2.2.24 + # via + # -r requirements.in + # django-admin-autocomplete-filter + # django-appconf + # django-crispy-bulma + # django-debug-toolbar + # django-extensions + # django-guardian + # django-model-utils + # django-recaptcha + # django-storages +django-admin-autocomplete-filter==0.7.1 # via -r requirements.in -django-admin-rangefilter==0.8.1 +django-admin-rangefilter==0.8.2 # via -r requirements.in -django-appconf==1.0.4 +django-appconf==1.0.5 # via django-avatar django-avatar==5.0.0 # via -r requirements.in -django-ckeditor==6.0.0 +django-ckeditor==6.1.0 # via -r requirements.in django-crispy-bulma==0.2 # via -r requirements.in @@ -52,61 +64,47 @@ django-crispy-forms==1.7.2 # via # -r requirements.in # django-crispy-bulma -django-debug-toolbar==3.2.1 +django-debug-toolbar==3.2.2 # via -r requirements-dev.in -django-environ==0.4.5 +django-environ==0.8.1 # via -r requirements.in -django-extensions==3.1.3 +django-extensions==3.1.5 # via -r requirements-dev.in django-file-resubmit==0.5.2 # via -r requirements.in -django-guardian==2.3.0 +django-guardian==2.4.0 # via -r requirements.in django-impersonate==1.7.3 # via -r requirements.in django-js-asset==1.2.2 # via django-ckeditor -django-model-utils==4.1.1 +django-model-utils==4.2.0 # via -r requirements.in django-recaptcha==2.0.6 # via -r requirements.in django-spurl==0.6.7 # via -r requirements.in -django-storages==1.11.1 +django-storages==1.12.3 # via -r requirements.in -django==2.2.20 - # via - # -r requirements.in - # django-admin-autocomplete-filter - # django-appconf - # django-crispy-bulma - # django-debug-toolbar - # django-extensions - # django-guardian - # django-model-utils - # django-recaptcha - # django-storages -faker==8.1.0 +faker==9.8.0 # via -r requirements-dev.in fancycompleter==0.9.1 # via pdbpp -flake8==3.9.1 +flake8==4.0.1 # via -r requirements-dev.in -gevent==21.1.2 +gevent==21.8.0 # via -r requirements.in -greenlet==1.0.0 +greenlet==1.1.2 # via gevent gunicorn==20.1.0 # via -r requirements.in -idna==2.10 +idna==3.3 # via requests iniconfig==1.1.1 # via pytest -ipython-genutils==0.2.0 - # via traitlets -ipython==7.22.0 +ipython==7.29.0 # via -r requirements-dev.in -isort==5.8.0 +isort==5.10.0 # via -r requirements-dev.in jedi==0.18.0 # via ipython @@ -114,45 +112,47 @@ jmespath==0.10.0 # via # boto3 # botocore +matplotlib-inline==0.1.3 + # via ipython mccabe==0.6.1 # via flake8 -packaging==20.9 +packaging==21.2 # via pytest parso==0.8.2 # via jedi -pathspec==0.8.1 +pathspec==0.9.0 # via black -pdbpp==0.10.2 +pdbpp==0.10.3 # via -r requirements-dev.in -pep517==0.10.0 +pep517==0.12.0 # via pip-tools pexpect==4.8.0 # via ipython pickleshare==0.7.5 # via ipython -pillow==8.2.0 +pillow==8.4.0 # via # -r requirements.in # django-avatar -pip-tools==6.1.0 +pip-tools==6.4.0 # via -r requirements-dev.in -pluggy==0.13.1 +pluggy==1.0.0 # via pytest -prompt-toolkit==3.0.18 +prompt-toolkit==3.0.22 # via ipython psycopg2==2.8.6 # via -r requirements.in ptyprocess==0.7.0 # via pexpect -py==1.10.0 +py==1.11.0 # via pytest -pycodestyle==2.7.0 +pycodestyle==2.8.0 # via flake8 -pycparser==2.20 +pycparser==2.21 # via cffi -pyflakes==2.3.1 +pyflakes==2.4.0 # via flake8 -pygments==2.8.1 +pygments==2.10.0 # via # ipython # pdbpp @@ -160,27 +160,27 @@ pyparsing==2.4.7 # via packaging pyrepl==0.9.0 # via fancycompleter -pytest==6.2.3 +pytest==6.2.5 # via -r requirements-dev.in -python-dateutil==2.8.1 +python-dateutil==2.8.2 # via # botocore # faker -pytz==2021.1 +pytz==2021.3 # via django -regex==2021.4.4 +regex==2021.11.2 # via black -requests==2.25.1 +requests==2.26.0 # via -r requirements.in -s3transfer==0.4.2 +s3transfer==0.5.0 # via boto3 -sentry-sdk==1.0.0 +sentry-sdk==1.4.3 # via -r requirements.in -six==1.15.0 +six==1.16.0 # via # django-spurl # python-dateutil -sqlparse==0.4.1 +sqlparse==0.4.2 # via # django # django-debug-toolbar @@ -189,13 +189,16 @@ text-unidecode==1.3 toml==0.10.2 # via # black - # pep517 # pytest -traitlets==5.0.5 - # via ipython +tomli==1.2.2 + # via pep517 +traitlets==5.1.1 + # via + # ipython + # matplotlib-inline typed-ast==1.4.3 # via black -urllib3==1.26.4 +urllib3==1.26.7 # via # botocore # requests @@ -204,11 +207,13 @@ urlobject==2.4.3 # via django-spurl wcwidth==0.2.5 # via prompt-toolkit -werkzeug==1.0.1 +werkzeug==2.0.2 # via -r requirements-dev.in -whitenoise==5.2.0 +wheel==0.37.0 + # via pip-tools +whitenoise==5.3.0 # via -r requirements.in -wmctrl==0.3 +wmctrl==0.4 # via pdbpp zope.event==4.5.0 # via gevent diff --git a/requirements.in b/requirements.in index 222d1b0e..d53f2faf 100644 --- a/requirements.in +++ b/requirements.in @@ -25,7 +25,7 @@ brotlipy requests # database -psycopg2 +psycopg2<2.9 # prod packages gunicorn diff --git a/requirements.txt b/requirements.txt index d7334a4d..0bee3652 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,34 +1,44 @@ # -# This file is autogenerated by pip-compile +# This file is autogenerated by pip-compile with python 3.9 # To update, run: # # pip-compile --output-file=requirements.txt requirements.in # -boto3==1.17.56 +boto3==1.19.12 # via -r requirements.in -botocore==1.20.56 +botocore==1.22.12 # via # boto3 # s3transfer brotlipy==0.7.0 # via -r requirements.in -certifi==2020.12.5 +certifi==2021.10.8 # via # requests # sentry-sdk -cffi==1.14.5 +cffi==1.15.0 # via brotlipy -chardet==4.0.0 +charset-normalizer==2.0.7 # via requests -django-admin-autocomplete-filter==0.6.1 +django==2.2.24 + # via + # -r requirements.in + # django-admin-autocomplete-filter + # django-appconf + # django-crispy-bulma + # django-guardian + # django-model-utils + # django-recaptcha + # django-storages +django-admin-autocomplete-filter==0.7.1 # via -r requirements.in -django-admin-rangefilter==0.8.1 +django-admin-rangefilter==0.8.2 # via -r requirements.in -django-appconf==1.0.4 +django-appconf==1.0.5 # via django-avatar django-avatar==5.0.0 # via -r requirements.in -django-ckeditor==6.0.0 +django-ckeditor==6.1.0 # via -r requirements.in django-crispy-bulma==0.2 # via -r requirements.in @@ -36,78 +46,68 @@ django-crispy-forms==1.7.2 # via # -r requirements.in # django-crispy-bulma -django-environ==0.4.5 +django-environ==0.8.1 # via -r requirements.in django-file-resubmit==0.5.2 # via -r requirements.in -django-guardian==2.3.0 +django-guardian==2.4.0 # via -r requirements.in django-impersonate==1.7.3 # via -r requirements.in django-js-asset==1.2.2 # via django-ckeditor -django-model-utils==4.1.1 +django-model-utils==4.2.0 # via -r requirements.in django-recaptcha==2.0.6 # via -r requirements.in django-spurl==0.6.7 # via -r requirements.in -django-storages==1.11.1 +django-storages==1.12.3 # via -r requirements.in -django==2.2.20 - # via - # -r requirements.in - # django-admin-autocomplete-filter - # django-appconf - # django-crispy-bulma - # django-guardian - # django-model-utils - # django-recaptcha - # django-storages -gevent==21.1.2 +gevent==21.8.0 # via -r requirements.in -greenlet==1.0.0 +greenlet==1.1.2 # via gevent gunicorn==20.1.0 # via -r requirements.in -idna==2.10 +idna==3.3 # via requests jmespath==0.10.0 # via # boto3 # botocore -pillow==8.2.0 +pillow==8.4.0 # via # -r requirements.in # django-avatar psycopg2==2.8.6 # via -r requirements.in -pycparser==2.20 +pycparser==2.21 # via cffi -python-dateutil==2.8.1 +python-dateutil==2.8.2 # via botocore -pytz==2021.1 +pytz==2021.3 # via django -requests==2.25.1 +requests==2.26.0 # via -r requirements.in -s3transfer==0.4.2 +s3transfer==0.5.0 # via boto3 -sentry-sdk==1.0.0 +sentry-sdk==1.4.3 # via -r requirements.in -six==1.15.0 +six==1.16.0 # via # django-spurl # python-dateutil -sqlparse==0.4.1 +sqlparse==0.4.2 # via django -urllib3==1.26.4 +urllib3==1.26.7 # via # botocore # requests # sentry-sdk urlobject==2.4.3 # via django-spurl -whitenoise==5.2.0 +whitenoise==5.3.0 # via -r requirements.in zope.event==4.5.0 # via gevent From b61830a9beb0ec9c1b27d28caea96e8036498b5f Mon Sep 17 00:00:00 2001 From: Alex Stefanescu Date: Tue, 9 Nov 2021 20:05:42 +0200 Subject: [PATCH 07/71] Update platform rules --- .../hub/templates/platform_rules.html | 98 +++++++++++-------- 1 file changed, 57 insertions(+), 41 deletions(-) diff --git a/civil_society_vote/hub/templates/platform_rules.html b/civil_society_vote/hub/templates/platform_rules.html index 31f10710..5ca13be3 100644 --- a/civil_society_vote/hub/templates/platform_rules.html +++ b/civil_society_vote/hub/templates/platform_rules.html @@ -1,5 +1,5 @@ {% extends 'ngo/base.html' %} -{% load social_share %} +{% load social_share %} {% load static %} {% load spurl %} {% load i18n %} @@ -14,9 +14,9 @@

- VotONG este un ecosistem de soluții tehnice care să deservească alegerea reprezentanților societății - civile în forurile consultative prevăzute de lege precum și orice alte funcțiuni de reprezentare - pentru societatea civilă. + VotONG este un ecosistem de soluții tehnice care să deservească alegerea reprezentanților societății civile + în forurile consultative prevăzute de lege precum și orice alte funcțiuni de reprezentare pentru societatea + civilă.

Exemple de foruri consultative prevăzute de legislații specifice, în vigoare: @@ -36,13 +36,25 @@

Cine poate participa la procesul de votare?

Orice:

    -
  • asociație, fundație sau federație înregistrată legal în România conform OG 26/2000, și/sau Legii 21/1924 privind asociaţiile şi fundaţiile (cu modificările şi completările ulterioare),
  • -
  • fundație pentru tineret de la nivel județean sau a municipiului București, sau Fundația Națională pentru Tineret, înființată în baza legii 146/2002 (cu modificările și completările ulterioare) precum și Societatea Națională de Cruce Roșie din România înființată în baza Legii 139/1995 (modificată și completată de Legea 524/2004) și a structurilor sale cu personalitate juridică,
  • +
  • asociație, fundație sau federație înregistrată legal în România conform OG 26/2000, și/sau Legii 21/1924 + privind asociaţiile şi fundaţiile (cu modificările şi completările ulterioare),
  • +
  • fundație pentru tineret de la nivel județean sau a municipiului București, sau Fundația Națională pentru + Tineret, înființată în baza legii 146/2002 (cu modificările și completările ulterioare) precum și
  • +
  • Societatea Națională de Cruce Roșie din România înființată în baza Legii 139/1995 (modificată și + completată de Legea 524/2004) și a structurilor sale cu personalitate juridică,
-

care a depus bilanţ contabil în anul premergător celui destinat alegerilor, cu excepția asociațiilor de întreprinzători și a asociațiilor de locatari. Nu sunt eligibile acele organizații în care membrii conducerii organizației (Președinte și Consiliu Director) sunt membri ai conducerii unui partid politic sau persoane care au fost alese într-o funcție publică.

+

care a depus bilanţ contabil în anul premergător celui destinat alegerilor, cu excepția asociațiilor de + întreprinzători și a asociațiilor de locatari. Nu sunt eligibile acele organizații în care membrii + conducerii organizației (Președinte și Consiliu Director) sunt membri ai conducerii unui partid politic sau + persoane care au fost alese într-o funcție publică.

-

În funcție de specificul rundei electorale, pot fi adăugate criterii suplimentare celor de mai sus, urmând ca organizațiile care nu respectă toate noile criterii să aibă contul dezactivat pe perioada oricărei runde în care nu sunt eligibili pentru a-și exprima votul.

+

O primă validare a organizațiilor prezente în platformă s-a desfășurat în toamna anului 2019. Începând din + 2022, revalidarea organizațiilor din platformă se va face anual de către Asociația Code for Romania.

+ +

În funcție de specificul rundei electorale, pot fi adăugate criterii suplimentare celor de mai sus, urmând ca + organizațiile care nu respectă toate noile criterii să aibă contul dezactivat pe perioada oricărei runde în + care nu sunt eligibili pentru a-și exprima votul.

Rolul Asociației Code for Romania @@ -116,9 +128,6 @@

pentru societatea civilă, care include sistemul de vot - cu drept de vot doar asupra chestiunilor care nu privesc validarea ONG-urilor electori, a candidatilor și a procesului de vot; -
  • 1 reprezentant al Serviciului pentru Politici de Cooperare cu Mediul Asociativ, Direcția - Generală Guvernare Deschisă, Relații Publice și Cooperare din cadrul Secretariatul General al - Guvernului (SGG) - fără drept de vot;
  • 1 reprezentant din aparatul executiv al instituției pentru care se desfășoară alegerile - fără drept de vot.
  • @@ -129,8 +138,8 @@

    - Cei 5 reprezentanți din partea societății civile sunt aleși pentru un mandat de 2 ani prin platforma - VotONG. Primele alegeri vor fi organizate în primul semestru al anului 2021. + Cei 5 reprezentanți din partea societății civile sunt aleși pentru un mandat de 3 ani prin platforma VotONG. + Primele alegeri sunt organizate la finalul anului 2021 și mandatul noii comisii începe la 1 ianuarie 2022.

    @@ -141,12 +150,21 @@

    - Mandatul Comisiei Electorale interimare este unul limitat la (1) organizarea alegerilor pentru - Comitetul Economic și Social, (2) pregătirea unui raport la finalizarea procesului de desemnare a - reprezentanților societății civile în Comitetul Economic și Social în care să analizeze desfășurarea - alegerilor și să propună îmbunătățiri procedurii de alegere, precum și sistemului VotONG, (3) să - stabilească condițiile de eligibilitate pentru membrii Comisiei Electorale astfel încât să se poată - desfășura alegerile pentru componența finală a acesteia. + Mandatul Comisiei Electorale interimare a fost unul limitat la (1) organizarea alegerilor pentru Comitetul + Economic și Social. +

    + +

    + Fiecare dintre cele 5 organizații membre ale Comisiei Electorale își desemnează un reprezentant unic în + Comisia Electorală. Acesta trebuie să fie membru în organismele de conducere ale organizației și să nu fie + membru al conducerii unui partid politic, să nu dețină o funcție publică aleasă sau una de demnitar al + statului român. +

    + +

    + Oricare dintre organizații își poate schimba reprezentantul în Comisia Electorală printr-o notificare + scrisă, transmisă pe e-mail la adresa comisie@votong.ro. Informația va fi transmisă către toate + organizațiile participante în platformă de către Asociația Code for Romania.

    @@ -154,26 +172,26 @@

      -
    • Dezvoltarea și aprobarea procedurii de alegere a reprezentanților societății civile pentru - fiecare dintre forurile consultative prevăzute de lege. Procedura va cuprinde două secțiuni care - definesc: (a) Criteriile de îndeplinit pentru a deveni ONG elector/votant valid; (b) Criteriile - de îndeplinit pentru a deveni candidat valid al grupului societății civile (reprezentant de - ONG). Procedura va trebui supusă unui proces de consultare cu societatea civilă folosind modulul - de consultare al platformei VotONG.
    • -
    • Stabilirea calendarului alegerilor și aprobarea oricăror modificări a acestuia. 3. Depunerea de - eforturi pentru ca ecosistemul VotONG să fie integrat/recunoscut în procesele de constituire a - structurilor consultative, în conformitate cu legislația specifică, pentru ocuparea fotoliilor - prevăzute pentru societatea civilă.
    • +
    • Dezvoltarea și aprobarea procedurii de alegere a reprezentanților societății civile pentru fiecare + dintre forurile consultative prevăzute de lege. Procedura va cuprinde două secțiuni care definesc: (a) + Criteriile de îndeplinit pentru a deveni ONG elector/votant valid; (b) Criteriile de îndeplinit pentru a + deveni candidat valid al grupului societății civile (reprezentant de ONG). Procedura va trebui supusă + unui proces de consultare cu societatea civilă folosind modulul de consultare al platformei VotONG. +
    • +
    • Stabilirea calendarului alegerilor și aprobarea oricăror modificări a acestuia.
    • +
    • Depunerea de eforturi pentru ca ecosistemul VotONG să fie integrat/recunoscut în procesele de + constituire a structurilor consultative, în conformitate cu legislația specifică, pentru ocuparea + fotoliilor prevăzute pentru societatea civilă.
    • Validarea ONG-urilor electoare, care se va face prin vot nesecret;
    • Validarea candidaturilor înregistrate pentru alegeri;
    • -
    • Asigurarea și urmărirea procesului electoral, electronic și nesecret (opțiunile exprimate fiind - vizibile doar reprezentantului Code for Romania, din poziția de administrator tehnic, care își - asumă sarcina de a nu divulga aceste opțiuni), avand ca rezultat desemnarea reprezentanților - societății civile în componența instituției care face obiectul alegerilor;
    • -
    • Formularea, depunerea și susținerea propunerii de desemnare a reprezentanților societății civile - în cadrul structurilor consultative către instituția pentru care se organizează alegerile; 8. - Aducerea la cunoștința electorilor a deciziei instituției vizate privind componența structurii - consultative.
    • +
    • Asigurarea și urmărirea procesului electoral, electronic și nesecret (opțiunile exprimate fiind vizibile + doar reprezentantului Code for Romania, din poziția de administrator tehnic, care își asumă sarcina de a + nu divulga aceste opțiuni), avand ca rezultat desemnarea reprezentanților societății civile în + componența instituției care face obiectul alegerilor;
    • +
    • Formularea, depunerea și susținerea propunerii de desemnare a reprezentanților societății civile în + cadrul structurilor consultative către instituția pentru care se organizează alegerile; 8. Aducerea la + cunoștința electorilor a deciziei instituției vizate privind componența structurii consultative. +
    • Aprobarea utilizării platformei VotONG.ro pentru proceduri de consultare sau alegere de reprezentanți ai societății civile în afara desemnării pentru forurile consultative menționate la punctul 1.
    • @@ -184,10 +202,8 @@

        -
      • Fiecare organizație membră a Comisiei Electorale va comunica reprezentantul său precum și - informațiile de contact ale acestuia la comisie@votong.ro
      • -
      • Ședințele Comisiei Electorale se desfășoară la cererea oricărui membru, transmisă de regulă cu - cinci zile lucrătoare înainte către ceilalți membri și către comisie@votong.ro.
      • +
      • Fiecare organizație membră a Comisiei Electorale va comunica reprezentantul său precum și informațiile de contact ale acestuia la comisie@votong.ro
      • +
      • Ședințele Comisiei Electorale se desfășoară la cererea oricărui membru, transmisă de regulă cu cinci zile lucrătoare înainte către ceilalți membri și către comisie@votong.ro.
    From ab7d24f66a79b8048e813c7d57cbfff114d1ff21 Mon Sep 17 00:00:00 2001 From: Alex Stefanescu Date: Tue, 9 Nov 2021 20:21:00 +0200 Subject: [PATCH 08/71] Update C4ro logo in about page --- .../static/images/code4romania.svg | 1 + .../static/images/codeforromania.png | Bin 5083 -> 23220 bytes 2 files changed, 1 insertion(+) create mode 100755 civil_society_vote/static/images/code4romania.svg diff --git a/civil_society_vote/static/images/code4romania.svg b/civil_society_vote/static/images/code4romania.svg new file mode 100755 index 00000000..45d41816 --- /dev/null +++ b/civil_society_vote/static/images/code4romania.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/civil_society_vote/static/images/codeforromania.png b/civil_society_vote/static/images/codeforromania.png index edaab61891995d80bd744fc195953710b8718b80..e1f7b438dc57613bf37fb17cbdf8dae8e700b918 100644 GIT binary patch literal 23220 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 k|E$MD&R{#J2 literal 5083 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 From 12adb39b3d0990d39aa33df067f6772ef289623c Mon Sep 17 00:00:00 2001 From: radu <39530866+RaduBuciuceanu@users.noreply.github.com> Date: Tue, 9 Nov 2021 22:14:35 +0200 Subject: [PATCH 09/71] [feature/header] Configure made by header (#258) * [feature/header] Increase bulma version * [feature/header] Change header file * [feature/header] Create black icon --- civil_society_vote/hub/templates/base.html | 2 +- civil_society_vote/hub/templates/header.html | 9 +++++++++ civil_society_vote/static/images/code4romania-black.svg | 1 + 3 files changed, 11 insertions(+), 1 deletion(-) create mode 100644 civil_society_vote/static/images/code4romania-black.svg diff --git a/civil_society_vote/hub/templates/base.html b/civil_society_vote/hub/templates/base.html index 082e6678..ecbeb199 100644 --- a/civil_society_vote/hub/templates/base.html +++ b/civil_society_vote/hub/templates/base.html @@ -19,7 +19,7 @@ {% block meta_tags %}{% with title="VotONG" %}{% meta_tags %}{% endwith %}{% endblock %} - + diff --git a/civil_society_vote/hub/templates/header.html b/civil_society_vote/hub/templates/header.html index 979a9383..0bdfce76 100644 --- a/civil_society_vote/hub/templates/header.html +++ b/civil_society_vote/hub/templates/header.html @@ -3,6 +3,15 @@ {% load hub_tags %}