Add direct message
This commit is contained in:
parent
259cb95b43
commit
2f8ef1b524
20 changed files with 1066 additions and 195 deletions
18
judge/migrations/0116_auto_20211011_0645.py
Normal file
18
judge/migrations/0116_auto_20211011_0645.py
Normal file
|
@ -0,0 +1,18 @@
|
|||
# Generated by Django 2.2.17 on 2021-10-10 23:45
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('judge', '0115_auto_20210525_0222'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='contest',
|
||||
name='format_name',
|
||||
field=models.CharField(choices=[('atcoder', 'AtCoder'), ('default', 'Default'), ('ecoo', 'ECOO'), ('icpc', 'ICPC'), ('ioi', 'IOI')], default='default', help_text='The contest format module to use.', max_length=32, verbose_name='contest format'),
|
||||
),
|
||||
]
|
|
@ -257,5 +257,13 @@ class Friend(models.Model):
|
|||
else:
|
||||
self.make_friend(current_user, new_friend)
|
||||
|
||||
@classmethod
|
||||
def get_friend_profiles(self, current_user):
|
||||
try:
|
||||
ret = self.objects.get(current_user=current_user).users.all()
|
||||
except Friend.DoesNotExist:
|
||||
ret = []
|
||||
return ret
|
||||
|
||||
def __str__(self):
|
||||
return str(self.current_user)
|
||||
|
|
|
@ -4,6 +4,8 @@ from django.shortcuts import get_object_or_404
|
|||
from django.utils.encoding import smart_text
|
||||
from django.views.generic.list import BaseListView
|
||||
|
||||
from chat_box.utils import encrypt_url
|
||||
|
||||
from judge.jinja2.gravatar import gravatar
|
||||
from judge.models import Comment, Contest, Organization, Problem, Profile
|
||||
|
||||
|
@ -121,3 +123,35 @@ class AssigneeSelect2View(UserSearchSelect2View):
|
|||
def get_queryset(self):
|
||||
return Profile.objects.filter(assigned_tickets__isnull=False,
|
||||
user__username__icontains=self.term).distinct()
|
||||
|
||||
|
||||
class ChatUserSearchSelect2View(BaseListView):
|
||||
paginate_by = 20
|
||||
|
||||
def get_queryset(self): # TODO: add block
|
||||
return _get_user_queryset(self.term)
|
||||
|
||||
def get(self, request, *args, **kwargs):
|
||||
self.request = request
|
||||
self.kwargs = kwargs
|
||||
self.term = kwargs.get('term', request.GET.get('term', ''))
|
||||
self.gravatar_size = request.GET.get('gravatar_size', 128)
|
||||
self.gravatar_default = request.GET.get('gravatar_default', None)
|
||||
|
||||
self.object_list = self.get_queryset().values_list('pk', 'user__username', 'user__email', 'display_rank')
|
||||
|
||||
context = self.get_context_data()
|
||||
|
||||
return JsonResponse({
|
||||
'results': [
|
||||
{
|
||||
'text': username,
|
||||
'id': encrypt_url(request.profile.id, pk),
|
||||
'gravatar_url': gravatar(email, self.gravatar_size, self.gravatar_default),
|
||||
'display_rank': display_rank,
|
||||
} for pk, username, email, display_rank in context['object_list']],
|
||||
'more': context['page_obj'].has_next(),
|
||||
})
|
||||
|
||||
def get_name(self, obj):
|
||||
return str(obj)
|
Loading…
Add table
Add a link
Reference in a new issue