Example #1
0
def tag_edit(request, id=None):
    if id:
        tag = get_document_or_404(CameraTag, id=id)
        initial = tag._data
    else:
        tag = None
        initial = {}

    form = CameraTagForm(request.POST or None, initial=initial)

    if form.is_valid():
        if not tag:
            tag = CameraTag()

        for k, v in form.cleaned_data.items():
            if k.startswith('_'):
                continue
            if hasattr(tag, k):
                setattr(tag, k, v)
        tag.save()
        return HttpResponseRedirect(reverse('cam:tag_list'))

    return direct_to_template(request, 'cam/tag_edit.html',
                              dict(form=form, is_new=id is None)
                              )
Example #2
0
def cam_list(request):
    private_tags = ",".join(["'%s'" % i.id for i in CameraTag.objects(is_private=True)])
    if request.GET:
        form = CamFilterForm(request.GET)
        if form.is_valid():
            data = dict(form.cleaned_data)
            if data['name']:
                data['name__icontains'] = data['name']
            del data['name']
            if data['tags']:
                data['tags'] = CameraTag.objects(id=data['tags']).first()
            else:
                private_tags = [i.id for i in CameraTag.objects(is_private=True)]
                data.update(dict(tags__not__in=private_tags))
                del data['tags']
            if data['order']:
                order = data['order']
            else:
                order = 'popularity-desc'
            del data['order']
            if not data['is_managed']:
                del data['is_management_enabled']
                del data['is_management_public']
                del data['is_management_paid']
            for k, v in data.items():
                if not v: del data[k]
            cams = Camera.objects(**data)
            if order:
                try:
                    name, type = order.split('-')
                except ValueError:
                    name, type = 'popularity', 'desc'
                order = ''
                if name == 'time':
                    order = 'date_created'
                    if type == 'desc':
                        order = '-%s' % order
                if name == 'popularity':
                    order = 'view_count'
                    if type == 'desc':
                        order = '-%s' % order
                cams = cams.order_by(order)
            cams = paginate(request,
                            cams,
                            cams.count(),
                            12)
        else:
            cams = None
        if request.is_ajax():
            return direct_to_template(request, 'cam/_cameras.html', dict(cams=cams))
        else:
            return direct_to_template(request, 'cam/cam_list.html', dict(form=form,cams=cams,private_tags=private_tags))
    else:
        form = CamFilterForm()
        tags = []
        for tag in CameraTag.objects.order_by('-count')[:4]:
            cams = list(Camera.objects(tags=tag.id).order_by('-view_count')[:4])
            tags.append((tag, cams))
        return direct_to_template(request, 'cam/cam_list.html', dict(form=form,tags=tags,private_tags=private_tags) )
Example #3
0
def cam_form(request, user, cam):
    if cam:
        initial = cam._data
        initial['type'] = cam.type.get_option_value()
        initial['operator'] = initial['operator'] and initial['operator'].id
        initial['tags'] = initial['tags'] and [i.id for i in initial['tags']]
        for tariff_type in Camera.TARIFF_FIELDS:
            value = getattr(cam, tariff_type)
            if value:
                initial[tariff_type] = value.id
    else:
        initial = {}

    if request.POST and request.POST.get('form', None) == 'cam':
        form = CameraForm(user, request.POST, initial=initial)
        if form.is_valid():
            if not cam:
                cam = Camera()
                cam.owner = user
                old_tag_ids = []
            elif form.cleaned_data['tags']:
                old_tag_ids = map(str, cam.tags)

            for k, v in form.cleaned_data.items():
                setattr(cam, k, v)

            cam.type = CameraType.objects.get(
                id=form.cleaned_data['type'][:-2])
            cam.operator = form.cleaned_data['operator'] and User.objects(
                id=form.cleaned_data['operator']).first() or None
            if form.cleaned_data['tags']:
                new_tag_ids = map(str, form.cleaned_data['tags'])
                CameraTag.calc_count(new_tag_ids, old_tag_ids)
                cam.tags = CameraTag.objects(id__in=form.cleaned_data['tags'])

            for tariff_type in Camera.TARIFF_FIELDS:
                value = form.cleaned_data[tariff_type]
                if value:
                    value = Tariff.objects.get(id=value)
                    assert value in getattr(Tariff,
                                            'get_%s_list' % tariff_type)()
                    setattr(cam, tariff_type, value)
                else:
                    setattr(cam, tariff_type, None)

            cam.save()
            messages.add_message(request, messages.SUCCESS,
                                 _('Camera successfully updated'))
            return
    else:
        form = CameraForm(user, None, initial=initial)

    return dict(cam_form=form, camera=cam)
Example #4
0
def cam_form(request, user, cam):
    if cam:
        initial = cam._data
        initial["type"] = cam.type.get_option_value()
        initial["operator"] = initial["operator"] and initial["operator"].id
        initial["tags"] = initial["tags"] and [i.id for i in initial["tags"]]
        for tariff_type in Camera.TARIFF_FIELDS:
            value = getattr(cam, tariff_type)
            if value:
                initial[tariff_type] = value.id
    else:
        initial = {}

    if request.POST and request.POST.get("form", None) == "cam":
        form = CameraForm(user, request.POST, initial=initial)
        if form.is_valid():
            if not cam:
                cam = Camera()
                cam.owner = user
                old_tag_ids = []
            elif form.cleaned_data["tags"]:
                old_tag_ids = map(str, cam.tags)

            for k, v in form.cleaned_data.items():
                setattr(cam, k, v)

            cam.type = CameraType.objects.get(id=form.cleaned_data["type"][:-2])
            cam.operator = (
                form.cleaned_data["operator"] and User.objects(id=form.cleaned_data["operator"]).first() or None
            )
            if form.cleaned_data["tags"]:
                new_tag_ids = map(str, form.cleaned_data["tags"])
                CameraTag.calc_count(new_tag_ids, old_tag_ids)
                cam.tags = CameraTag.objects(id__in=form.cleaned_data["tags"])

            for tariff_type in Camera.TARIFF_FIELDS:
                value = form.cleaned_data[tariff_type]
                if value:
                    value = Tariff.objects.get(id=value)
                    assert value in getattr(Tariff, "get_%s_list" % tariff_type)()
                    setattr(cam, tariff_type, value)
                else:
                    setattr(cam, tariff_type, None)

            cam.save()
            messages.add_message(request, messages.SUCCESS, _("Camera successfully updated"))
            return
    else:
        form = CameraForm(user, None, initial=initial)

    return dict(cam_form=form, camera=cam)
Example #5
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()
Example #6
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()
Example #7
0
def place_update(request, name, type):
    order = ''
    if name == 'time':
        order = 'date_created'
        if type == 'desc':
            order = '-%s' % order
    if name == 'popularity':
        order = 'view_count'
        if type == 'desc':
            order = '-%s' % order
    #request.places_all_count = Camera.objects.count()
    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(order),
                              Camera.objects(**params).count(),
                              10,
                              reverse('cam:place_update', args=[name, type]))
    return direct_to_template(request, '_places.html')
Example #8
0
def tag_list(request):
    tags = CameraTag.objects()
    return direct_to_template(request, 'cam/tag_list.html',
                              dict(tags=tags)
                              )