async def get(self, *, pid: document.convert_doc_id): uid = self.user['_id'] if self.has_priv(builtin.PRIV_USER_PROFILE) else None pdoc = await problem.get(self.domain_id, pid, uid) if not self.own(pdoc, builtin.PERM_EDIT_PROBLEM_SELF): self.check_perm(builtin.PERM_EDIT_PROBLEM) udoc = await user.get_by_uid(pdoc['owner_uid']) path_components = self.build_path( (self.translate('problem_main'), self.reverse_url('problem_main')), (pdoc['title'], self.reverse_url('problem_detail', pid=pdoc['doc_id'])), (self.translate('problem_settings'), None)) self.render('problem_settings.html', pdoc=pdoc, udoc=udoc, categories=problem.get_categories(), page_title=pdoc['title'], path_components=path_components)
async def render_or_json_problem_list(self, page, ppcount, pcount, pdocs, category, psdict, **kwargs): if 'page_title' not in kwargs: kwargs['page_title'] = self.translate(self.TITLE) if 'path_components' not in kwargs: kwargs['path_components'] = self.build_path( (self.translate(self.NAME), None)) if self.prefer_json: list_html = self.render_html('partials/problem_list.html', page=page, ppcount=ppcount, pcount=pcount, pdocs=pdocs, psdict=psdict) stat_html = self.render_html('partials/problem_stat.html', pcount=pcount) lucky_html = self.render_html('partials/problem_lucky.html', category=category) path_html = self.render_html('partials/path.html', path_components=kwargs['path_components']) self.json({ 'title': self.render_title(kwargs['page_title']), 'fragments': [{ 'html': list_html }, { 'html': stat_html }, { 'html': lucky_html }, { 'html': path_html }] }) else: self.render('problem_main.html', page=page, ppcount=ppcount, pcount=pcount, pdocs=pdocs, category=category, psdict=psdict, categories=problem.get_categories(), **kwargs)