149 lines
4.9 KiB
Python
149 lines
4.9 KiB
Python
from django.shortcuts import render
|
|
from django.http import HttpResponse, JsonResponse
|
|
from django.views.decorators.csrf import csrf_exempt
|
|
from datetime import datetime
|
|
from django.db.models import Q
|
|
|
|
from polls.decorators import polls_login_required
|
|
from django.core.exceptions import ObjectDoesNotExist
|
|
from dashboard.models import Group, Userprofile
|
|
from polls.models import GroupRecord
|
|
|
|
|
|
def room(request):
|
|
return render(request, 'polls/chat_text.html')
|
|
|
|
|
|
@csrf_exempt
|
|
@polls_login_required
|
|
def is_level1_or_leve2(request):
|
|
if request.method == 'POST':
|
|
return HttpResponse(status=405)
|
|
user = request.user
|
|
profile = user.userprofile_set.first()
|
|
result = dict()
|
|
result['admin'] = profile.is_level1() or profile.is_level2()
|
|
return JsonResponse({'status': 'success', 'message': result}, safe=False)
|
|
|
|
|
|
@csrf_exempt
|
|
@polls_login_required
|
|
def groups(request):
|
|
if request.method == 'POST':
|
|
return HttpResponse(status=405)
|
|
user_id = request.user.id
|
|
category = request.GET.get('category')
|
|
q = Group.objects.filter(Q(status=1), Q(
|
|
group_user__user__id=user_id) | Q(group_admin__user__id=user_id)).distinct()
|
|
groups = q.filter(classify=category) if category else q
|
|
results = []
|
|
for o in groups:
|
|
result = dict()
|
|
result['id'] = str(o.id)
|
|
result['name'] = o.name
|
|
result['image'] = request.build_absolute_uri(o.image.url)
|
|
results.append(result)
|
|
return JsonResponse({'status': 'success', 'message': results}, safe=False)
|
|
|
|
|
|
@csrf_exempt
|
|
@polls_login_required
|
|
def pick_groups(request):
|
|
if request.method == 'POST':
|
|
return HttpResponse(status=405)
|
|
user_id = request.user.id
|
|
category = request.GET.get('category')
|
|
q = Group.objects.filter(
|
|
status=1, group_admin__user__id=user_id).distinct()
|
|
groups = q.filter(classify=category) if category else q
|
|
results = []
|
|
for o in groups:
|
|
result = dict()
|
|
result['id'] = str(o.id)
|
|
result['name'] = o.name
|
|
result['image'] = request.build_absolute_uri(o.image.url)
|
|
results.append(result)
|
|
return JsonResponse({'status': 'success', 'message': results}, safe=False)
|
|
|
|
|
|
@csrf_exempt
|
|
@polls_login_required
|
|
def group_manager(request):
|
|
if request.method == 'POST':
|
|
return HttpResponse(status=405)
|
|
group_id = request.GET.get('group_id')
|
|
if not group_id:
|
|
return JsonResponse({'status': 'error', 'message': '参数错误'})
|
|
group = Group.objects.get(id=group_id)
|
|
q = Userprofile.objects.filter(user__group_admin__group_id=group_id)
|
|
if group.classify != '3':
|
|
q = q.exclude(Q(organization__level__level=1) |
|
|
Q(organization__level__level=9))
|
|
q = q.order_by('user__group_admin__created')
|
|
results = []
|
|
for m in q:
|
|
result = dict()
|
|
result['id'] = m.user.id
|
|
result['name'] = m.name
|
|
result['status'] = m.status
|
|
result['thumbnail'] = request.build_absolute_uri(
|
|
m.image.url) if m.image else None
|
|
result['phone'] = m.user.username
|
|
result['organization'] = m.organization.name
|
|
results.append(result)
|
|
return JsonResponse({'status': 'success', 'message': results}, safe=False)
|
|
|
|
|
|
@csrf_exempt
|
|
@polls_login_required
|
|
def group_member(request):
|
|
if request.method == 'POST':
|
|
return HttpResponse(status=405)
|
|
group_id = request.GET.get('group_id')
|
|
if not group_id:
|
|
return JsonResponse({'status': 'error', 'message': '参数错误'})
|
|
managers = Userprofile.objects.filter(user__group_user__group_id=group_id)
|
|
results = []
|
|
for m in managers:
|
|
result = dict()
|
|
result['id'] = m.user.id
|
|
result['name'] = m.name
|
|
result['status'] = m.status
|
|
result['thumbnail'] = request.build_absolute_uri(
|
|
m.image.url) if m.image else None
|
|
result['phone'] = m.user.username
|
|
result['organization'] = m.organization.name
|
|
results.append(result)
|
|
return JsonResponse({'status': 'success', 'message': results}, safe=False)
|
|
|
|
|
|
@csrf_exempt
|
|
@polls_login_required
|
|
def group_enter(request):
|
|
if request.method == 'GET':
|
|
return HttpResponse(status=405)
|
|
user = request.user
|
|
group_id = request.POST.get('group_id')
|
|
if not group_id:
|
|
return JsonResponse({'status': 'error', 'message': '参数错误'})
|
|
obj, created = GroupRecord.objects.get_or_create(
|
|
user=user, group_id=group_id)
|
|
return JsonResponse({'status': 'success'})
|
|
|
|
|
|
@csrf_exempt
|
|
@polls_login_required
|
|
def group_leave(request):
|
|
if request.method == 'GET':
|
|
return HttpResponse(status=405)
|
|
user = request.user
|
|
group_id = request.POST.get('group_id')
|
|
if not group_id:
|
|
return JsonResponse({'status': 'error', 'message': '参数错误'})
|
|
obj, created = GroupRecord.objects.get_or_create(
|
|
user=user, group_id=group_id)
|
|
if not created:
|
|
obj.leave_at = datetime.now()
|
|
obj.save()
|
|
return JsonResponse({'status': 'success'})
|