Skip to content
Merged
5 changes: 0 additions & 5 deletions chats/consumers/chat.py
Original file line number Diff line number Diff line change
Expand Up @@ -205,8 +205,3 @@ async def __process_general_event(self, event: Event, room_name: str):
# await self.close(200)
else:
raise ValueError("Unknown event type")


class NotificationConsumer(AsyncJsonWebsocketConsumer):
# TODO: implement this
pass
3 changes: 2 additions & 1 deletion chats/consumers/notification.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
from channels.generic.websocket import AsyncJsonWebsocketConsumer


class ChatConsumer(AsyncJsonWebsocketConsumer):
class NotificationConsumer(AsyncJsonWebsocketConsumer):
# TODO: implement this
pass
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Generated by Django 4.1.3 on 2023-03-22 20:27
# Generated by Django 4.1.3 on 2023-04-03 13:04

from django.db import migrations

Expand All @@ -10,7 +10,14 @@ class Migration(migrations.Migration):
]

operations = [

migrations.RemoveField(
model_name="directchatmessage",
name="file_url",
),
migrations.RemoveField(
model_name="projectchatmessage",
name="file_url",
),
migrations.DeleteModel(
name="ChatAttachment",
),
Expand Down
48 changes: 47 additions & 1 deletion events/admin.py
Original file line number Diff line number Diff line change
@@ -1,15 +1,61 @@
from django.contrib import admin

from django import forms
from events.models import Event


class EventAdminForm(forms.ModelForm):
class Meta:
model = Event
fields = "__all__"
labels = {
"title": "Название",
"text": "Описание",
"short_text": "Краткое описание",
"cover_url": "URL обложки",
"datetime_of_event": "Дата проведения",
"datetime_created": "Дата создания",
"datetime_updated": "Дата изменения",
"tg_message_id": "ID поста в ТГ",
"website_url": "URL от организатора",
"event_type": "Формат проведения",
"prize": "Награда",
"registered_users": "Зарегистрированные пользователи",
"views": "Просмотры",
"likes": "Оценили",
"tags": "Теги"
}
help_texts = {
"title": "Обязателен к заполнению, max 256 символов",
"text": "Описание мероприятия на сайт, обязаетльно к заполнению",
"short_text": "Краткое описание для превью, 256 симв. макс., можно оставить пустым",
"cover_url": "Ссылка на картинку для обложки мероприятия, обязательно",
"datetime_of_event": "Дата проведения, обязательно",
"website_url": "URL от организатора, обязательно",
"event_type": "Формат проведения",
"prize": "256 char, обязательно",
"tags": "Указывать через запятую(можно использовать пробел в теге)"
}


@admin.register(Event)
class EventAdmin(admin.ModelAdmin):
form = EventAdminForm
save_as = True
save_on_top = True
filter_horizontal = ["registered_users", "favorites", "likes"]
list_display = (
"id",
"title",
"datetime_created",
)
list_display_links = (
"id",
"title",
"datetime_created",
)
readonly_fields = (
"tg_message_id",
"views",
"likes",
)
radio_fields = {"event_type": admin.VERTICAL}
1 change: 1 addition & 0 deletions events/apps.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
class EventsConfig(AppConfig):
default_auto_field = "django.db.models.BigAutoField"
name = "events"
verbose_name = "Мероприятия"

def ready(self):
if settings.AUTOPOSTING_ON:
Expand Down
11 changes: 11 additions & 0 deletions events/constants.py
Original file line number Diff line number Diff line change
@@ -1,2 +1,13 @@
APP_URL = "https://procollab.ru/events"
TELEGRAM_API_URL = "https://api.telegram.org/bot"
MAIN_URL = "https://procollab.ru"

OFFLINE = 0
ONLINE = 1
ONLINE_OFFLINE = 2

VERBOSE_EVENT_TYPE = (
(OFFLINE, "Оффлайн"),
(ONLINE, "Онлайн"),
(ONLINE_OFFLINE, "Оффлайн и онлайн"),
)
12 changes: 12 additions & 0 deletions events/migrations/0005_auto_20230323_0032.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
# Generated by Django 4.1.3 on 2023-03-22 21:32

from django.db import migrations


class Migration(migrations.Migration):

dependencies = [
("events", "0004_alter_event_tg_message_id"),
]

operations = []
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
# Generated by Django 4.1.3 on 2023-03-22 21:41

from django.conf import settings
from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
("events", "0005_auto_20230323_0032"),
]

operations = [
migrations.AddField(
model_name="event",
name="event_type",
field=models.PositiveSmallIntegerField(
choices=[(0, "Оффлайн"), (1, "Онлайн"), (2, "Оффлайн и онлайн")],
default=0,
),
),
migrations.AddField(
model_name="event",
name="favorites",
field=models.ManyToManyField(
blank=True, related_name="favorites", to=settings.AUTH_USER_MODEL
),
),
migrations.AddField(
model_name="event",
name="likes",
field=models.ManyToManyField(
blank=True, related_name="likes", to=settings.AUTH_USER_MODEL
),
),
migrations.AddField(
model_name="event",
name="prize",
field=models.CharField(max_length=256, null=True),
),
migrations.AddField(
model_name="event",
name="registered_users",
field=models.ManyToManyField(
blank=True, related_name="events", to=settings.AUTH_USER_MODEL
),
),
migrations.AddField(
model_name="event",
name="views",
field=models.BigIntegerField(default=0),
),
migrations.AddField(
model_name="event",
name="website_url",
field=models.URLField(default="https://procollab.ru"),
),
migrations.AlterField(
model_name="event",
name="short_text",
field=models.TextField(
blank=True, help_text="Текст для поста в телеграм", max_length=256
),
),
]
25 changes: 25 additions & 0 deletions events/migrations/0007_event_tags.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
# Generated by Django 4.1.3 on 2023-03-23 15:41

from django.db import migrations
import taggit.managers


class Migration(migrations.Migration):

dependencies = [
("taggit", "0005_auto_20220424_2025"),
("events", "0006_event_event_type_event_favorites_event_likes_and_more"),
]

operations = [
migrations.AddField(
model_name="event",
name="tags",
field=taggit.managers.TaggableManager(
help_text="A comma-separated list of tags.",
through="taggit.TaggedItem",
to="taggit.Tag",
verbose_name="Tags",
),
),
]
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
# Generated by Django 4.1.3 on 2023-03-26 19:47

from django.db import migrations


class Migration(migrations.Migration):

dependencies = [
("events", "0005_alter_event_tg_message_id"),
("events", "0007_event_tags"),
]

operations = []
33 changes: 33 additions & 0 deletions events/migrations/0009_alter_event_datetime_created_and_more.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
# Generated by Django 4.1.3 on 2023-04-03 12:52

from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
("events", "0008_merge_0005_alter_event_tg_message_id_0007_event_tags"),
]

operations = [
migrations.AlterField(
model_name="event",
name="datetime_created",
field=models.DateTimeField(auto_now_add=True),
),
migrations.AlterField(
model_name="event",
name="datetime_of_event",
field=models.DateTimeField(),
),
migrations.AlterField(
model_name="event",
name="datetime_updated",
field=models.DateTimeField(auto_now=True),
),
migrations.AlterField(
model_name="event",
name="tg_message_id",
field=models.IntegerField(blank=True, null=True),
),
]
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
# Generated by Django 4.1.3 on 2023-04-03 13:13

from django.conf import settings
from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
("events", "0009_alter_event_datetime_created_and_more"),
]

operations = [
migrations.AlterField(
model_name="event",
name="likes",
field=models.ManyToManyField(
blank=True,
editable=False,
related_name="likes",
to=settings.AUTH_USER_MODEL,
),
),
migrations.AlterField(
model_name="event",
name="short_text",
field=models.TextField(blank=True, max_length=256),
),
migrations.AlterField(
model_name="event",
name="tg_message_id",
field=models.IntegerField(blank=True, editable=False, null=True),
),
migrations.AlterField(
model_name="event",
name="views",
field=models.BigIntegerField(default=0, editable=False),
),
]
37 changes: 26 additions & 11 deletions events/models.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,10 @@
from django.contrib.auth import get_user_model
from django.db import models
from taggit.managers import TaggableManager

# from django.conf import settings
from events.constants import MAIN_URL, VERBOSE_EVENT_TYPE

User = get_user_model()


class Event(models.Model):
Expand All @@ -12,24 +16,35 @@ class Event(models.Model):
text: A TextField event text content.
short_text: A TextField event short text content.
cover_url: A URLField link to event cover image.
# datetime_created: A DateTimeField indicating date of creation.
tg_message_id: A IntegerField Telegram message id (for editing message)
website_url: URLField url to company website
event_type: PositiveSmallIntegerField choice from "online", "offline" and "offline and online"
prize: CharField described what the person will get
favorites: ManyToManyField User can select favorite events
registered_users: ManyToManyField list of registered users
views: BigIntegerField
likes: ManyToManyField likes from users
datetime_created: A DateTimeField indicating date of creation.
datetime_updated: A DateTimeField indicating date of update.
"""

title = models.CharField(max_length=256, null=False)
text = models.TextField(null=False, blank=False)
text = models.TextField(null=False)
short_text = models.TextField(max_length=256, blank=True)
cover_url = models.URLField(null=False)
datetime_of_event = models.DateTimeField(verbose_name="Дата проведения", null=False)

datetime_created = models.DateTimeField(
verbose_name="Дата создания", null=False, auto_now_add=True
)
datetime_updated = models.DateTimeField(
verbose_name="Дата изменения", null=False, auto_now=True
)
datetime_of_event = models.DateTimeField(null=False)
datetime_created = models.DateTimeField(null=False, auto_now_add=True)
datetime_updated = models.DateTimeField(null=False, auto_now=True)
tg_message_id = models.IntegerField(blank=True, null=True, editable=False)
website_url = models.URLField(null=False, default=MAIN_URL)
event_type = models.PositiveSmallIntegerField(choices=VERBOSE_EVENT_TYPE, default=0)
prize = models.CharField(max_length=256, null=True)
favorites = models.ManyToManyField(User, blank=True, related_name="favorites")
registered_users = models.ManyToManyField(User, blank=True, related_name="events")
views = models.BigIntegerField(default=0, editable=False)
likes = models.ManyToManyField(User, blank=True, related_name="likes", editable=False)

tags = TaggableManager()

def __str__(self):
return f"Event<{self.id}> - {self.title}"
Expand Down
Loading