Beispiel #1
0
 def process_request(self, request):
     params = dict(
         is_view_public=True,
         is_view_enabled=True,
     )
     private_tags = [i.id for i in CameraTag.objects(is_private=True)]
     params.update(dict(tags__not__in=private_tags))
     request.places = paginate(request,
                               Camera.objects(**params).order_by('-view_count'),
                               Camera.objects(**params).count(),
                               10,
                               reverse('cam:place_update', args=['time', 'asc']))
     request.places_all_count = Camera.objects.count()
Beispiel #2
0
 def process_request(self, request):
     params = dict(
         is_view_public=True,
         is_view_enabled=True,
     )
     private_tags = [i.id for i in CameraTag.objects(is_private=True)]
     params.update(dict(tags__not__in=private_tags))
     request.places = paginate(
         request,
         Camera.objects(**params).order_by('-view_count'),
         Camera.objects(**params).count(), 10,
         reverse('cam:place_update', args=['time', 'asc']))
     request.places_all_count = Camera.objects.count()
Beispiel #3
0
def cam_view_notify(request, format):
    """ API:
        ?session_key=<Fx24>&camera_id=<Fx24>&status=connect
        ?session_key=<Fx24>&camera_id=<Fx24>&status=next&time=<sec>
        ?session_key=<Fx24>&camera_id=<Fx24>&status=disconnect&time=<sec>

        0 OK

        -1 BAD PARAMS
        -500 INTERNAL ERROR
    """

    from apps.media.documents import File

    request_id = time()

    def log_debug(text):
        info = '\n'.join([
            "session_key=%s" % session_key,
            "user_id=%s" % user.id if user else None,
            "camera_id=%s" % camera_id,
        ])
        logger.debug('cam_view_notify %s\n%s\n%s' % (request_id, info, text))

    logger.debug('cam_view_notify %s\nrequest %s' %
                 (request_id, repr(request.GET.items())))

    user = None
    session_key = None
    camera_id = None
    try:
        if not request.GET:
            raise CameraAccessor.APIException("Bad params")
        status = request.GET.get('status', None)
        session_key = request.GET.get('session_key', None)
        camera_id = request.GET.get('camera_id', None)
        if not (status and session_key and camera_id):
            raise CameraAccessor.APIException("Bad params")
        extra_time = request.GET.get('time', None)
        if extra_time is not None:
            if not extra_time.isdigit():
                raise CameraAccessor.APIException("Time must by a digit")
            extra_time = int(extra_time)
            if extra_time > settings.TIME_INTERVAL_NOTIFY or extra_time < 0:
                raise CameraAccessor.APIException("Bad time interval")

        # extract data from session
        engine = import_module(settings.SESSION_ENGINE)
        session = engine.SessionStore(session_key)
        user_id = session.get(SESSION_KEY, None)
        if not user_id:
            raise CameraAccessor.APIException("Need user_id")
        user = User.objects(id=user_id).first()
        if not user:
            raise CameraAccessor.APIException("Bad user_id")
        camera = Camera.objects(id=camera_id).first()
        if not camera:
            raise CameraAccessor.APIException(
                "Can`t found camera by camera_id")

        result = CameraAccessor(status, user, camera, session, extra_time)
    except CameraAccessor.APIException, e:
        params = (-1, 0, 0)
        log_debug('api error\n%s\n%s' % (e, traceback.format_exc()))
Beispiel #4
0
 def get_camera(self):
     from apps.cam.documents import Camera
     return Camera.objects(owner=self).first()
Beispiel #5
0
def cam_view_notify(request, format):
    """ API:
        ?session_key=<Fx24>&camera_id=<Fx24>&status=connect
        ?session_key=<Fx24>&camera_id=<Fx24>&status=next&time=<sec>
        ?session_key=<Fx24>&camera_id=<Fx24>&status=disconnect&time=<sec>

        0 OK

        -1 BAD PARAMS
        -500 INTERNAL ERROR
    """

    from apps.media.documents import File

    request_id = time()
    def log_debug(text):
        info = '\n'.join([
            "session_key=%s" % session_key,
            "user_id=%s" % (user.id if user else None),
            "camera_id=%s" % camera_id,
        ])
        logger.debug('cam_view_notify %s\n%s\n%s' % (request_id, info, text))

    logger.debug('cam_view_notify %s\nrequest %s' % (request_id, repr(request.GET.items())))

    user = None
    session_key = None
    camera_id = None
    try:
        if not request.GET:
            raise CameraAccessor.APIException("Bad params")
        status = request.GET.get('status', None)
        session_key = request.GET.get('session_key', None)
        camera_id = request.GET.get('camera_id', None)
        if not (status and session_key and camera_id):
            raise CameraAccessor.APIException("Bad params")
        extra_time = request.GET.get('time', None)
        if extra_time is not None:
            if not extra_time.isdigit():
                raise CameraAccessor.APIException("Time must by a digit")
            extra_time = int(extra_time)
            if extra_time > settings.TIME_INTERVAL_NOTIFY or extra_time < 0:
                raise CameraAccessor.APIException("Bad time interval")

        # extract data from session
        engine = import_module(settings.SESSION_ENGINE)
        session = engine.SessionStore(session_key)
        user_id = session.get(SESSION_KEY, None)
        if not user_id:
            raise CameraAccessor.APIException("Need user_id")
        user = User.objects(id=user_id).first()
        if not user:
            raise CameraAccessor.APIException("Bad user_id")
        camera = Camera.objects(id=camera_id).first()
        if not camera:
            raise CameraAccessor.APIException("Can`t found camera by camera_id")

        result = CameraAccessor(status, user, camera, session, extra_time)
    except CameraAccessor.APIException, e:
        params = (-1, 0, 0)
        log_debug('api error\n%s\n%s' % (e, traceback.format_exc()))
 def get_camera(self):
     from apps.cam.documents import Camera
     return Camera.objects(owner=self).first()
Beispiel #7
0
 def handle(self, *args, **options):
     for tag in CameraTag.objects:
         tag.count = Camera.objects(tags=tag).count()
         tag.save()