def get_context(self, request, **kwargs): slug = '' context = super(ResourceCollections, self).get_context(request) context = get_data(request, data=context, slug=slug, path_components=kwargs.get('path_components', [])) return base_context(context, self)
def get_context(self, request): context = super(ResourcePage, self).get_context(request) if (request.META.get('HTTP_REFERER') and request.session.get('results_page')): context['back'] = request.session.pop('results_page') if 'ldmw_session' in request.COOKIES: cookie = request.COOKIES['ldmw_session'] try: context['liked_value'] = Likes.objects\ .get(resource_id=self.id, user_hash=cookie)\ .like_value except: context['liked_value'] = 0 else: cookie = '' context['liked_value'] = 0 if 'ldmw_location_latlong' in request.COOKIES: try: location = request.COOKIES['ldmw_location_latlong'] [user_lat, user_long] = location.split(",") context['is_near'] = any( filter( lambda e: haversine_distance(float( user_lat), float(user_long), float( e.latitude), float(e.longitude)) / 1.6 < 1000, self.latlong.all())) # less than 1 mile except: print("Failed to get location") context['is_near'] = False else: context['is_near'] = False Home = apps.get_model('resources', 'home') combine_tags = create_tag_combiner(None) landing_pages = Home.objects.filter(~Q(slug="home")).live() context['landing_pages'] = landing_pages context['tags'] = combine_tags(self).specific.tags context['number_of_likes'] = Likes.objects\ .filter(resource_id=self.id, like_value=1)\ .count() context['number_of_dislikes'] = Likes.objects\ .filter(resource_id=self.id, like_value=-1)\ .count() context['badges'] = ResourcePageBadges.objects\ .filter(page_id=self.page_ptr_id) context['buttons'] = ResourcePageButtons.objects\ .filter(page_id=self.page_ptr_id) return base_context(context, self)
def collection_results(self, request, **kwargs): try: collection_slug = request.path.split('/')[2] except: collection_slug = '' context = super(CollectionsIndexPage, self).get_context(request) context = get_data(request, data=context, collection_slug=collection_slug, path_components=kwargs.get('path_components', [])) template = loader.get_template( f"resources/collections_index_page.html") return HttpResponse( template.render(context=base_context(context, self), request=request))
def topic_results(self, request, **kwargs): try: slug = request.path.split('/')[2] except: slug = '' context = super(Results, self).get_context(request) context = get_data(request, data=context, slug=slug, path_components=kwargs.get('path_components', [])) context['topic'] = slug template = loader.get_template(f"resources/results.html") return HttpResponse( template.render(context=base_context(context, self), request=request))
def get_context(self, request): context = super(StaticPage, self).get_context(request) Home = apps.get_model('resources', 'home') for all_menu in Home.objects.all(): for sub_menu in all_menu.sub_menu.all(): if sub_menu: if sub_menu.submenu_pagelink: if sub_menu.submenu_pagelink.url == request.path: context['matched_submenu'] = Home.objects.filter( Q(slug=all_menu.slug)) else: context['matched_submenu'] = Home.objects.filter( Q(slug='anxious')) context['current_path'] = request.path return base_context(context, self)
def assessment_summary_controller(request, **kwargs): template = loader.get_template( "resources/assessment/assessment-summary.html") traversal_id = request.POST.get("traversal_id") member_id = request.POST.get("member_id") context = requests.get(f"{e24_url}/Summary/" + f"{traversal_id}/{member_id}?callback=raw").json() context["member_id"] = member_id context["traversal_id"] = traversal_id context["node_id"] = request.POST.get("node_id") context["algo_id"] = request.POST.get("algo_id") context["parent"] = request.POST.get("parent") context["slug"] = request.POST.get("slug") return HttpResponse( template.render(context=base_context(context, self), request=request))
def assessment_controller(self, request, **kwargs): ResourcePage = apps.get_model('resources', 'resourcepage') params = request.POST answers = filter(lambda p: p[:2] == "Q_", params) prms = {} for a in answers: if len(a.split("_")) == 3: prms[a.split("_")[2]] = params.get(a) else: prms[params.get(a)] = "" if not (params.get("member_id") and params.get("traversal_id")): r = requests.get(f"{e24_url}/Member?callback=raw&@usertype=300") response = r.json() member_id = response["Table"][0]["MemberID"] traversal_id = response["Table"][0]["TraversalID"] else: member_id = params.get("member_id") traversal_id = params.get("traversal_id") algo_id = self.algorithm_id node_id = 0 node_type_id = None asset_id = None if params.get("node_id"): node_id = params.get("node_id") if params.get("algo_id"): algo_id = params.get("algo_id") if params.get("previous"): direction = params.get("previous") elif params.get("q_info"): direction = "Rerender" node_type_id = 32 asset_id = params.get("q_info") elif params.get("a_info"): direction = "Rerender" node_type_id = 64 asset_id = params.get("a_info") elif params.get("return_summary"): direction = params.get("return_summary") else: direction = "Next" url = f"{e24_url}/" \ + f"{direction}/{traversal_id}/{member_id}/" \ + f"{algo_id}/{node_id}?callback=raw" for p in prms: url += f"&{p}={prms[p]}" r2 = requests.get(url) template = loader.get_template( "resources/assessment/server-assessment.html") context = r2.json() try: tags = context["Report"]["DispositionProperties"]["Tags"] resources = ResourcePage.objects.filter( hidden_tags__name__in=tags).filter( topic_tags__name__in=self.topic_tags.names()) except: resources = [] context["member_id"] = member_id context["traversal_id"] = traversal_id context["first_question"] = (node_id == 0) context["node_type_id"] = node_type_id context["asset_id"] = asset_id try: context['parent'] = self.get_parent().slug context['slug'] = self.slug except: context['parent'] = None context['slug'] = None context['resource_text'] = self.resource_text context['resources'] = resources context['heading'] = self.heading context['body'] = self.body context['finish_destination'] = "/" page = {} page['hero_image'] = self.hero_image page['header'] = self.title page['body'] = self.heading context['page'] = page if (self.seo_title): context['page_title'] = (self.seo_title + " | " + self.get_site().site_name) else: context['page_title'] = self.get_site().site_name if params.get("q_info") or params.get("a_info"): context["info"] = requests.get( f"{e24_url}/Info/" + f"{traversal_id}/{member_id}?callback=raw&@NodeTypeID=" + f"{node_type_id}&@AssetID={asset_id}").json() return HttpResponse( template.render(context=base_context(context, self), request=request))
def serve(self, request, *args, **kwargs): if request.method == 'POST': form = self.get_form(request.POST, page=self, user=request.user) if form.is_valid(): self.process_form_submission(form) # render the landing_page # TODO: It is much better to redirect to it return render(request, self.get_landing_page_template(request), self.get_context(request)) else: form = self.get_form(page=self, user=request.user) # custom custom_form = [] vals = FormField.objects.all().filter(page_id=form.page.id) for val in vals: dict = {} dict['before_input'] = val.before_input dict['after_input'] = val.after_input dict['field_type'] = val.field_type dict['default_value'] = val.default_value dict['label'] = val.label # TODO: look at a nicer way to fetch errors and submitted_val request_dict = parse_qs(request.body.decode('utf-8')) if val.field_type == 'radio': choices_list = [] choices = val.choices.split(",") for choice in choices: try: submitted_val = request_dict[val.label][0] except: submitted_val = False checked = 'checked' if choice == submitted_val else '' choices_list.append({'val': choice, 'checked': checked}) dict['choices'] = choices_list else: try: dict['submitted_val'] = request_dict[val.label][0] except: dict['submitted_val'] = '' dict['required'] = 'required' if val.required else '' if form.errors: try: dict['errors'] = form.errors.as_data()[val.label][0] except: pass custom_form.append(dict) context = self.get_context(request) context['form'] = form context['custom_form'] = custom_form # custom return render(request, self.get_template(request), base_context(context, self))
def get_context(self, request): context = super(Assessment, self).get_context(request) return base_context(context, self)
def custom_serve(self, request, *args, **kwargs): response = {} try: request_dict = parse_qs(request.body.decode('utf-8')) except: request_dict = request.POST.dict() if (request_dict.get('feedback') == '' or request_dict.get('suggestion') == ''): error = True else: error = False response['error'] = error if request_dict.get('id'): id = request_dict['id'] response['id'] = id try: cookie = request.COOKIES['ldmw_session'] except: cookie = uid.hex resource = get_resource(id, cookie) if request_dict.get('short_resource') == "true": template = 'resources/short_resource.html' else: template = 'resources/resource.html' csrf = request.POST.get('csrfmiddlewaretoken') response['result'] = render_to_string( template, { 'page': resource, 'like_feedback_submitted': True, 'error': error, 'csrf_token': csrf }) response['visited_result'] = render_to_string( 'resources/single_visited.html', { 'v': resource, 'like_feedback_submitted': True, 'error': error, 'csrf_token': csrf }) self.process_form_submission(request_dict) return JsonResponse(response) if request.method == 'POST': form = self.get_form(request.POST, page=self, user=request.user) if form.is_valid(): self.process_form_submission(request_dict) if valid_request(request_dict): return handle_request(request, request_dict, HttpResponseRedirect, messages) else: form = self.get_form(page=self, user=request.user) if str(self.__class__.__name__) == 'Main': form_fields = MainFormField.objects.all().filter(page_id=form.page.id) elif str(self.__class__.__name__) == 'Home': form_fields = FormField.objects.all().filter(page_id=form.page.id) else: form_fields = None project_info_block = ProjectInfoBlock.objects.all() path_components = kwargs.get('path_components', []) path_components = list( map(lambda x: " ".join(x.split("-")), path_components)) context = self.get_context(request, path_components=path_components) context['form'] = form context['project_info_block'] = project_info_block like_feedback_submitted = False for m in messages.get_messages(request): if m.__str__()[:14] == 'like_feedback_': like_feedback_submitted = True context['like_feedback_submitted'] = like_feedback_submitted context['custom_form'] = generate_custom_form( form_fields, request_dict, messages.get_messages(request)) # custom return render(request, self.get_template(request), base_context(context, self))