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) )
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) )
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)
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)
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()
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()
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')
def tag_list(request): tags = CameraTag.objects() return direct_to_template(request, 'cam/tag_list.html', dict(tags=tags) )