def search_user(request): docs = [] query = request.POST['filter'] if not query: return_dict = { "sEcho": 1, "iTotalRecords": 0, "iTotalDisplayRecords": 0, "aaData": [] } return jsonfy(**return_dict) if query.isdigit(): query = "document_number:%s" % query else: query = "%s~.1" % sanitize_lucene(query) for doc in search_lucene('searchauth/user', database="couchauthsearch", q=query): docs.append(doc) start = int(request.POST['iDisplayStart']) length = int(request.POST['iDisplayLength']) secho = int(request.POST['sEcho']) + 1 #sort_col = int(request.POST['iSortCol_0']) #sort_dir = request.POST['sSortDir_0'] count = len(docs) db = User.get_db() keys = [doc['id'] for doc in docs[start:start + length]] columns = [] for doc in db.view('_all_docs', keys=keys, include_docs=True): doc = User.wrap(doc['doc']) username = '******' % \ (doc._id, doc.username) if doc._attachments and 'photo' in doc._attachments: img_path = "/couchflow/get_attach/couchauth/%s/photo" % doc._id img = '<img style="width:40px" src="%s"/>' % img_path else: img = '<div class="nophoto">?</div>' first_name = doc.first_name last_name = doc.last_name dni = doc.document_number row = [doc._id, img, username, first_name, last_name, dni] columns.append(row) return_dict = { "sEcho": secho, "iTotalRecords": count, "iTotalDisplayRecords": count, "aaData": columns } return jsonfy(**return_dict)
def user(request, user_id): """ User Profile Page """ #user = request.user user_db = User.get_db() if user_id == 'me': user = request.user groups = user.group_names else: user = User.get(user_id) groups = [ x['doc']['name'] for x in user_db.view("couchauth/groups_by_username", key=user.username, include_docs=True) ] if user._attachments and 'photo' in user._attachments: photo = "/couchflow/get_attach/couchauth/%s/photo" % user._id else: photo = None editlink = "/webconf/couchauth/edit_user/%s/" % user.username context = { "user": request.user, "userdoc": user, "photo": photo, "groups": groups, "editlink": editlink, } if 'biblio' in request.user.group_names: context['is_biblio'] = True if user_id == 'me': penalties = list(user_db.view("couchauth/penalties")) context['show_penalty_alert'] = True context['penalty_alert'] = penalties if context.get('is_biblio', False) or request.user.is_superuser or \ user_id == 'me': circ_db = CirculationLog.get_db() startkey = [user._id] endkey = [user._id, {}] results = circ_db.view("circulation/logs", include_docs=True)[startkey:endkey] logs = {} for row in results: row_id = tuple(row['key'][1:]) logs.setdefault(row_id, {}) logs[row_id][row['doc']['doc_type']] = row['doc'] logs_list = [x[1] for x in sorted(logs.items(), key=lambda x: x[0])] context['logs'] = logs_list return render_to_response('circulation/user.html', context)