4 |
Polityka Prywatności
5 |
Data ostatniej aktualizacji: 04.18.2024
6 |
Użycie Google Analytics
7 |
8 | Na naszej stronie stosujemy Google Analytics, narzędzie analizy webowej firmy Google Inc. ("Google"). Google Analytics używa tzw. "cookies", czyli plików tekstowych zapisywanych na Twoim komputerze, które umożliwiają analizę sposobu korzystania ze strony internetowej. Informacje generowane przez cookie na temat Twojego korzystania ze strony internetowej (łącznie z Twoim adresem IP) są przekazywane do Google i przechowywane przez firmę na serwerach w Stanach Zjednoczonych.
9 |
10 |
11 | Google wykorzystuje te informacje w celu oceny Twojego korzystania ze strony internetowej, tworzenia raportów dotyczących aktywności na stronie dla operatorów stron internetowych oraz świadczenia innych usług związanych z aktywnością na stronie i korzystaniem z Internetu. Google może również przekazywać te informacje osobom trzecim, jeżeli wymaga tego prawo, lub gdy takie osoby trzecie przetwarzają informacje w imieniu Google.
12 |
13 |
14 | Możesz odmówić korzystania z cookies, wybierając odpowiednie ustawienia w swojej przeglądarce, jednak należy pamiętać, że w takim przypadku nie będziesz mógł korzystać z pełnej funkcjonalności tej strony. Korzystając z tej strony, wyrażasz zgodę na przetwarzanie danych o Tobie przez Google w sposób i w celach opisanych powyżej.
15 |
16 |
Jak wyłączyć cookies?
17 |
18 | Jeśli nie chcesz, aby cookies były zapisywane na Twoim urządzeniu, możesz zmienić ustawienia swojej przeglądarki. Informacje o tym, jak to zrobić, znajdziesz na stronach pomocniczych swojej przeglądarki.
19 |
20 |
21 | {% endblock %}
22 |
--------------------------------------------------------------------------------
/src/community_app/models.py:
--------------------------------------------------------------------------------
1 | import html
2 | from datetime import datetime
3 |
4 | from django.conf import settings
5 | from django.db import models
6 | from django.template.defaultfilters import safe, slugify
7 | from django.urls import reverse
8 | from django.utils.functional import cached_property
9 | from django.utils.html import strip_tags
10 | from django.utils.translation import gettext_lazy as _
11 | from rest_framework import serializers
12 |
13 |
14 | class Article(models.Model):
15 | title = models.CharField(max_length=200)
16 | content = models.JSONField() # Store Slate's content as JSON
17 | image = models.ImageField(upload_to="article_images/", null=True, blank=True)
18 | created_at = models.DateTimeField(auto_now_add=True)
19 | updated_at = models.DateTimeField(auto_now=True)
20 | author = models.CharField(max_length=200, default="Admin")
21 |
22 | def __str__(self):
23 | return self.title
24 |
25 |
26 | class TeamMember(models.Model):
27 | class Role(models.IntegerChoices):
28 | CREATOR = 0, _("Twórca aplikacji")
29 | DEVELOPER = 1, _("Programista")
30 | SUPPORTER = 2, _("Wyjątkowo chojny wspierający")
31 | SUPPORTER_SMALL = 3, _("Wspierający")
32 |
33 | # badge = models.CharField(max_length=10, null=True, blank=True)
34 | name = models.CharField(max_length=64)
35 | role = models.IntegerField(choices=Role.choices, default=Role.SUPPORTER_SMALL)
36 | since = models.CharField(max_length=7, default="YYYY-MM")
37 | facebook_url = models.URLField(null=True, blank=True)
38 | # linkedin_url = models.URLField(null=True, blank=True)
39 | about = models.TextField(null=True, blank=True)
40 | photo = models.ImageField(upload_to="photos", null=True, blank=True)
41 |
42 | def __str__(self) -> str:
43 | return f"{self.name} - {self.role}"
44 |
45 | class Meta:
46 | ordering = ["-role"]
47 |
--------------------------------------------------------------------------------
/src/api/views/home.py:
--------------------------------------------------------------------------------
1 | from django.urls import reverse
2 | from django.utils.decorators import method_decorator
3 | from django.views.decorators.cache import cache_page
4 | from rest_framework import status
5 | from rest_framework.response import Response
6 | from rest_framework.viewsets import ViewSet
7 |
8 | from sejm_app.models import Club, Committee, Process, Voting
9 |
10 |
11 | class HomeViewSet(ViewSet):
12 | @method_decorator(cache_page(60 * 15)) # Cache for 15 minutes
13 | def list(self, request):
14 | latest_votings = Voting.objects.order_by("-date")[:4].values(
15 | "id", "title", "success", "category", "topic"
16 | )
17 |
18 | cards = [
19 | {
20 | "title": "Wszystkich głosowań",
21 | "count": Voting.objects.count(),
22 | "color": "destructive",
23 | "url": "/votings/",
24 | },
25 | {
26 | "title": "Komisji parlamentarnych",
27 | "count": Committee.objects.count(),
28 | "color": "destructive",
29 | "url": "/committees/",
30 | },
31 | {
32 | "title": "Wszystkich projektów",
33 | "count": Process.objects.count(),
34 | "color": "destructive",
35 | "url": "/processes/",
36 | },
37 | {
38 | "title": "Oczekujących projektów",
39 | "count": sum(
40 | not process.is_finished for process in Process.objects.all()
41 | ),
42 | "color": "default",
43 | "url": "/processes/" + "?state=on",
44 | },
45 | ]
46 |
47 | data = {
48 | "latest_votings": latest_votings,
49 | "cards": cards,
50 | }
51 |
52 | return Response(data, status=status.HTTP_200_OK)
53 |
--------------------------------------------------------------------------------
/frontend/app/processes-results/columns.tsx:
--------------------------------------------------------------------------------
1 | "use client";
2 |
3 | import { DataTableColumnHeader } from "@/components/dataTable/columns";
4 | import { ColumnDefE } from "@/lib/types";
5 | import { ColumnDef } from "@tanstack/react-table";
6 | import { useRouter } from "next/navigation";
7 |
8 | export const columns: ColumnDefE