class PageDetailViewTest(TestCase): _multiprocess_can_split_ = True def setUp(self): faker = Faker() author = create_user() self.page = Page( author=author, body=faker.paragraphs(), title=faker.words().capitalize()) self.page.save() def test_page_detail_render(self): response = self.client.get( reverse(PAGE_DETAIL_URL, args=(self.page.slug, ))) self.assertEqual(response.status_code, 200) self.assertContains(response, self.page.title) for paragraph in self.page.body.split('\n\n'): self.assertContains(response, paragraph) def test_pages_are_displayed_in_navigation(self): response = self.client.get( reverse(PAGE_DETAIL_URL, args=(self.page.slug, ))) self.assertEqual(response.status_code, 200) self.assertQuerysetEqual( response.context['pages'], [repr(page) for page in Page.objects.all()]) def test_draft_page_returns_404(self): self.page.is_draft = True self.page.save() response = self.client.get( reverse(PAGE_DETAIL_URL, args=(self.page.slug, ))) self.assertEqual(response.status_code, 404)
def handle(self, *args, **options): print 'Hello!!' for i in range(100): page = Page() page.title = 'dddsadfasfas' page.content = 'sdfsdf sdfsd' page.meta_content = 'ffff' page.meta_title = 'title' page.meta_keywords = 'ddddd' page.slug = 'slug' page.save() print 'It has done %s - %s!!!' % (i, i)
def post(self): if 'content' in request.endpoint: session['content'] = request.form['content'][:] return self.redirect('admin.add_page') else: from auth.models import User from admin.forms import BaseTemplateForm from page.models import Template from page.models import Page from wtforms import FormField from ext import db self._context['choices'] = [(x, x.name) for x in Template.query.all()] form = model_form(Page, db.session, base_class=Form, exclude=['date_added', 'added_by']) class PageForm(form): template = FormField(BaseTemplateForm) def _get_template_id(self, template_name): from page.models import Template t = Template.query.filter( Template.name == template_name).first() if t: return t.id return None def __init__(self, *args, **kwargs): if 'prefix' in kwargs: kwargs.pop('prefix') super(PageForm, self).__init__(*args, **kwargs) def populate_obj(self, obj): for name, field in self._fields.items(): if name == 'template': obj.template_id = self._get_template_id( field.template.data) self._fields.pop(name) super(PageForm, self).populate_obj(obj) self._form = PageForm(request.form) page = Page() self._form.populate_obj(page) if 'content' in session: page.content = session.pop('content', None) page.save() flash('Successfully created cms page: {}'.format(page.name)) return self.redirect('admin.pages') return self.render()
def delete(request, site, page_id): delete_children = request.GET.get('delete_children', False) active_site = Site.objects.get(id=site) if not delete_children: page = Page.on(active_site).get(id=page_id) new_parent = page.parent page.reparent_children(new_parent) # Yes, have to get the page again, or things will get messy page = Page.on(active_site).get(id=page_id) page.delete() return redirect('admin.sites.pages.page.list', active_site.id)
def test_save_existing_model_by_different_user(self): author = create_user() faker = Faker() page = Page( author=author, title=faker.words().capitalize(), body=faker.paragraphs()) page.save() form = self.pageadmin.get_form(page) user = create_user() request = HttpRequest() request.user = user self.pageadmin.save_model(request, page, form, False) self.assertNotEqual(page.author, user) self.assertGreater(page.modified_at, page.created_at)
def get(self,item_id=None): from auth.models import User if 'page' in request.endpoint: from page.models import Page page = Page.get_by_id(item_id) if not 'content' in request.endpoint: self._form = model_form(Page,Page.session,base_class=Form,exclude=['added_by','date_added']) self._context['obj'] = page else: from page.forms import EditContentForm self._form = EditContentForm self._form_obj = page elif 'block' in request.endpoint: from page.models import Block block = Block.get_by_id(item_id) if not 'content' in request.endpoint: self._form = model_form(Block,Block.session,base_class=Form,exclude=['templates','pages']) self._context['obj'] = block else: from page.forms import EditContentForm self._form = EditContentForm self._form_obj = block else: from admin.forms import TemplateBodyFieldForm from wtforms import FormField from page.models import Template template = Template.get_by_id(item_id) form = model_form(Template,Template.session,base_class=Form,exclude=['pages','blocks','filename','body']) class TemplateForm(form): body = FormField(TemplateBodyFieldForm,separator='_') self._form = TemplateForm self._context['obj'] = template self._form_obj = template return self.render()
def get_submenu(): """ Show Siblings of the current page and all children """ siblings = Page.get_all_siblings() #children = Page.objects.filter(parent=self.id) return {'siblings': siblings}
def setUp(self): faker = Faker() author = create_user() self.page = Page( author=author, body=faker.paragraphs(), title=faker.words().capitalize()) self.page.save()
def page(request, slug): try: page = Page.on(request.site).get(slug=slug, published=True) except Page.DoesNotExist: # This is (as of this writing) the only point of entry to the 404 template. raise Http404 matched_variant = match_user(request, page) requested_variant = request.GET.get(variant_key) if requested_variant is None: if matched_variant is None: # No variant requested, and no variant matched. The default, simple view for a page. default_variant = Variant.objects.get(page=page, segment__isnull=True) version = Version.objects.get(variant=default_variant, active=True) return parse_content(request, version) else: # No variant requested, but the page has variants and a special one matched. return redirect("%s?%s=%s" % (reverse('page.views.page', args=[slug]), variant_key, matched_variant.id)) else: # A specific variant was requested. Show it regardless of which variant matches the user, # but do log what actually matched. requested_variant = Variant.objects.get(id=requested_variant) version = Version.objects.get(variant=requested_variant, active=True) # In case the user happens to requests a variant without actually matching any if matched_variant is None: matched_segment = None else: matched_segment = matched_variant.segment return parse_content(request, version)
def post(self): if 'content' in request.endpoint: session['content'] = request.form['content'][:] return self.redirect('admin.add_page') else: from auth.models import User from admin.forms import BaseTemplateForm from page.models import Template from page.models import Page from wtforms import FormField from ext import db self._context['choices'] = [(x,x.name) for x in Template.query.all()] form = model_form(Page,db.session,base_class=Form,exclude=['date_added','added_by']) class PageForm(form): template = FormField(BaseTemplateForm) def _get_template_id(self,template_name): from page.models import Template t = Template.query.filter(Template.name==template_name).first() if t: return t.id return None def __init__(self,*args,**kwargs): if 'prefix' in kwargs: kwargs.pop('prefix') super(PageForm,self).__init__(*args,**kwargs) def populate_obj(self,obj): for name,field in self._fields.items(): if name == 'template': obj.template_id = self._get_template_id(field.template.data) self._fields.pop(name) super(PageForm,self).populate_obj(obj) self._form = PageForm(request.form) page = Page() self._form.populate_obj(page) if 'content' in session: page.content = session.pop('content',None) page.save() flash('Successfully created cms page: {}'.format(page.name)) return self.redirect('admin.pages') return self.render()
def post(self, slug): from auth.models import User from page.models import Page self._page = Page.get_by_slug(slug) self.frontend_nav() self._context['content'] = self._page.content if self._page.use_base_template: if self._page.template is not None: self._base_template = self._page.body self._process_base_template()
def post(self,slug): from auth.models import User from page.models import Page self._page = Page.get_by_slug(slug) self.frontend_nav() self._context['content'] = self._page.content if self._page.use_base_template: if self._page.template is not None: self._base_template = self._page.body self._process_base_template()
def list(request, site): active_site = Site.objects.get(id=site) pages = Page.objects.filter(site=active_site) root_page = Page.on(active_site).get(level=0) context = { 'active_site': active_site, 'nodes': pages, 'root_node': root_page, } return render(request, 'common/admin/sites/pages/list.html', context)
def new(request, site): active_site = Site.objects.get(id=site) if request.method != 'POST': return redirect('admin.sites.pages.page.list', active_site.id) if not slug_is_unique(request.POST['slug']): messages.error(request, 'slug_not_unique') return redirect('admin.sites.pages.page.new', active_site.id) page = Page( title=request.POST['title'], slug=request.POST['slug'], published=False, created_by=request.user, parent=Page.objects.get(id=request.POST['parent_id']), site=active_site, ) page.save() variant = Variant( page=page, article=None, name='Standard', segment=None, priority=1, owner=request.user, ) variant.save() version = Version( variant=variant, version=1, owner=request.user, active=True, ads=True, ) version.save() create_template(request.POST['template'], version) return redirect('admin.sites.pages.page.edit', active_site.id, version.id)
class PageAdminViewTest(TestCase): _multiprocess_can_split_ = True def setUp(self): faker = Faker() author = create_user() self.page = Page( author=author, body=faker.paragraphs(), title=faker.words().capitalize()) self.page.save() @create_admin_user_and_login def test_page_edit_render(self): response = self.client.get( reverse(PAGE_EDIT_URL, args=(self.page.pk, ))) self.assertEqual(response.status_code, 200) @create_admin_user_and_login def test_page_add_render(self): response = self.client.get(reverse(PAGE_ADD_URL)) self.assertEqual(response.status_code, 200)
def url_picker_context(active_site): article_versions = Version.objects.select_related('variant', 'variant__article').filter( variant__article__isnull=False, variant__segment__isnull=True, variant__article__published=True, active=True, variant__article__pub_date__lt=datetime.now(), variant__article__site=active_site, ).order_by('-variant__article__pub_date') return {'url_picker': { 'pages': Page.on(active_site).order_by('title'), 'article_versions': article_versions, 'foreninger': Forening.get_all_sorted(), }}
def get(self, item_id=None): from auth.models import User from ext import db if 'page' in request.endpoint: from page.models import Page page = Page.get_by_id(item_id) if not 'content' in request.endpoint: self._form = model_form(Page, db.session, base_class=Form, exclude=['added_by', 'date_added']) self._context['obj'] = page else: from page.forms import EditContentForm self._form = EditContentForm self._form_obj = page elif 'block' in request.endpoint: from page.models import Block block = Block.get_by_id(item_id) if not 'content' in request.endpoint: self._form = model_form(Block, db.session, base_class=Form, exclude=['templates', 'pages']) self._context['obj'] = block else: from page.forms import EditContentForm self._form = EditContentForm self._form_obj = block else: from admin.forms import TemplateBodyFieldForm from wtforms import FormField from page.models import Template template = Template.get_by_id(item_id) form = model_form(Template, db.session, base_class=Form, exclude=['pages', 'blocks', 'filename', 'body']) class TemplateForm(form): body = FormField(TemplateBodyFieldForm, separator='_') self._form = TemplateForm self._context['obj'] = template self._form_obj = template return self.render()
def edit(request, site, version): active_site = Site.objects.get(id=site) root_page = Page.on(active_site).get(level=0) pages = Page.objects.filter(site=active_site) version = Version.objects.get(id=version) is_editing_root_page = root_page.id == version.variant.page.id context = { 'active_site': active_site, 'version': version, 'widget_data': admin_context(active_site), 'pages': pages, 'root_page': root_page, 'is_editing_root_page': is_editing_root_page, 'image_search_length': settings.IMAGE_SEARCH_LENGTH, } context.update(url_picker_context(active_site)) # Fake request.site to the edited site; this will make context processors behave accordingly request.site = active_site return render(request, 'common/admin/sites/pages/edit.html', context)
def create(request): if not request.user.is_superuser: raise PermissionDenied if request.method == "POST": form = forms.Create(request.POST) if form.is_valid(): page = Page() page.title = form.cleaned_data["title"].strip() page.content = form.cleaned_data["content"] page.in_sidebar = form.cleaned_data["in_sidebar"] page.sidebar_ordering = form.cleaned_data["sidebar_ordering"] page.save() return HttpResponseRedirect(page.url()) else: # "GET" form = forms.Create() templatearguments = { "generic_form" : { "title" : "Create Page", "cancel_url" : "/", "form" : form, } } return render(request, 'common/submit.html', templatearguments)
def handle_save(request, page_id=None, parent_override=None, stripsettings=None): page = None if page_id is not None: # Load the page page = Page.objects.get(pk=page_id) else: # Create a new page page = Page() parent = None # Put in the values.. if parent_override is not None or request.POST["parent"] != "NULL": if parent_override is None: parent = Page.objects.get(pk=request.POST["parent"]) else: parent = parent_override page.name = request.POST["name"] page.content = request.POST["content"] if stripsettings is not None: page.content = bleach.clean(request.POST["content"], stripsettings.ALLOWED_TAGS, stripsettings.ALLOWED_ATTRIBUTES, stripsettings.ALLOWED_STYLES) page.parent = parent # Save. Bamilybamaram. page.save() # Handle possible uploads if 'fileupload' in request.FILES: file = PageFile() file.page = page file.file = request.FILES['fileupload'] file.save() return page
def check_slug(request, site): active_site = Site.objects.get(id=site) urls_valid = slug_is_unique(request.POST['slug']) page_valid = not Page.on(active_site).filter(slug=request.POST['slug']).exists() return HttpResponse(json.dumps({'valid': urls_valid and page_valid}))
def process_item(self, item, spider): ''' Function that processes each item after it has been scraped. Its purpose is to create content objects for each keyword on the page. ''' stop_words = [] stop_words_obj_list = StopWord.objects.all() for stop_word_obj in stop_words_obj_list: stop_words.append(stop_word_obj.stopword.strip()) stop_words.append("") temp_word_list = [] text = item["text"].encode("ascii","ignore") text = text.lower().translate(None,"\r\"!\\/?,:|][*&£^`¬;()").translate(None,digits) temp_word_list = text.split(" ") word_list = [word.strip(" \'").rstrip("-.") for word in temp_word_list if word.rstrip("-.") not in stop_words and word.strip("\n \t") != ""] page_text = ' '.join(word_list) domains = Domain.objects.all() domain_obj = None for domain in domains: temp_domain = domain.domain.replace("http://","").replace("www.","").rstrip("/") if temp_domain in item["link"]: domain_obj = domain try: page = Page.objects.get(domain = domain_obj, pageURL=item["link"]) except Page.DoesNotExist: page = None if page: if page.text == page_text: return item else: page.text = page_text page.has_adscore = False page.save() else: page = Page(domain=domain_obj, pageURL=item["link"], text=page_text) page.save() counter_list = Counter(word_list) for k,v in counter_list.items(): if k.strip() == "" or k is None: continue try: keyword = Keyword.objects.get(keyword=k) except Keyword.DoesNotExist: keyword = None if keyword: temp_content = Content(page=page, keyword=keyword, occurrence=v) temp_content.save() else: temp_keyword = Keyword(keyword=k) temp_keyword.save() temp_content = Content(page=page, keyword=temp_keyword, occurrence=v) temp_content.save() return item
def menu_limit_choices_to_page(): return { 'is_show': True, 'sort__gt': 0, 'pk__in': Page.queryset_not_cloned(flat_pk=True)}
def search(request): # Very simple search for now if 'q' not in request.GET: return render(request, 'common/page/search.html') search_query = request.GET['q'].strip() if len(search_query) < SEARCH_CHAR_LIMIT: context = { 'search_query': search_query, 'query_too_short': True, 'search_char_limit': SEARCH_CHAR_LIMIT, } return render(request, 'common/page/search.html', context) # Record the search search = Search(query=search_query, site=request.site) search.save() pages = Page.on(request.site).filter( # Match page title or content Q(variant__version__rows__columns__contents__content__icontains=search_query) | Q(title__icontains=search_query), # Default segment, active version, published page variant__segment=None, variant__version__active=True, published=True, ).distinct() article_versions = Version.objects.filter( # Match content variant__version__rows__columns__contents__content__icontains=search_query, # Active version, default segment, published article active=True, variant__segment=None, variant__article__published=True, variant__article__pub_date__lt=datetime.now(), variant__article__site=request.site, ).distinct().order_by('-variant__article__pub_date') aktivitet_filter = {'search': search_query} if request.site.forening.id != Forening.DNT_CENTRAL_ID: aktivitet_filter['organizers'] = '%s:%s' % ('forening', request.site.forening.id) _, aktivitet_dates = filter_aktivitet_dates(aktivitet_filter) aktivitet_date_count = aktivitet_dates.count() if request.site.id == Site.DNT_CENTRAL_ID: old_articles = OldArticle.objects.filter( Q(title__icontains=search_query) | Q(lede__icontains=search_query) | Q(content__icontains=search_query) ).distinct().order_by('-date') else: old_articles = [] context = { 'search_query': search_query, 'article_versions': article_versions, 'pages': pages, 'old_articles': old_articles, 'article_count': len(article_versions) + len(old_articles), 'aktivitet_date_count': aktivitet_date_count, } return render(request, 'common/page/search.html', context)
def handle(self, *args, **options): print 'start' p = Page() p.title = 'Helol' p.save() print 'Done'
def get(self): from .models import Page from blog.models import Tag data = dict( date_added=request.args.get('date_added', None), date_end=request.args.get('date_end', None), name=request.args.get('name', None), description=request.args.get('description', None), slug=request.args.get('slug', None), short_url=request.args.get('short_url', None), title=request.args.get('title', None), add_to_nav=request.args.get('add_to_nav', None), add_sidebar=request.args.get('add_sidebar', None), visible=request.args.get('visible', None), meta_title=request.args.get('meta_title', None), content=request.args.get('content', None), template=request.args.get('template', None), category=request.args.get('category', None), tags=request.args.get('tags', None), use_base_template=request.args.get('use_base_template', None), ) p = Page.query.filter(Page.name == data['name']).first() if p is not None: res = 0 else: tags = [x.name for x in Tag.query.all()] for tag in data['tags']: if not tag in tags: t = Tag() t.name = tag t.save() p = Page() p.name = data.get('name') p.date_added = data.get('date_added') p.date_end = data.get('date_end', None) p.description = data.get('description', None) p.slug = data.get('slug', None) p.short_url = data.get('short_url', None) p.title = data.get('title', None) nav = data.get('add_to_nav', 1) if str(nav).lower() == 'y': nav = 1 else: nav = 0 p.add_to_nav = nav sidebar = data.get('add_sidebar', 0) if str(sidebar).lower() == 'y': sidebar = 1 else: sidebar = 0 p.add_sidebar = sidebar p.visible = data.get('visible', None) p.meta_title = data.get('meta_title', None) p.content = data.get('content', None) p.template = data.get('template', None) p.category = data.get('category', None) p.tags = data.get('tags', None) p.use_base_template = data.get('use_base_template', None) p.save() res = 1 return jsonify(result=res, content=data['content'])
def get_page(self): return Page(title=self.title, keywords=self.keywords, meta_description=self.meta_description)
def get(self): from .models import Page from blog.models import Tag data = dict( date_added=request.args.get('date_added',None), date_end=request.args.get('date_end',None), name=request.args.get('name',None), description=request.args.get('description',None), slug=request.args.get('slug',None), short_url=request.args.get('short_url',None), title=request.args.get('title',None), add_to_nav=request.args.get('add_to_nav',None), add_sidebar=request.args.get('add_sidebar',None), visible=request.args.get('visible',None), meta_title=request.args.get('meta_title',None), content=request.args.get('content',None), template=request.args.get('template',None), category=request.args.get('category',None), tags=request.args.get('tags',None), use_base_template=request.args.get('use_base_template',None), ) p = Page.query.filter(Page.name==data['name']).first() if p is not None: res = 0 else: tags = [x.name for x in Tag.query.all()] for tag in data['tags']: if not tag in tags: t = Tag() t.name = tag t.save() p = Page() p.name = data.get('name') p.date_added = data.get('date_added') p.date_end = data.get('date_end',None) p.description = data.get('description',None) p.slug = data.get('slug',None) p.short_url = data.get('short_url',None) p.title = data.get('title',None) nav = data.get('add_to_nav',1) if str(nav).lower() == 'y': nav = 1 else: nav = 0 p.add_to_nav = nav sidebar = data.get('add_sidebar',0) if str(sidebar).lower() == 'y': sidebar = 1 else: sidebar = 0 p.add_sidebar = sidebar p.visible = data.get('visible',None) p.meta_title = data.get('meta_title',None) p.content = data.get('content',None) p.template = data.get('template',None) p.category = data.get('category',None) p.tags = data.get('tags',None) p.use_base_template = data.get('use_base_template',None) p.save() res = 1 return jsonify(result=res,content=data['content'])
def handle(self, *args, **options): print('Hello command!!!') Page.objects.all().delete() page1 = Page() page1.title = 'Index page' page1.content = 'content content' page1.save() page2 = Page() page2.title = 'Index page 2' page2.content = 'content content 2' page2.save()
def has_front_page(self): return Page.on(self).filter(slug='').exists()
def test_create(case): page = Page.create(DiaryId('1'), Lang.Ja, '本日は晴天なり') case.assert_(isinstance(page, Page))
def get_page_count(self): return Page.on(self).filter( published=True, ).count()
def test_model_properties(self): page = Page(author=self.author, body=self.body, title=self.title) page.save() self.assertEqual(page.body, self.body) self.assertEqual(page.title, self.title) self.assertEqual(page.author, self.author)
def has_published_front_page(self): return Page.on(self).filter( slug='', published=True, ).exists()
def test_slug_generation(self): page = Page(author=self.author, body=self.body, title=self.title) page.save() slug = page.title.replace(' ', '-').lower() self.assertEqual(page.slug, slug)