def get_group(request): query = request.GET.get('query') try: group = Group.objects.get(name=query) return json_response({'group':{'name':group.name}}) except Exception, e: return json_error([e.message])
def share_with(request,share): query = request.POST.get('query',request.GET.get('query')) exists = [] new_users = [] groups = [] invalid = [] try: emails = [email.strip().lower() for email in query.split(',')] for email in emails: if email == '': continue if email.startswith('group:'): name = email.split('group:')[1].lower() try: group = Group.objects.get(name__iexact=name) groups.append({'group':{'id':group.id,'name':group.name}}) except: invalid.append(name) elif validate_email(email): try: user = User.objects.get(email=email) exists.append({'user':{'username':email}}) except: new_users.append({'user':{'username':email}}) else: invalid.append(email) return json_response({'exists':exists, 'groups':groups,'new_users':new_users,'invalid':invalid}) except Exception, e: return json_error([e.message])
def get_address_book(request): try: emails = User.objects.filter(shareuserobjectpermission__content_object__in=Share.objects.filter(owner=request.user).values_list('id')).values_list('email').distinct().order_by('email') groups = Group.objects.all().order_by('name') return json_response({'emails':[email[0] for email in emails], 'groups':[g.name for g in groups]}) except Exception, e: return json_error([e.message])
def share_with(request,share): query = request.POST.get('query',request.GET.get('query')) exists = [] new_users = [] groups = [] invalid = [] try: emails = [email.strip() for email in query.split(',')] for email in emails: if email == '': continue if email.startswith('Group:'): name = email.split('Group:')[1] try: group = Group.objects.get(name=name) groups.append({'group':{'id':group.id,'name':group.name}}) except: invalid.append(name) elif validate_email(email): try: user = User.objects.get(email=email) exists.append({'user':{'username':email}}) except: new_users.append({'user':{'username':email}}) else: invalid.append(email) return json_response({'exists':exists, 'groups':groups,'new_users':new_users,'invalid':invalid}) except Exception, e: return json_error([e.message])
def edit_metadata(request, share, subpath): try: if share.get_path_type(subpath) is None: raise Exception( 'The specified file or folder does not exist in this share.') metadata = MetaData.objects.get_or_create(share=share, subpath=subpath)[0] form = MetaDataForm(request.POST if request.method == 'POST' else request.GET) data = json_form_validate(form) if not form.is_valid(): return json_response(data) #return json_error(form.errors) tags = [] for tag in form.cleaned_data['tags'].split(','): tag = tag.strip() if len(tag) > 2: tags.append(Tag.objects.get_or_create(name=tag)[0]) metadata.tags = tags metadata.notes = form.cleaned_data['notes'] metadata.save() name = os.path.basename(os.path.normpath(subpath)) return json_response({ 'name': name, 'notes': metadata.notes, 'tags': [tag.name for tag in tags] }) except Exception, e: return json_error([str(e)])
def get_address_book(request): try: emails = fetchall("SELECT u.email FROM biosharex.guardian_userobjectpermission p join auth_user u on p.user_id = u.id where object_pk in (select id from bioshareX_share where owner_id = %d) group by email;" % int(request.user.id)) groups = Group.objects.all() return json_response({'emails':[email[0] for email in emails], 'groups':[g.name for g in groups]}) except Exception, e: return json_error([e.message])
def share_autocomplete(request): terms = [term.strip() for term in request.GET.get('query').split()] query = reduce(lambda q,value: q&Q(name__icontains=value), terms , Q()) try: share_objs = Share.user_queryset(request.user).filter(query).order_by('-created')[:10] shares = [{'id':s.id,'url':reverse('list_directory',kwargs={'share':s.id}),'name':s.name,'notes':s.notes} for s in share_objs] return json_response({'status':'success','shares':shares}) except Exception, e: return json_error([e.message])
def edit_metadata(request, share, subpath): try: if share.get_path_type(subpath) is None: raise Exception('The specified file or folder does not exist in this share.') metadata = MetaData.objects.get_or_create(share=share, subpath=subpath)[0] form = MetaDataForm(request.POST if request.method == 'POST' else request.GET) data = json_form_validate(form) if not form.is_valid(): return json_response(data)#return json_error(form.errors) tags = [] for tag in form.cleaned_data['tags'].split(','): tag = tag.strip() if len(tag) >2 : tags.append(Tag.objects.get_or_create(name=tag)[0]) metadata.tags = tags metadata.notes = form.cleaned_data['notes'] metadata.save() name = os.path.basename(os.path.normpath(subpath)) return json_response({'name':name,'notes':metadata.notes,'tags':[tag.name for tag in tags]}) except Exception, e: return json_error([str(e)])
def get_tags(request): try: tags = Tag.objects.filter(name__icontains=request.GET.get('tag')) return json_response({'tags':[tag.name for tag in tags]}) except Exception, e: return json_error([e.message])