示例#1
0
def LoginPoint(request, redirect_field_name=REDIRECT_FIELD_NAME,
               current_app=None, extra_context=None, ):
    ok = auth.is_identity_authenticated()
    lg.out(4, 'django.login_point is_identity_authenticated=%s' % ok)
    if not ok:
        return HttpResponseRedirect(SETUP_PATH)
    # if installer.IsExist() and installer.A().state == 'DONE':
        # return HttpResponseRedirect(SETUP_PATH)
    user = authenticate(
        username=auth.username(),
        password=auth.password())
    lg.out(4, '    authenticate user is %s' % user)
    if user is not None:
        if not user.is_active:
            lg.out(4, '    user not active')
            logout(request)
            return HttpResponseRedirect(SETUP_PATH)
    else:
        newuser = User.objects.create_user(
            auth.username(),
            password=auth.password())
        newuser.save()
        user = authenticate(
            username=auth.username(),
            password=auth.password())
        if user is None:
            lg.out(4, '    authenticate after creating a new user failed')
            logout(request)
            return HttpResponseRedirect(SETUP_PATH)
        lg.out(4, '    created new user %s %s' % (newuser, user))
    login(request, user)
    redirect_to = request.POST.get(redirect_field_name,
                                   request.GET.get(redirect_field_name, ''))
    if not is_safe_url(url=redirect_to, host=request.get_host()):
        redirect_to = resolve_url(settings.LOGIN_REDIRECT_URL)
    lg.out(4, '    redirecting to %s' % redirect_to)
    return HttpResponseRedirect(redirect_to)
示例#2
0
def LoginPoint(
    request,
    redirect_field_name=REDIRECT_FIELD_NAME,
    current_app=None,
    extra_context=None,
):
    ok = auth.is_identity_authenticated()
    lg.out(4, 'django.login_point is_identity_authenticated=%s' % ok)
    if not ok:
        return HttpResponseRedirect(SETUP_PATH)
    # if installer.IsExist() and installer.A().state == 'DONE':
    # return HttpResponseRedirect(SETUP_PATH)
    user = authenticate(username=auth.username(), password=auth.password())
    lg.out(4, '    authenticate user is %s' % user)
    if user is not None:
        if not user.is_active:
            lg.out(4, '    user not active')
            logout(request)
            return HttpResponseRedirect(SETUP_PATH)
    else:
        newuser = User.objects.create_user(auth.username(),
                                           password=auth.password())
        newuser.save()
        user = authenticate(username=auth.username(), password=auth.password())
        if user is None:
            lg.out(4, '    authenticate after creating a new user failed')
            logout(request)
            return HttpResponseRedirect(SETUP_PATH)
        lg.out(4, '    created new user %s %s' % (newuser, user))
    login(request, user)
    redirect_to = request.POST.get(redirect_field_name,
                                   request.GET.get(redirect_field_name, ''))
    if not is_safe_url(url=redirect_to, host=request.get_host()):
        redirect_to = resolve_url(settings.LOGIN_REDIRECT_URL)
    lg.out(4, '    redirecting to %s' % redirect_to)
    return HttpResponseRedirect(redirect_to)
示例#3
0
    def __call__(self, request, id):
        try:
            if not (auth.is_session_authenticated(request.user) and auth.is_identity_authenticated()):
                return HttpResponseBadRequest('You need to be logged in to access the chat system.')

            StatusCode = 0  # Default status code is 0 i.e. no new data.

            self.request = request
            try:
                self.request_time = float(self.request.REQUEST['time'])
            except:
                return HttpResponseBadRequest("What's the time?")
            try:
                self.ThisRoom = get_object_or_404(Room, id=id)
            except:
                lg.exc('id=%s' % str(id))
                return HttpResponseBadRequest("Not found Room with id=%s" % str(id))

            NewDescription = None

            if self.request.method == "POST":
                # User has sent new data.
                action = self.request.POST['action']
                msg_text = ''

                if action == 'postmsg':
                    msg_text = self.request.POST['message']
                if action == 'room_join':
                    RoomMember.objects.create_member(idurl=id,
                                                     # name=nameurl.GetName(id),
                                                     room=self.ThisRoom)
                if action == 'room_leave':
                    RoomMember.objects.remove_member(idurl=id,
                                                     # name=nameurl.GetName(id),
                                                     room=self.ThisRoom)
                if len(msg_text.strip()) > 0:  # Ignore empty strings.
                    Message.objects.create_message(
                        my_id.getLocalID(),
                        self.ThisRoom,
                        escape(msg_text))
                    message.SendMessage(
                        str(self.ThisRoom.idurl),
                        str(msg_text))
            else:
                # If a GET, make sure that no action was specified.
                if self.request.GET.get('action', None):
                    return HttpResponseBadRequest('Need to POST if you want to send data.')

            NewMessages = self.ThisRoom.message_set.filter(unix_timestamp__gt=self.request_time)
            if NewMessages:
                StatusCode = 1

            NewMembers = RoomMember.objects.filter(room=self.ThisRoom)
            NewMembersNames = map(lambda mem: nameurl.GetName(mem.idurl), NewMembers)

            l = len(NewMessages)
            if l > JQCHAT_DISPLAY_COUNT:
                NewMessages = NewMessages[l - JQCHAT_DISPLAY_COUNT:]

            response = render_to_response('jqchat/chat_payload.json',
                                          {'current_unix_timestamp': time.time(),
                                           'NewMessages': NewMessages,
                                           'StatusCode': StatusCode,
                                           'NewDescription': NewDescription,
                                           'NewMembers': NewMembers,
                                           'NewMembersNames': NewMembersNames,
                                           'CustomPayload': '',
                                           'TimeDisplayFormat': DATE_FORMAT
                                           },
                                          context_instance=RequestContext(self.request))

            response['Content-Type'] = 'text/plain; charset=utf-8'
            response['Cache-Control'] = 'no-cache'
            return response

        except:
            e = lg.exc()
            return HttpResponseBadRequest('EXCEPTION:' + e)
示例#4
0
    def __call__(self, request, id):
        try:
            if not (auth.is_session_authenticated(request.user)
                    and auth.is_identity_authenticated()):
                return HttpResponseBadRequest(
                    'You need to be logged in to access the chat system.')

            StatusCode = 0  # Default status code is 0 i.e. no new data.

            self.request = request
            try:
                self.request_time = float(self.request.REQUEST['time'])
            except:
                return HttpResponseBadRequest("What's the time?")
            try:
                self.ThisRoom = get_object_or_404(Room, id=id)
            except:
                lg.exc('id=%s' % str(id))
                return HttpResponseBadRequest("Not found Room with id=%s" %
                                              str(id))

            NewDescription = None

            if self.request.method == "POST":
                # User has sent new data.
                action = self.request.POST['action']
                msg_text = ''

                if action == 'postmsg':
                    msg_text = self.request.POST['message']
                if action == 'room_join':
                    RoomMember.objects.create_member(
                        idurl=id,
                        # name=nameurl.GetName(id),
                        room=self.ThisRoom)
                if action == 'room_leave':
                    RoomMember.objects.remove_member(
                        idurl=id,
                        # name=nameurl.GetName(id),
                        room=self.ThisRoom)
                if len(msg_text.strip()) > 0:  # Ignore empty strings.
                    Message.objects.create_message(my_id.getLocalID(),
                                                   self.ThisRoom,
                                                   escape(msg_text))
                    key_id = 'master'  # self.ThisRoom.name or 'master'
                    recipient = global_id.MakeGlobalID(
                        idurl=str(self.ThisRoom.idurl),
                        key_alias=key_id,
                    )
                    # recipient = '%s$%s' % (key_id, global_id.UrlToGlobalID(str(self.ThisRoom.idurl)))
                    from twisted.internet.defer import Deferred
                    ret = api.send_message(recipient, str(msg_text))
                    if isinstance(ret, Deferred):
                        ret.addCallback(
                            lambda resp: lg.out(2, 'CHAT: %s' % str(resp)))
                        ret.addErrback(
                            lambda resp: lg.err('CHAT: %s' % str(resp)))
                    else:
                        lg.out(2, 'CHAT: %s' % str(ret))


#                     message.SendMessage(
#                         str(msg_text),
#                         str(self.ThisRoom.idurl),
#                         'master',
#                     )
            else:
                # If a GET, make sure that no action was specified.
                if self.request.GET.get('action', None):
                    return HttpResponseBadRequest(
                        'Need to POST if you want to send data.')

            NewMessages = self.ThisRoom.message_set.filter(
                unix_timestamp__gt=self.request_time)
            if NewMessages:
                StatusCode = 1

            NewMembers = RoomMember.objects.filter(room=self.ThisRoom)
            NewMembersNames = map(lambda mem: nameurl.GetName(mem.idurl),
                                  NewMembers)

            l = len(NewMessages)
            if l > JQCHAT_DISPLAY_COUNT:
                NewMessages = NewMessages[l - JQCHAT_DISPLAY_COUNT:]

            response = render_to_response('jqchat/chat_payload.json', {
                'current_unix_timestamp': time.time(),
                'NewMessages': NewMessages,
                'StatusCode': StatusCode,
                'NewDescription': NewDescription,
                'NewMembers': NewMembers,
                'NewMembersNames': NewMembersNames,
                'CustomPayload': '',
                'TimeDisplayFormat': DATE_FORMAT
            },
                                          context_instance=RequestContext(
                                              self.request))

            response['Content-Type'] = 'text/plain; charset=utf-8'
            response['Cache-Control'] = 'no-cache'
            return response

        except:
            e = lg.exc()
            return HttpResponseBadRequest('EXCEPTION:' + e)