def formList(request, username): formlist_user = get_object_or_404(User, username=username) content_user = get_object_or_404(User, username=username) profile, created = UserProfile.objects.get_or_create(user=formlist_user) if profile.require_auth: authenticator = HttpDigestAuthenticator() if not authenticator.authenticate(request): return authenticator.build_challenge_response() # unauthorized if user in auth request does not match user in path # unauthorized if user not active if not request.user.is_active: return HttpResponseNotAuthorized() #xforms = XForm.objects.filter(downloadable=True, user__username=username) # forms shared with user print str(formlist_user.id) frm_qry = "select xform_id from vwrolewiseformpermission where can_submit=1 and user_id=" + str( formlist_user.id) cursor = connection.cursor() cursor.execute(frm_qry) tmp_db_value = cursor.fetchall() frm_list = [] if tmp_db_value is not None: for every in tmp_db_value: frm_list.append(every[0]) cursor.close() xforms = XForm.objects.filter( reduce(operator.or_, [Q(id=c) for c in frm_list])) #xfct = ContentType.objects.get(app_label='logger', model='xform') #xfs = content_user.userobjectpermission_set.filter(content_type=xfct) #shared_forms_pks = list(set([xf.object_pk for xf in xfs])) #xforms = XForm.objects.filter( # pk__in=shared_forms_pks).select_related('user') audit = {} audit_log(Actions.USER_FORMLIST_REQUESTED, request.user, formlist_user, _("Requested forms list."), audit, request) response = render_to_response("xformsList.xml", { 'host': request.build_absolute_uri().replace(request.get_full_path(), ''), 'xforms': xforms }, mimetype="text/xml; charset=utf-8") response['X-OpenRosa-Version'] = '1.0' tz = pytz.timezone(settings.TIME_ZONE) dt = datetime.now(tz).strftime('%a, %d %b %Y %H:%M:%S %Z') response['Date'] = dt return response
def formList(request, username): # pylint: disable=C0103 """ formList view, /formList OpenRosa Form Discovery API 1.0. """ formlist_user = get_object_or_404(User, username__iexact=username) profile = cache.get(f'{USER_PROFILE_PREFIX}{formlist_user.username}') if not profile: profile, __ = UserProfile.objects.get_or_create( user__username=formlist_user.username) if profile.require_auth: authenticator = HttpDigestAuthenticator() if not authenticator.authenticate(request): return authenticator.build_challenge_response() # unauthorized if user in auth request does not match user in path # unauthorized if user not active if not request.user.is_active: return HttpResponseNotAuthorized() # filter private forms (where require_auth=False) # for users who are non-owner if request.user.username == profile.user.username: xforms = XForm.objects.filter(downloadable=True, deleted_at__isnull=True, user__username__iexact=username) else: xforms = XForm.objects.filter(downloadable=True, deleted_at__isnull=True, user__username__iexact=username, require_auth=False) audit = {} audit_log(Actions.USER_FORMLIST_REQUESTED, request.user, formlist_user, _("Requested forms list."), audit, request) data = { 'host': request.build_absolute_uri().replace(request.get_full_path(), ''), 'xforms': xforms } response = render(request, "xformsList.xml", data, content_type="text/xml; charset=utf-8") response['X-OpenRosa-Version'] = '1.0' response['Date'] = datetime.now(pytz.timezone(settings.TIME_ZONE))\ .strftime('%a, %d %b %Y %H:%M:%S %Z') return response
def formList(request, username): """ This is where ODK Collect gets its download list. """ if username.lower() == 'crowdforms': xforms = XForm.objects.filter(is_crowd_form=True)\ .exclude(user__username=username) else: formlist_user = get_object_or_404(User, username=username) profile, created = \ UserProfile.objects.get_or_create(user=formlist_user) if profile.require_auth: authenticator = HttpDigestAuthenticator() if not authenticator.authenticate(request): return authenticator.build_challenge_response() # unauthorized if user in auth request does not match user in path # unauthorized if user not active if formlist_user.username != request.user.username or\ not request.user.is_active: return HttpResponseNotAuthorized() xforms = \ XForm.objects.filter(downloadable=True, user__username=username) # retrieve crowd_forms for this user crowdforms = XForm.objects.filter( metadata__data_type=MetaData.CROWDFORM_USERS, metadata__data_value=username) xforms = chain(xforms, crowdforms) audit = {} audit_log(Actions.USER_FORMLIST_REQUESTED, request.user, formlist_user, _("Requested forms list."), audit, request) response = render_to_response( "xformsList.xml", { #'urls': urls, 'host': request.build_absolute_uri().replace(request.get_full_path(), ''), 'xforms': xforms }, mimetype="text/xml; charset=utf-8") response['X-OpenRosa-Version'] = '1.0' tz = pytz.timezone(settings.TIME_ZONE) dt = datetime.now(tz).strftime('%a, %d %b %Y %H:%M:%S %Z') response['Date'] = dt return response
def formList(request, username): """ This is where ODK Collect gets its download list. """ formlist_user = get_object_or_404(User, username__iexact=username) profile, created = UserProfile.objects.get_or_create(user=formlist_user) if profile.require_auth: authenticator = HttpDigestAuthenticator() if not authenticator.authenticate(request): return authenticator.build_challenge_response() # unauthorized if user in auth request does not match user in path # unauthorized if user not active if not request.user.is_active: return HttpResponseNotAuthorized() # filter private forms (where require_auth=False) # for users who are non-owner if request.user.username == profile.user.username: xforms = XForm.objects.filter(downloadable=True, user__username__iexact=username) else: xforms = XForm.objects.filter(downloadable=True, user__username__iexact=username, require_auth=False) audit = {} audit_log(Actions.USER_FORMLIST_REQUESTED, request.user, formlist_user, _("Requested forms list."), audit, request) data = { 'host': request.build_absolute_uri().replace(request.get_full_path(), ''), 'xforms': xforms } response = render(request, "xformsList.xml", data, content_type="text/xml; charset=utf-8") response['X-OpenRosa-Version'] = '1.0' tz = pytz.timezone(settings.TIME_ZONE) dt = datetime.now(tz).strftime('%a, %d %b %Y %H:%M:%S %Z') response['Date'] = dt return response
def formList(request, username): """ This is where ODK Collect gets its download list. """ print '####' formlist_user = get_object_or_404(User, username=username) content_user = get_object_or_404(User, username=username) profile, created = UserProfile.objects.get_or_create(user=formlist_user) if profile.require_auth: authenticator = HttpDigestAuthenticator() if not authenticator.authenticate(request): return authenticator.build_challenge_response() # unauthorized if user in auth request does not match user in path # unauthorized if user not active if not request.user.is_active: return HttpResponseNotAuthorized() #xforms = XForm.objects.filter(downloadable=True, user__username=username) # forms shared with user xfct = ContentType.objects.get(app_label='logger', model='xform') xfs = content_user.userobjectpermission_set.filter(content_type=xfct) shared_forms_pks = list(set([xf.object_pk for xf in xfs])) xforms = XForm.objects.filter( pk__in=shared_forms_pks).select_related('user') audit = {} audit_log(Actions.USER_FORMLIST_REQUESTED, request.user, formlist_user, _("Requested forms list."), audit, request) response = render_to_response("xformsList.xml", { 'host': request.build_absolute_uri().replace( request.get_full_path(), ''), 'xforms': xforms }, mimetype="text/xml; charset=utf-8") response['X-OpenRosa-Version'] = '1.0' tz = pytz.timezone(settings.TIME_ZONE) dt = datetime.now(tz).strftime('%a, %d %b %Y %H:%M:%S %Z') response['Date'] = dt return response