def create_news_url(request): user = get_object_or_404(Person, userid=request.user.username) configs = UserConfig.objects.filter(user=user, key="feed-token") if request.method == 'POST': form = FeedSetupForm(request.POST) if form.is_valid(): token = new_feed_token() if configs: c = configs[0] c.value = {'token': token} else: c = UserConfig(user=user, key="feed-token", value={'token': token}) c.save() messages.add_message(request, messages.SUCCESS, 'Feed URL configured.') return HttpResponseRedirect(reverse('config:config')) else: if configs: # pre-check if we're changing the token form = FeedSetupForm({'agree': True}) else: form = FeedSetupForm() context = {'form': form} return render(request, "dashboard/news_url.html", context)
def test_api(self): crs = CourseOffering.objects.get(slug=TEST_COURSE_SLUG) memb = Member.objects.get(offering=crs, person__userid="ggbaker") person = Person.objects.get(userid='ggbaker') p = Page(offering=crs, label="PageExists") p.save() v = PageVersion(page=p, title="Page Exists", wikitext="Original Contents", editor=memb, comment="original page") v.save() from dashboard.models import new_feed_token token = new_feed_token() updata = u"""{ "userid": "ggbaker", "token": "%s", "pages": [ { "label": "Index", "title": "The Coursé Page", "can_read": "ALL", "can_write": "INST", "wikitext-base64": "VGhpcyBwYWdlIGlzIHNwZWNpYWwgaW4gKipzb21lKiogd2F5LiBcKHh+XjIrMSA9IFxmcmFjezF9ezJ9XCkuCgpHb29kYnllIHdvcmxkIQ==", "comment": "page creation comment", "use_math": true }, { "label": "PageExists", "new_label": "PageChanged", "title": "Another Page", "can_read": "STUD", "wikitext": "This is some **new** page\\n\\ncontent." } ] }""" % (token) # make a request with no auth token in place c = Client() url = reverse('pages.views.api_import', kwargs={'course_slug': crs.slug}) response = c.post(url, data=updata.encode('utf8'), content_type="application/json") self.assertEquals(response.status_code, 403) # create token and try again person.config['pages-token'] = token person.save() response = c.post(url, data=updata.encode('utf8'), content_type="application/json") self.assertEquals(response.status_code, 200) # make sure the data arrived self.assertEquals(Page.objects.filter(offering=crs, label="PageExists").count(), 0) p = Page.objects.get(offering=crs, label="PageChanged") v = p.current_version() self.assertEqual(v.title, "Another Page") self.assertEqual(v.get_wikitext(), "This is some **new** page\n\ncontent.") p = Page.objects.get(offering=crs, label="Index") v = p.current_version() self.assertEqual(v.title, u"The Cours\u00e9 Page") self.assertEqual(v.get_wikitext(), 'This page is special in **some** way. \\(x~^2+1 = \\frac{1}{2}\\).\n\nGoodbye world!') self.assert_('math' in v.config) self.assertEqual(v.config['math'], True)
def create_calendar_url(request): user = get_object_or_404(Person, userid=request.user.username) config = _get_calendar_config(user) if request.method == 'POST': form = FeedSetupForm(request.POST) if form.is_valid(): token = new_feed_token() config['token'] = token uc = UserConfig.objects.filter(user=user, key="calendar-config") if uc: uc = uc[0] uc.value = config else: uc = UserConfig(user=user, key="calendar-config", value=config) uc.save() messages.add_message(request, messages.SUCCESS, 'Calendar URL configured.') return HttpResponseRedirect(reverse('config:config')) else: if 'token' in config: # pre-check if we're changing the token form = FeedSetupForm({'agree': True}) else: form = FeedSetupForm() context = {'form': form} return render(request, "dashboard/calendar_url.html", context)
def convert_grades(request, grade_source_slug): grade_source = get_object_or_404(GradeSource, slug=grade_source_slug) RuleForm = (grade_source.scale == 'DISC') and DiscreteGradeForm or ContinuousGradeForm # XXX: This is required because our form class requires a GradeSource. RuleFormSet = formset_factory(RuleForm, extra=10) RuleFormSet.form = functools.partial(RuleForm, grade_source=grade_source) transfer_rules = [] transfer_grade_points = decimal.Decimal('0.00') transfer_credits = decimal.Decimal('0.00') secondary_grade_points = decimal.Decimal('0.00') secondary_credits = decimal.Decimal('0.00') if request.POST: formset = RuleFormSet(request.POST) if not formset.is_valid(): messages.error(request, "Please correct the error below") # Save the data for later if request.POST.get("save_grades"): key = new_feed_token() arch = UserArchive.objects.create(grade_source=grade_source, slug=key, data=formset.data) url = arch.get_absolute_url() # Log that a save happened LogEntry.objects.create(userid=request.user.username, description="saved GPA calculation from {} {}".format(grade_source, key), related_object=arch) message = ('Grade conversion saved. You can share this URL if you want others to see these grades: {}' .format(request.build_absolute_uri(url))) messages.add_message(request, messages.SUCCESS, message) return HttpResponseRedirect(url) else: tmp = _get_transfer_rules(formset) transfer_rules, transfer_grade_points, transfer_credits, secondary_grade_points, secondary_credits = tmp else: formset = RuleFormSet() transfer_rules = [None for _ in formset] if transfer_credits > 0: transfer_gpa = transfer_grade_points / transfer_credits else: transfer_gpa = None if secondary_credits > 0: secondary_gpa = secondary_grade_points / secondary_credits else: secondary_gpa = None return { 'grade_source': grade_source, 'formset': formset, 'transfer_rules': iter(transfer_rules), 'transfer_gpa': transfer_gpa, 'secondary_gpa': secondary_gpa, }
def change_advisor_token(request): user = get_object_or_404(Person, userid=request.user.username) config = get_object_or_404(UserConfig, user=user, key='advisor-token') if request.method == 'POST': form = FeedSetupForm(request.POST) if form.is_valid(): config.value['token'] = new_feed_token() config.save() messages.add_message(request, messages.SUCCESS, 'Advisor notes API token changed') return HttpResponseRedirect(reverse('config:config')) else: form = FeedSetupForm({'agree': True}) return render(request, "dashboard/change_advisor_token.html", {"form": form})
def change_advisor_token(request): user = get_object_or_404(Person, userid=request.user.username) config = get_object_or_404(UserConfig, user=user, key='advisor-token') if request.method == 'POST': form = FeedSetupForm(request.POST) if form.is_valid(): config.value['token'] = new_feed_token() config.save() messages.add_message(request, messages.SUCCESS, 'Advisor notes API token changed') return HttpResponseRedirect(reverse('dashboard.views.config')) else: form = FeedSetupForm({'agree': True}) return render(request, "dashboard/change_advisor_token.html", {"form": form})
def enable_advisor_token(request): user = get_object_or_404(Person, userid=request.user.username) configs = UserConfig.objects.filter(user=user, key="advisor-token") if not len(configs) is 0: raise Http404 if request.method == 'POST': form = FeedSetupForm(request.POST) if form.is_valid(): config = {'token': new_feed_token()} uc = UserConfig(user=user, key="advisor-token", value=config) uc.save() messages.add_message(request, messages.SUCCESS, 'Advisor notes API enabled') return HttpResponseRedirect(reverse('config:config')) else: form = FeedSetupForm() return render(request, "dashboard/enable_advisor_token.html", {"form": form})
def enable_advisor_token(request): user = get_object_or_404(Person, userid=request.user.username) configs = UserConfig.objects.filter(user=user, key="advisor-token") if not len(configs) is 0: raise Http404 if request.method == 'POST': form = FeedSetupForm(request.POST) if form.is_valid(): config = {'token': new_feed_token()} uc = UserConfig(user=user, key="advisor-token", value=config) uc.save() messages.add_message(request, messages.SUCCESS, 'Advisor notes API enabled') return HttpResponseRedirect(reverse('dashboard.views.config')) else: form = FeedSetupForm() return render(request, "dashboard/enable_advisor_token.html", {"form": form})
def create_news_url(request): user = get_object_or_404(Person, userid=request.user.username) configs = UserConfig.objects.filter(user=user, key="feed-token") if request.method == 'POST': form = FeedSetupForm(request.POST) if form.is_valid(): token = new_feed_token() if configs: c = configs[0] c.value = {'token':token} else: c = UserConfig(user=user, key="feed-token", value={'token':token}) c.save() messages.add_message(request, messages.SUCCESS, 'Feed URL configured.') return HttpResponseRedirect(reverse('config:config')) else: if configs: # pre-check if we're changing the token form = FeedSetupForm({'agree': True}) else: form = FeedSetupForm() context = {'form': form} return render(request, "dashboard/news_url.html", context)