11 changed files with 344 additions and 41 deletions
-
7accounts_app/models.py
-
2msg_app/forms.py
-
161msg_app/locale/ru/LC_MESSAGES/django.po
-
103msg_app/migrations/0001_initial.py
-
37msg_app/models.py
-
17msg_app/templates/msg_app/chat.html
-
8msg_app/templates/msg_app/conversations.html
-
3msg_app/urls.py
-
40msg_app/views.py
-
1requirements.txt
-
6templates/base.html
@ -0,0 +1,161 @@ |
|||||
|
# SOME DESCRIPTIVE TITLE. |
||||
|
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER |
||||
|
# This file is distributed under the same license as the PACKAGE package. |
||||
|
# Dmitry Novikov nerosketch@gmail.com, 2017. |
||||
|
# |
||||
|
#, fuzzy |
||||
|
msgid "" |
||||
|
msgstr "" |
||||
|
"Project-Id-Version: PACKAGE VERSION\n" |
||||
|
"Report-Msgid-Bugs-To: \n" |
||||
|
"POT-Creation-Date: 2017-10-04 17:52+0300\n" |
||||
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" |
||||
|
"Last-Translator: Dmitry Novikov nerosketch@gmail.com\n" |
||||
|
"Language: ru\n" |
||||
|
"MIME-Version: 1.0\n" |
||||
|
"Content-Type: text/plain; charset=UTF-8\n" |
||||
|
"Content-Transfer-Encoding: 8bit\n" |
||||
|
"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" |
||||
|
"%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n" |
||||
|
"%100>=11 && n%100<=14)? 2 : 3);\n" |
||||
|
|
||||
|
#: forms.py:25 |
||||
|
msgid "you must choose at least 1 participants" |
||||
|
msgstr "вы должны выбрать как минимум одного участника" |
||||
|
|
||||
|
#: models.py:14 templates/msg_app/conversations.html.py:54 |
||||
|
msgid "New" |
||||
|
msgstr "Новая" |
||||
|
|
||||
|
#: models.py:15 |
||||
|
msgid "Seen" |
||||
|
msgstr "Просмотренное" |
||||
|
|
||||
|
#: models.py:16 |
||||
|
msgid "Deleted" |
||||
|
msgstr "Удалённое" |
||||
|
|
||||
|
#: models.py:28 |
||||
|
msgid "Message status" |
||||
|
msgstr "Статус сообщения" |
||||
|
|
||||
|
#: models.py:29 |
||||
|
msgid "Messages statuses" |
||||
|
msgstr "Статусы сообщений" |
||||
|
|
||||
|
#: models.py:33 |
||||
|
msgid "Body" |
||||
|
msgstr "Тело" |
||||
|
|
||||
|
#: models.py:34 |
||||
|
msgid "sent at" |
||||
|
msgstr "отправлено" |
||||
|
|
||||
|
#: models.py:36 models.py:234 |
||||
|
msgid "Conversation" |
||||
|
msgstr "Беседа" |
||||
|
|
||||
|
#: models.py:66 |
||||
|
msgid "Message" |
||||
|
msgstr "Сообщение" |
||||
|
|
||||
|
#: models.py:67 |
||||
|
msgid "Messages" |
||||
|
msgstr "Сообщения" |
||||
|
|
||||
|
#: models.py:69 |
||||
|
msgid "Can view messages" |
||||
|
msgstr "может просматривать сообщения" |
||||
|
|
||||
|
#: models.py:77 |
||||
|
msgid "Admin" |
||||
|
msgstr "Админ" |
||||
|
|
||||
|
#: models.py:78 |
||||
|
msgid "Guest" |
||||
|
msgstr "Гость" |
||||
|
|
||||
|
#: models.py:79 |
||||
|
msgid "Banned user" |
||||
|
msgstr "Запрещённый пользователь" |
||||
|
|
||||
|
#: models.py:80 |
||||
|
msgid "Inviter" |
||||
|
msgstr "Создатель" |
||||
|
|
||||
|
#: models.py:90 |
||||
|
msgid "Conversation membership" |
||||
|
msgstr "Членство в беседе" |
||||
|
|
||||
|
#: models.py:91 |
||||
|
msgid "Conversation memberships" |
||||
|
msgstr "Членства в беседах" |
||||
|
|
||||
|
#: models.py:100 |
||||
|
msgid "Participant profile does not found" |
||||
|
msgstr "Учётная запись участника не найдена" |
||||
|
|
||||
|
#: models.py:110 |
||||
|
msgid "No name" |
||||
|
msgstr "Без имени" |
||||
|
|
||||
|
#: models.py:235 templates/msg_app/conversations.html.py:14 |
||||
|
msgid "Conversations" |
||||
|
msgstr "Беседы" |
||||
|
|
||||
|
#: models.py:237 |
||||
|
msgid "Can view conversation" |
||||
|
msgstr "Может просматривать беседы" |
||||
|
|
||||
|
#: templates/msg_app/chat.html:7 templates/msg_app/conversations.html.py:7 |
||||
|
msgid "Private messages" |
||||
|
msgstr "Личные сообщения" |
||||
|
|
||||
|
#: templates/msg_app/chat.html:16 |
||||
|
msgid "peoples" |
||||
|
msgstr "участников" |
||||
|
|
||||
|
#: templates/msg_app/chat.html:26 |
||||
|
msgid "Delete" |
||||
|
msgstr "Удалить" |
||||
|
|
||||
|
#: templates/msg_app/chat.html:58 |
||||
|
msgid "Message history is empty" |
||||
|
msgstr "История сообщений пуста" |
||||
|
|
||||
|
#: templates/msg_app/chat.html:75 |
||||
|
msgid "Send" |
||||
|
msgstr "Отправить" |
||||
|
|
||||
|
#: templates/msg_app/conversations.html:32 |
||||
|
#, python-format |
||||
|
msgid "%(participants_count)s participants, %(msg_count)s messages" |
||||
|
msgstr "%(participants_count)s участников, %(msg_count)s сообщений" |
||||
|
|
||||
|
#: templates/msg_app/conversations.html:38 |
||||
|
msgid "No messages found" |
||||
|
msgstr "Сообщения не найдены" |
||||
|
|
||||
|
#: templates/msg_app/conversations.html:47 |
||||
|
msgid "Any conversations not found" |
||||
|
msgstr "Не найдено ни одной беседы" |
||||
|
|
||||
|
#: templates/msg_app/modal_new_conversation.html:5 |
||||
|
msgid "Create conversation" |
||||
|
msgstr "Создать беседу" |
||||
|
|
||||
|
#: templates/msg_app/modal_new_conversation.html:19 |
||||
|
msgid "for select multiple press ctrl and click on field" |
||||
|
msgstr "Для выбора нескольких ывриантов зажмите ctrl и кликните вариант" |
||||
|
|
||||
|
#: templates/msg_app/modal_new_conversation.html:28 |
||||
|
msgid "Add" |
||||
|
msgstr "Добавить" |
||||
|
|
||||
|
#: views.py:26 |
||||
|
msgid "Conversation has been created" |
||||
|
msgstr "Беседа создана" |
||||
|
|
||||
|
#: views.py:29 views.py:48 |
||||
|
msgid "fix form errors" |
||||
|
msgstr "заполните все поля в соответствии с их форматом" |
||||
@ -0,0 +1,103 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
# Generated by Django 1.9 on 2017-10-04 17:44 |
||||
|
from __future__ import unicode_literals |
||||
|
|
||||
|
from django.conf import settings |
||||
|
from django.db import migrations, models |
||||
|
import django.db.models.deletion |
||||
|
|
||||
|
|
||||
|
class Migration(migrations.Migration): |
||||
|
|
||||
|
initial = True |
||||
|
|
||||
|
dependencies = [ |
||||
|
migrations.swappable_dependency(settings.AUTH_USER_MODEL), |
||||
|
] |
||||
|
|
||||
|
operations = [ |
||||
|
migrations.CreateModel( |
||||
|
name='Conversation', |
||||
|
fields=[ |
||||
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
||||
|
('title', models.CharField(max_length=32)), |
||||
|
('date_create', models.DateTimeField(auto_now_add=True)), |
||||
|
('author', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), |
||||
|
], |
||||
|
options={ |
||||
|
'verbose_name': 'Conversation', |
||||
|
'verbose_name_plural': 'Conversations', |
||||
|
'db_table': 'conversations', |
||||
|
'permissions': (('can_view_conversation', 'Can view conversation'),), |
||||
|
}, |
||||
|
), |
||||
|
migrations.CreateModel( |
||||
|
name='ConversationMembership', |
||||
|
fields=[ |
||||
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
||||
|
('status', models.CharField(choices=[('adm', 'Admin'), ('gst', 'Guest'), ('ban', 'Banned user'), ('inv', 'Inviter')], default='gst', max_length=3)), |
||||
|
('account', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='memberships', to=settings.AUTH_USER_MODEL)), |
||||
|
('conversation', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='msg_app.Conversation')), |
||||
|
('who_invite_that_user', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='self_conversations', to=settings.AUTH_USER_MODEL)), |
||||
|
], |
||||
|
options={ |
||||
|
'verbose_name': 'Conversation membership', |
||||
|
'verbose_name_plural': 'Conversation memberships', |
||||
|
'db_table': 'conversation_memberships', |
||||
|
}, |
||||
|
), |
||||
|
migrations.CreateModel( |
||||
|
name='Message', |
||||
|
fields=[ |
||||
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
||||
|
('text', models.TextField(verbose_name='Body')), |
||||
|
('sent_at', models.DateTimeField(auto_now_add=True, verbose_name='sent at')), |
||||
|
('attachment', models.FileField(blank=True, null=True, upload_to='messages_attachments/%Y_%m_%d')), |
||||
|
], |
||||
|
options={ |
||||
|
'verbose_name': 'Message', |
||||
|
'verbose_name_plural': 'Messages', |
||||
|
'db_table': 'messages', |
||||
|
'ordering': ['-sent_at'], |
||||
|
'permissions': (('can_view_messages', 'Can view messages'),), |
||||
|
}, |
||||
|
), |
||||
|
migrations.CreateModel( |
||||
|
name='MessageStatus', |
||||
|
fields=[ |
||||
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
||||
|
('state', models.CharField(choices=[('new', 'New'), ('old', 'Seen'), ('del', 'Deleted')], default='new', max_length=3)), |
||||
|
('msg', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='msg_statuses', to='msg_app.Message')), |
||||
|
('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='usr_msg_status', to=settings.AUTH_USER_MODEL)), |
||||
|
], |
||||
|
options={ |
||||
|
'verbose_name': 'Message status', |
||||
|
'verbose_name_plural': 'Messages statuses', |
||||
|
'db_table': 'message_status', |
||||
|
}, |
||||
|
), |
||||
|
migrations.AddField( |
||||
|
model_name='message', |
||||
|
name='account_status', |
||||
|
field=models.ManyToManyField(through='msg_app.MessageStatus', to=settings.AUTH_USER_MODEL), |
||||
|
), |
||||
|
migrations.AddField( |
||||
|
model_name='message', |
||||
|
name='author', |
||||
|
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='messages', to=settings.AUTH_USER_MODEL), |
||||
|
), |
||||
|
migrations.AddField( |
||||
|
model_name='message', |
||||
|
name='conversation', |
||||
|
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='msg_app.Conversation', verbose_name='Conversation'), |
||||
|
), |
||||
|
migrations.AddField( |
||||
|
model_name='conversation', |
||||
|
name='participants', |
||||
|
field=models.ManyToManyField(related_name='conversations', through='msg_app.ConversationMembership', to=settings.AUTH_USER_MODEL), |
||||
|
), |
||||
|
migrations.AlterUniqueTogether( |
||||
|
name='messagestatus', |
||||
|
unique_together=set([('msg', 'user', 'state')]), |
||||
|
), |
||||
|
] |
||||
Write
Preview
Loading…
Cancel
Save
Reference in new issue