Skip to content

Commit 2c64569

Browse files
authored
Merge pull request #304 from PROCOLLAB-github/dev
Dev
2 parents e3a7321 + fb905e9 commit 2c64569

19 files changed

Lines changed: 313 additions & 80 deletions

File tree

chats/urls.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,26 +16,26 @@
1616

1717
urlpatterns = [
1818
path("directs/", DirectChatList.as_view(), name="direct-chat-list"),
19-
path("directs/<slug:pk>/", DirectChatDetail.as_view(), name="direct-chat-detail"),
19+
path("directs/<slug:id>/", DirectChatDetail.as_view(), name="direct-chat-detail"),
2020
path(
21-
"directs/<slug:pk>/messages/",
21+
"directs/<slug:id>/messages/",
2222
DirectChatMessageList.as_view(),
2323
name="direct-chat-messages",
2424
),
2525
path(
26-
"directs/<slug:pk>/files/",
26+
"directs/<slug:id>/files/",
2727
DirectChatFileList.as_view(),
2828
name="direct-chat-files",
2929
),
3030
path("projects/", ProjectChatList.as_view(), name="project-chat-list"),
3131
path("projects/<int:pk>/", ProjectChatDetail.as_view(), name="project-chat-detail"),
3232
path(
33-
"projects/<int:pk>/messages/",
33+
"projects/<int:id>/messages/",
3434
ProjectChatMessageList.as_view(),
3535
name="project-chat-messages",
3636
),
3737
path(
38-
"projects/<int:pk>/files/",
38+
"projects/<int:id>/files/",
3939
ProjectChatFileList.as_view(),
4040
name="project-chat-files",
4141
),

chats/views.py

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -86,13 +86,13 @@ class DirectChatDetail(RetrieveAPIView):
8686

8787
def get(self, request, *args, **kwargs) -> Response:
8888
try:
89-
assert "_" in self.kwargs["pk"], "pk must contain underscore"
89+
assert "_" in self.kwargs["id"], "processed id must contain underscore"
9090

91-
user1_id, user2_id = map(int, self.kwargs["pk"].split("_"))
91+
user1_id, user2_id = map(int, self.kwargs["id"].split("_"))
9292

9393
assert (
9494
request.user.id == user1_id or request.user.id == user2_id
95-
), "current user id is not present in pk"
95+
), "current user id is not present in raw id"
9696

9797
user1 = User.objects.get(pk=user1_id)
9898
user2 = User.objects.get(pk=user2_id)
@@ -117,7 +117,7 @@ def get(self, request, *args, **kwargs) -> Response:
117117
except ValueError:
118118
return Response(
119119
status=status.HTTP_400_BAD_REQUEST,
120-
data={"detail": "pk must contain two integers separated by underscore"},
120+
data={"detail": "processed id must contain two integers separated by underscore"},
121121
)
122122
except AssertionError as e:
123123
return Response(status=status.HTTP_400_BAD_REQUEST, data={"detail": str(e)})
@@ -140,7 +140,7 @@ class DirectChatMessageList(ListCreateAPIView):
140140

141141
def get_queryset(self):
142142
return (
143-
self.request.user.direct_chats.get(id=self.kwargs["pk"])
143+
self.request.user.direct_chats.get(id=self.kwargs["id"])
144144
.messages.filter(is_deleted=False)
145145
.order_by("-created_at")
146146
.all()
@@ -155,7 +155,7 @@ class ProjectChatMessageList(ListCreateAPIView):
155155
def get_queryset(self):
156156
try:
157157
return (
158-
ProjectChat.objects.get(id=self.kwargs["pk"])
158+
ProjectChat.objects.get(id=self.kwargs["id"])
159159
.messages.filter(is_deleted=False)
160160
.order_by("-created_at")
161161
.all()
@@ -177,7 +177,8 @@ class DirectChatFileList(ListCreateAPIView):
177177
permission_classes = [IsAuthenticated]
178178

179179
def get_queryset(self):
180-
messages = self.request.user.direct_chats.get(id=self.kwargs["pk"]).messages.all()
180+
181+
messages = self.request.user.direct_chats.get(id=self.kwargs["id"]).messages.all()
181182

182183
return get_all_files(messages)
183184

@@ -188,7 +189,7 @@ class ProjectChatFileList(ListCreateAPIView):
188189

189190
def get_queryset(self):
190191
try:
191-
messages = ProjectChat.objects.get(id=self.kwargs["pk"]).messages.all()
192+
messages = ProjectChat.objects.get(id=self.kwargs["id"]).messages.all()
192193
return get_all_files(messages)
193194
except ProjectChat.DoesNotExist:
194195
return UserFile.objects.none()

docker-compose.dev-ci.yml

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
version: '3.9'
2-
2+
3+
4+
35
services:
46
web:
57
container_name: web
@@ -9,7 +11,7 @@ services:
911
image: ghcr.io/procollab-github/api:latest
1012
restart: always
1113
volumes:
12-
- log:/procollab/log
14+
- ./log:/procollab/log
1315
env_file:
1416
- .env
1517
environment:
@@ -35,27 +37,25 @@ services:
3537
volumes:
3638
- prom-data:/prometheus
3739
- ./prometheus:/etc/prometheus
38-
node-exporter:
39-
container_name: node-exporter
40-
image: prom/node-exporter:v1.3.1
41-
expose:
42-
- 9100
43-
volumes:
44-
- /proc:/host/proc:ro
45-
- /sys:/host/sys:ro
46-
- /:/rootfs:ro
47-
command:
48-
- '--path.procfs=/host/proc'
49-
- '--path.sysfs=/host/sys'
50-
- '--collector.filesystem.mount-points-exclude'
51-
- '^/(sys|proc|dev|host|etc|rootfs/var/lib/docker/containers|rootfs/var/lib/docker/overlay2|rootfs/run/docker/netns|rootfs/var/lib/docker/aufs)($$|/)'
5240
nginx:
5341
container_name: nginx
5442
build: ./nginx
5543
depends_on:
5644
- web
5745
ports:
5846
- 8000:80
47+
loki:
48+
image: grafana/loki:2.9.0
49+
ports:
50+
- "3100:3100"
51+
command: -config.file=/etc/loki/local-config.yaml
52+
promtail:
53+
image: grafana/promtail:2.9.0
54+
volumes:
55+
- /var/log:/var/log
56+
- ./promtail:/etc/promtail
57+
- ./log:/procollab/log
58+
command: -config.file=/etc/promtail/config.yml
5959

6060
redis:
6161
container_name: redis
@@ -64,11 +64,11 @@ services:
6464
- 6379
6565
volumes:
6666
- redis-data:/data
67-
6867
volumes:
6968
grafana-data:
7069
grafana-configs:
7170
prom-data:
7271
prom-configs:
7372
log:
73+
promtail:
7474
redis-data:

docker-compose.yml

Lines changed: 17 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
version: '3.9'
22

3+
4+
35
services:
46
web:
57
container_name: web
@@ -9,7 +11,7 @@ services:
911
image: ghcr.io/procollab-github/api:latest
1012
restart: always
1113
volumes:
12-
- log:/procollab/log
14+
- ./log:/procollab/log
1315
env_file:
1416
- .env
1517
environment:
@@ -35,27 +37,26 @@ services:
3537
volumes:
3638
- prom-data:/prometheus
3739
- ./prometheus:/etc/prometheus
38-
node-exporter:
39-
container_name: node-exporter
40-
image: prom/node-exporter:v1.3.1
41-
expose:
42-
- 9100
43-
volumes:
44-
- /proc:/host/proc:ro
45-
- /sys:/host/sys:ro
46-
- /:/rootfs:ro
47-
command:
48-
- '--path.procfs=/host/proc'
49-
- '--path.sysfs=/host/sys'
50-
- '--collector.filesystem.mount-points-exclude'
51-
- '^/(sys|proc|dev|host|etc|rootfs/var/lib/docker/containers|rootfs/var/lib/docker/overlay2|rootfs/run/docker/netns|rootfs/var/lib/docker/aufs)($$|/)'
5240
nginx:
5341
container_name: nginx
5442
build: ./nginx
5543
depends_on:
5644
- web
5745
ports:
5846
- 8000:80
47+
loki:
48+
image: grafana/loki:2.9.0
49+
ports:
50+
- "3100:3100"
51+
command: -config.file=/etc/loki/local-config.yaml
52+
promtail:
53+
image: grafana/promtail:2.9.0
54+
volumes:
55+
- /var/log:/var/log
56+
- ./promtail:/etc/promtail
57+
- ./log:/procollab/log
58+
command: -config.file=/etc/promtail/config.yml
59+
5960
redis:
6061
container_name: redis
6162
image: redis:latest
@@ -69,4 +70,5 @@ volumes:
6970
prom-data:
7071
prom-configs:
7172
log:
73+
promtail:
7274
redis-data:

events/urls.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,6 @@
77
urlpatterns = [
88
path("", EventsList.as_view()),
99
path("<int:pk>/", EventDetail.as_view()),
10-
path("<int:pk>/registered/", EventRegisteredUsersList.as_view()),
10+
path("<int:id>/registered/", EventRegisteredUsersList.as_view()),
1111
path("types/", EventTypes.as_view()),
1212
]

events/views.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ class EventRegisteredUsersList(generics.ListAPIView):
3434
permission_classes = [IsStaffOrReadOnly]
3535

3636
def get_queryset(self):
37-
users = Event.objects.get(pk=self.kwargs["pk"]).registered_users.all()
37+
users = Event.objects.get(pk=self.kwargs["id"]).registered_users.all()
3838
return users
3939

4040

loki/loki-config.yaml

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
auth_enabled: false
2+
3+
server:
4+
http_listen_port: 3100
5+
grpc_listen_port: 9096
6+
7+
common:
8+
instance_addr: 127.0.0.1
9+
path_prefix: /tmp/loki
10+
storage:
11+
filesystem:
12+
chunks_directory: /tmp/loki/chunks
13+
rules_directory: /tmp/loki/rules
14+
replication_factor: 1
15+
ring:
16+
kvstore:
17+
store: inmemory
18+
19+
query_range:
20+
results_cache:
21+
cache:
22+
embedded_cache:
23+
enabled: true
24+
max_size_mb: 100
25+
26+
schema_config:
27+
configs:
28+
- from: 2020-10-24
29+
store: boltdb-shipper
30+
object_store: filesystem
31+
schema: v11
32+
index:
33+
prefix: index_
34+
period: 24h
35+
36+
ruler:
37+
alertmanager_url: http://localhost:9093
38+
39+
# By default, Loki will send anonymous, but uniquely-identifiable usage and configuration
40+
# analytics to Grafana Labs. These statistics are sent to https://stats.grafana.org/
41+
#
42+
# Statistics help us better understand how Loki is used, and they show us performance
43+
# levels for most users. This helps us prioritize features and documentation.
44+
# For more information on what's sent, look at
45+
# https://github.com/grafana/loki/blob/main/pkg/usagestats/stats.go
46+
# Refer to the buildReport method to see what goes into a report.
47+
#
48+
# If you would like to disable reporting, uncomment the following lines:
49+
#analytics:
50+
# reporting_enabled: false

news/serializers.py

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -73,8 +73,8 @@ class NewsFeedListSerializer(serializers.ModelSerializer):
7373
image_address = serializers.SerializerMethodField()
7474
is_user_liked = serializers.SerializerMethodField()
7575
files = UserFileSerializer(many=True)
76-
views_count = serializers.IntegerField(default=0)
77-
likes_count = serializers.IntegerField(default=0)
76+
views_count = serializers.SerializerMethodField()
77+
likes_count = serializers.SerializerMethodField()
7878
content_object = serializers.SerializerMethodField()
7979
type_model = serializers.SerializerMethodField()
8080

@@ -106,8 +106,15 @@ def get_content_object(self, obj):
106106
serialized_obj = VacancyDetailSerializer(obj.content_object)
107107
return serialized_obj.data
108108

109+
def get_views_count(self, obj):
110+
return get_views_count(obj)
111+
112+
def get_likes_count(self, obj):
113+
return get_likes_count(obj)
114+
109115
def get_name(self, obj):
110-
return NewsMapping.get_name(obj.content_object)
116+
if obj.content_type.model == CustomUser.__name__.lower():
117+
return f"{obj.content_object.first_name} {obj.content_object.last_name}"
111118

112119
def get_image_address(self, obj):
113120
return NewsMapping.get_image_address(obj.content_object)

0 commit comments

Comments
 (0)