def test_StudentsView_some_lessons(admin_client, db): from pashinin.models import Lesson from core import now assert Lesson.objects.filter().count() == 0 Lesson.objects.create( status=0, start=now(), end=now() ) assert Lesson.objects.filter().count() > 0 r = admin_client.get('/students') assert r.status_code == 200
def get_context_data(self, **kwargs): c = super().get_context_data(**kwargs) c['katex'] = True c['year'] = kwargs.get('year', None) if not c['year']: c['year'] = c.get('now', now()).year # c["host"] = self.request.host # c['EGE'] = settings.SITE_ID == 2 c['EGE'] = self.request.host.name == 'ege' c['OGE'] = self.request.host.name == 'oge' c['exam_type'] = 0 if c['EGE'] else 1 c['exam_type_str'] = 'ЕГЭ' if c['EGE'] else 'ОГЭ' c['menu']['index'] = { 'title': 'ЕГЭ' if c['EGE'] else 'ОГЭ', 'url': reverse('index', host=c['host'].name), 'hint': 'Единый государственный экзамен' if c['EGE'] else 'Основной государственный экзамен' } c['menu'].current = 'index' c['subjects'] = Subject.objects.filter(published=True) \ .order_by('name') for subj in c['subjects']: c['menu'][subj.slug] = { 'title': subj.name, 'url': reverse('subject:index', host=c['host'].name, kwargs={ 'subj': subj.slug, }), } # c['menu'] = Menu( # [ # ('index', { # 'title': 'Главная', # 'url': reverse('index'), # }), # ('articles', { # 'title': 'Статьи', # 'url': reverse('articles:index'), # } if c['user'].is_superuser else None), # ('faq', { # 'title': 'Вопросы', # 'url': reverse('faq'), # }), # ('contacts', { # 'title': 'Контакты', # 'url': reverse('contacts'), # }), # ] # ) return c
def get_context_data(self, **kwargs): c = super().get_context_data(**kwargs) c['year'] = kwargs.get('year', None) if not c['year']: c['year'] = c.get('now', now()).year subj = kwargs['subj'] # from urls pattern try: c['subject'] = Subject.objects.get(slug=subj, published=True) c['menu'].current = subj # дательный падеж: c['po_subject'] = " ".join([ morph.parse(w)[0].inflect({'datv'}).word for w in str(c['subject']).split() ]).lower() except Subject.DoesNotExist: c['redirect'] = reverse("index") c['ege'] = None return c # return HttpResponseRedirect(reverse("index")) c['tasks'] = [] try: c['exam'] = Exam.objects.get(subject=c['subject'], year=c['year'], type=c['exam_type']) c['tasks'] = c['exam'].tasks.filter().order_by('order') except Exam.DoesNotExist: # c['redirect'] = reverse("index") # print('EGE.DoesNotExist') # c['subject'] = None c['exam'] = None c['status'] = 404 return c
def post(self, request, **kwargs): # request.body - bytes try: s = request.body.decode("utf-8") # string d = urllib.parse.parse_qs(s) # dict with 1 key - "payload" # d["payload"] is a list with only 1 item - a string # This string contains JSON object described here: # https://docs.travis-ci.com/user/notifications#Webhooks-Delivery-Format payload = json.loads(d["payload"][0]) # json_payload = parse_qs(request.body)['payload'][0] except Exception as e: log.error({"message": "Bad Travis data", 'error': str(e)}) return HttpResponseBadRequest({ 'status': 'failed', 'reason': 'malformed data' }) # Auth # --------- signature = self._get_signature(request) try: public_key = self._get_travis_public_key() except requests.Timeout: log.error({"message": "Timed out retrieving Travis CI public key"}) return HttpResponseBadRequest({'status': 'failed'}) except requests.RequestException as e: log.error({ "message": "Failed to retrieve Travis CI public key", 'error': e.message }) return HttpResponseBadRequest({'status': 'failed'}) try: self.check_authorized(signature, public_key, d["payload"][0]) except SignatureError: # Log the failure somewhere return HttpResponseBadRequest({'status': 'unauthorized'}) # --------- # # We are sure it's Travis now # Do the job SUCCEDED = payload['result'] == 0 NOTAG = payload['tag'] is None if SUCCEDED and not NOTAG: commit_sha1 = payload['commit'] from core.tasks import project_update from core.models import SiteUpdate from core import now upd, created = SiteUpdate.objects.get_or_create(sha1=commit_sha1) upd.started = now() upd.travis_raw = d["payload"][0] upd.commit_message = payload['message'] upd.save() project_update.delay(commit_sha1) return HttpResponse("")
def sign_request(key_id, key, method, host, port, request_uri): """Generates an 'Authentication' header with some sane defaults. >>> sign_request('keyid', 'mykey', 'POST', 'api.example.com', 443, '/foo/bar?baz=buzz') # doctest: +SKIP 'MAC id="keyid", ts="1374996296", nonce="e4493430d227af804ef7fbac9c40d4564a133c03", mac="ntu+vZtLt98Vx2T1FpKXoPiCnhD3oJCTC6gioUlGNa0="' Args: method: A valid HTTP method, like 'GET' or 'POST'. host: The server name. request_uri: The URI of the request, including parameters. key_id: The key ID you negotiated with the server. key: The secret key you negotiated with the server. port: The remote port; defaults to 443. Returns: A value for the Authorization header. This will generate the timestamp, nonce, and mac for you. """ ts = core.now() mynonce = core.nonce() mac = core.request_mac(key, ts, mynonce, method, host, port, request_uri) return core.authorization_header(key_id, ts, mynonce, mac)
def get_context_data(self, **kwargs): c = super().get_context_data(**kwargs) c['year'] = kwargs.get('year', c.get('now', now()).year) c['tasks'] = EDUTask.objects.filter() return c