|
# -*- coding: utf-8 -*-
from django.db import transaction
from django.http import JsonResponse
from rest_framework import viewsets
from account.models import UserInfo
from group.models import GroupInfo, GroupUserInfo, GroupPhotoInfo
from group.serializers import GroupInfoSerializer, GroupUserInfoSerializer, GroupPhotoInfoSerializer
from utils.ip_utils import ip_addr
from curtail_uuid import CurtailUUID
from TimeConvert import TimeConvert as tc
@transaction.atomic
def group_create_api(request):
user_id = request.POST.get('user_id', '')
try:
user = UserInfo.objects.get(user_id=user_id)
except UserInfo.DoesNotExist:
return JsonResponse({
'status': 4011,
'message': u'用户不存在',
})
group_id = CurtailUUID.uuid(GroupInfo, 'group_id')
group = GroupInfo.objects.create(
group_id=group_id,
group_from=GroupInfo.APP_GROUP,
)
GroupUserInfo.objects.create(
group_id=group_id,
user_id=user_id,
nickname=user.username,
admin=True,
user_status=GroupUserInfo.PASSED,
passed_at=tc.utc_datetime(),
)
return JsonResponse({
'status': 200,
'message': u'群组创建成功',
'data': {
'group_id': group_id,
'users': group.users
},
})
def group_join_api(request):
group_id = request.POST.get('group_id', '')
user_id = request.POST.get('user_id', '')
nickname = request.POST.get('nickname', '')
try:
user = UserInfo.objects.get(user_id=user_id)
except UserInfo.DoesNotExist:
return JsonResponse({
'status': 4011,
'message': u'用户不存在',
})
try:
group = GroupInfo.objects.get(group_id=group_id)
except GroupInfo.DoesNotExist:
return JsonResponse({
'status': 4020,
'message': u'群组不存在',
})
if group.group_lock:
return JsonResponse({
'status': 4021,
'message': u'群组已锁定',
})
GroupUserInfo.objects.create(
group_id=group_id,
user_id=user_id,
nickname=nickname or user.username,
admin=False,
user_status=GroupUserInfo.APPLYING,
)
return JsonResponse({
'status': 200,
'message': u'申请已提交',
})
class GroupInfoViewSet(viewsets.ModelViewSet):
queryset = GroupInfo.objects.all().order_by('-created_at')
serializer_class = GroupInfoSerializer
class GroupUserInfoViewSet(viewsets.ModelViewSet):
queryset = GroupUserInfo.objects.all().order_by('-created_at')
serializer_class = GroupUserInfoSerializer
class GroupPhotoInfoViewSet(viewsets.ModelViewSet):
queryset = GroupPhotoInfo.objects.all().order_by('-created_at')
serializer_class = GroupPhotoInfoSerializer
|