def feedback(request): """ Feedback view for the Aristotle Library Apps Project :param request: Web request from client """ if request.method != 'POST': return Http404 today = datetime.datetime.utcnow() feedback_id = REDIS_DATASTORE.incr( "global feedback:{0}:{1}".format(today.year, today.month)) feedback_key = "feedback:{0}:{1}:{2}".format(today.year, today.month, feedback_id) REDIS_DATASTORE.hset(feedback_key, "created", today.isoformat()) REDIS_DATASTORE.hset(feedback_key, "comment", request.POST.get('comment')) REDIS_DATASTORE.hset(feedback_key, "context", request.POST.get('context')) if request.POST.has_key('sender'): REDIS_DATASTORE.hset(feedback_key, "sender", request.POST.get('sender')) return redirect(REDIS_DATASTORE.hget(feedback_key, "context"))
def facet_detail(request, facet_name, facet_item): """Displays a specific Facet listing Parameters: facet_name -- Name of the Facet facet_item -- Name of the Facet item """ redis_key = "bf:Facet:{0}:{1}".format(facet_name,facet_item) if not REDIS_DATASTORE.exists(redis_key): raise Http404 rlsp_query_key = request.session.get('rlsp-query', None) listing_key = "facet-listing:{0}:{1}".format(facet_name,facet_item) if rlsp_query_key is not None: tmp_facet_result = 'facet-result:{0}'.format( REDIS_DATASTORE.incr('global facet-result')) REDIS_DATASTORE.sinterstore(tmp_facet_result, rlsp_query_key, redis_key) REDIS_DATASTORE.expire(tmp_facet_result, 900) REDIS_DATASTORE.sort(tmp_facet_result, alpha=True, store=listing_key) else: REDIS_DATASTORE.sort(redis_key, alpha=True, store=listing_key) REDIS_DATASTORE.expire(listing_key,1200) offset = int(request.REQUEST.get('offset',0)) records = [] pagination = get_pagination(request.path, listing_key, REDIS_DATASTORE, offset) record_slice = REDIS_DATASTORE.lrange(listing_key, offset, offset+PAGINATION_SIZE) for row in record_slice: if row.find("Instance") > -1: work_key = REDIS_DATASTORE.hget(row, 'instanceOf') entity_name = work_key.split(":")[1] if CREATIVE_WORK_CLASSES.count(entity_name) > 0: cw_class = getattr(bibframe.models, entity_name) if cw_class is None: cw_class = getattr(bibframe.models, entity_name.title()) work = cw_class( redis_datastore=REDIS_DATASTORE, redis_key=work_key) records.append(work) label_key = 'bf:Facet:{0}s'.format(facet_name) msg = "Results {0} of {1} for Facet {2}".format(len(record_slice), REDIS_DATASTORE.llen(listing_key), facet_name) if REDIS_DATASTORE.exists(label_key): if REDIS_DATASTORE.type(label_key) == 'zset': msg = "{0} {1}".format(msg, facet_item) else: msg = " {0} {1}".format(msg, REDIS_DATASTORE.hget(label_key, facet_item)) else: msg = "{0} of {1}".format(msg, facet_item) return render(request, 'discovery/app.html', {'app': APP, 'example':{}, 'feedback_form':FeedbackForm({'subject':'Discovery Facet Display'}), 'feedback_context':request.get_full_path(), 'institution': INSTITUTION, 'facet_list': None, 'message': msg, 'pagination':None, 'results': records, 'search_form': SearchForm(), 'search_query': None, 'user': None}) return HttpResponse("In facet detail key={0}\n{1}".format(redis_key,records))
def add_place(institution_redis_key, REDIS_DATASTORE): place_base ="{0}:schema:Place".format(institution_redis_key) place_key = "{0}:{1}".format( place_base, REDIS_DATASTORE.incr('global {0}'.format(place_base))) return place_key