def root_create(request): try: root = models.URLPath.root() if not root.article: # TODO: This is too dangerous... let's say there is no root.article and we end up here, # then it might cascade to delete a lot of things on an existing installation.... / benjaoming root.delete() raise NoRootURL return redirect('wiki:get', path=root.path) except NoRootURL: pass if not request.user.is_superuser: return redirect(settings.LOGIN_URL + "?next=" + reverse("wiki:root_create")) if request.method == 'POST': create_form = forms.CreateRootForm(request.POST) if create_form.is_valid(): models.URLPath.create_root( title=create_form.cleaned_data["title"], content=create_form.cleaned_data["content"]) return redirect("wiki:root") else: create_form = forms.CreateRootForm() c = RequestContext(request, { 'create_form': create_form, 'editor': editors.getEditor(), }) return render_to_response("wiki/article/create_root.html", context_instance=c)
def get_context_data(self, **kwargs): c = ArticleMixin.get_context_data(self, **kwargs) c["parent_urlpath"] = self.urlpath c["parent_article"] = self.article c["create_form"] = kwargs.pop("form", None) c["editor"] = editors.getEditor() return c
class CreateForm(forms.Form, SpamProtectionMixin): def __init__(self, request, urlpath_parent, *args, **kwargs): super().__init__(*args, **kwargs) self.request = request self.urlpath_parent = urlpath_parent title = forms.CharField(label=_('Title'), ) slug = WikiSlugField( label=_('Slug'), help_text= _("This will be the address where your article can be found. Use only alphanumeric characters and - or _.<br>Note: If you change the slug later on, links pointing to this article are <b>not</b> updated." ), max_length=models.URLPath.SLUG_MAX_LENGTH) content = forms.CharField( label=_('Contents'), required=False, widget=getEditor().get_widget()) # @UndefinedVariable summary = forms.CharField( label=pgettext_lazy('Revision comment', 'Summary'), help_text=_("Write a brief message for the article's history log."), required=False) def clean_slug(self): return _clean_slug(self.cleaned_data['slug'], self.urlpath_parent) def clean(self): super().clean() self.check_spam() return self.cleaned_data
def root_create(request): try: root = models.URLPath.root() if not root.article: # TODO: This is too dangerous... let's say there is no root.article and we end up here, # then it might cascade to delete a lot of things on an existing installation.... / benjaoming root.delete() raise NoRootURL return redirect('wiki:get', path=root.path) except NoRootURL: pass if not request.user.is_superuser: return redirect(settings.LOGIN_URL + "?next=" + reverse("wiki:root_create")) if request.method == 'POST': create_form = forms.CreateRootForm(request.POST) if create_form.is_valid(): models.URLPath.create_root(title=create_form.cleaned_data["title"], content=create_form.cleaned_data["content"]) return redirect("wiki:root") else: create_form = forms.CreateRootForm() c = RequestContext(request, {'create_form': create_form, 'editor': editors.getEditor(),}) return render_to_response("wiki/article/create_root.html", context_instance=c)
def get_context_data(self, **kwargs): kwargs["form"] = self.get_form() kwargs["edit_form"] = kwargs["form"] kwargs["editor"] = editors.getEditor() kwargs["selected_tab"] = "edit" kwargs["sidebar"] = self.sidebar return super().get_context_data(**kwargs)
def get_context_data(self, **kwargs): kwargs['form'] = self.get_form() kwargs['edit_form'] = kwargs['form'] kwargs['editor'] = editors.getEditor() kwargs['selected_tab'] = 'edit' kwargs['sidebar'] = self.sidebar return super().get_context_data(**kwargs)
def get_context_data(self, **kwargs): c = ArticleMixin.get_context_data(self, **kwargs) c['parent_urlpath'] = self.urlpath c['parent_article'] = self.article c['create_form'] = kwargs.pop('form', None) c['editor'] = editors.getEditor() return c
def get_context_data(self, **kwargs): c = ArticleMixin.get_context_data(self, **kwargs) c['parent_urlpath'] = self.urlpath c['parent_article'] = self.article c['create_form'] = kwargs.pop('form', None) c['editor'] = editors.getEditor() return c
def get_context_data(self, **kwargs): kwargs = super().get_context_data(**kwargs) kwargs['editor'] = editors.getEditor() # Needed since Django 1.9 because get_context_data is no longer called # with the form instance if 'form' not in kwargs: kwargs['form'] = self.get_form() return kwargs
def get_context_data(self, **kwargs): kwargs = super(CreateRootView, self).get_context_data(**kwargs) kwargs['editor'] = editors.getEditor() # Needed since Django 1.9 because get_context_data is no longer called # with the form instance if 'form' not in kwargs: kwargs['form'] = self.get_form() return kwargs
def get_context_data(self, **kwargs): c = ArticleMixin.get_context_data(self, **kwargs) c["form"] = self.get_form() c["parent_urlpath"] = self.urlpath c["parent_article"] = self.article c["create_form"] = c.pop("form", None) c["editor"] = editors.getEditor() return c
def get_context_data(self, **kwargs): kwargs = super(CreateRootView, self).get_context_data(**kwargs) kwargs["editor"] = editors.getEditor() # Needed since Django 1.9 because get_context_data is no longer called # with the form instance if "form" not in kwargs: kwargs["form"] = self.get_form() return kwargs
def get_context_data(self, **kwargs): # Needed for Django 1.9 because get_context_data is no longer called # with the form instance if "form" not in kwargs: kwargs["form"] = self.get_form() kwargs["edit_form"] = kwargs["form"] kwargs["editor"] = editors.getEditor() kwargs["selected_tab"] = "edit" kwargs["sidebar"] = self.sidebar return super(Edit, self).get_context_data(**kwargs)
def get_context_data(self, **kwargs): # Needed for Django 1.9 because get_context_data is no longer called # with the form instance if 'form' not in kwargs: kwargs['form'] = self.get_form() kwargs['edit_form'] = kwargs['form'] kwargs['editor'] = editors.getEditor() kwargs['selected_tab'] = 'edit' kwargs['sidebar'] = self.sidebar return super().get_context_data(**kwargs)
def get_context_data(self, **kwargs): # Needed for Django 1.9 because get_context_data is no longer called # with the form instance if 'form' not in kwargs: kwargs['form'] = self.get_form() kwargs['edit_form'] = kwargs['form'] kwargs['editor'] = editors.getEditor() kwargs['selected_tab'] = 'edit' kwargs['sidebar'] = self.sidebar return super(Edit, self).get_context_data(**kwargs)
class CreateForm(forms.Form, SpamProtectionMixin): def __init__(self, request, urlpath_parent, *args, **kwargs): super(CreateForm, self).__init__(*args, **kwargs) self.request = request self.urlpath_parent = urlpath_parent title = forms.CharField(label=_('Title'), ) slug = forms.SlugField( label=_('Slug'), help_text= _("This will be the address where your article can be found. Use only alphanumeric characters and - or _. Note that you cannot change the slug after creating the article." ), max_length=models.URLPath.SLUG_MAX_LENGTH) content = forms.CharField( label=_('Contents'), required=False, widget=getEditor().get_widget()) #@UndefinedVariable summary = forms.CharField( label=_('Summary'), help_text=_("Write a brief message for the article's history log."), required=False) def clean_slug(self): slug = self.cleaned_data['slug'] if slug.startswith("_"): raise forms.ValidationError( ugettext('A slug may not begin with an underscore.')) if slug == 'admin': raise forms.ValidationError( ugettext("'admin' is not a permitted slug name.")) if settings.URL_CASE_SENSITIVE: already_existing_slug = models.URLPath.objects.filter( slug=slug, parent=self.urlpath_parent) else: slug = slug.lower() slug = slug.replace('-', '_') already_existing_slug = models.URLPath.objects.filter( slug__iexact=slug, parent=self.urlpath_parent) if already_existing_slug: already_urlpath = already_existing_slug[0] if already_urlpath.article and already_urlpath.article.current_revision.deleted: raise forms.ValidationError( ugettext( 'A deleted article with slug "%s" already exists.') % already_urlpath.slug) else: raise forms.ValidationError( ugettext('A slug named "%s" already exists.') % already_urlpath.slug) return slug def clean(self): self.check_spam() return self.cleaned_data
def get_context_data(self, **kwargs): c = ArticleMixin.get_context_data(self, **kwargs) # Needed since Django 1.9 because get_context_data is no longer called # with the form instance if "form" not in c: c["form"] = self.get_form() c["parent_urlpath"] = self.urlpath c["parent_article"] = self.article c["create_form"] = c.pop("form", None) c["editor"] = editors.getEditor() return c
def get_context_data(self, **kwargs): c = ArticleMixin.get_context_data(self, **kwargs) # Needed since Django 1.9 because get_context_data is no longer called # with the form instance if 'form' not in c: c['form'] = self.get_form() c['parent_urlpath'] = self.urlpath c['parent_article'] = self.article c['create_form'] = c.pop('form', None) c['editor'] = editors.getEditor() return c
def get_context_data(self, **kwargs): c = ArticleMixin.get_context_data(self, **kwargs) # Needed since Django 1.9 because get_context_data is no longer called # with the form instance if 'form' not in c: c['form'] = self.get_form() c['parent_urlpath'] = self.urlpath c['parent_article'] = self.article c['create_form'] = c.pop('form', None) c['editor'] = editors.getEditor() return c
class CreateRootForm(forms.Form): title = forms.CharField( label=_('Title'), help_text=_( 'Initial title of the article. May be overridden with revision titles.')) content = forms.CharField( label=_('Type in some contents'), help_text=_( 'This is just the initial contents of your article. After creating it, you can use more complex features like adding plugins, meta data, related articles etc...'), required=False, widget=getEditor().get_widget()) # @UndefinedVariable
def get_urls(self): urlpatterns = self.get_root_urls() urlpatterns += getEditor().get_urls() urlpatterns += self.get_accounts_urls() urlpatterns += self.get_deleted_list_urls() urlpatterns += self.get_revision_urls() urlpatterns += self.get_article_urls() urlpatterns += self.get_plugin_urls() # This ALWAYS has to be the last of all the patterns since # the paths in theory could wrongly match other targets. urlpatterns += self.get_article_path_urls() return urlpatterns
def get_context_data(self, **kwargs): # Needed for Django 1.9 because get_context_data is no longer called # with the form instance if 'form' not in kwargs: kwargs['form'] = self.get_form() kwargs['edit_form'] = kwargs['form'] kwargs['editor'] = editors.getEditor() kwargs['selected_tab'] = 'edit' kwargs['sidebar'] = self.sidebar # try: # TODO: remove # kwargs['metadata'] = Supersense.objects.get(article = self.article) # except: # pass return super(Edit, self).get_context_data(**kwargs)
class EditForm(forms.Form, SpamProtectionMixin): title = forms.CharField(label=_("Title"), ) content = forms.CharField( label=_("Contents"), required=False, widget=getEditor().get_widget()) # @UndefinedVariable summary = forms.CharField( label=pgettext_lazy("Revision comment", "Summary"), help_text= _("Give a short reason for your edit, which will be stated in the revision log." ), required=False, ) current_revision = forms.IntegerField(required=False, widget=forms.HiddenInput()) def __init__(self, request, current_revision, *args, **kwargs): self.request = request self.no_clean = kwargs.pop("no_clean", False) self.preview = kwargs.pop("preview", False) self.initial_revision = current_revision self.presumed_revision = None if current_revision: # For e.g. editing a section of the text: The content provided by the caller is used. # Otherwise use the content of the revision. provided_content = True content = kwargs.pop("content", None) if content is None: provided_content = False content = current_revision.content initial = { "content": content, "title": current_revision.title, "current_revision": current_revision.id, } initial.update(kwargs.get("initial", {})) # Manipulate any data put in args[0] such that the current_revision # is reset to match the actual current revision. data = None if len(args) > 0: data = args[0] args = args[1:] if data is None: data = kwargs.get("data", None) if data: self.presumed_revision = data.get("current_revision", None) if not str(self.presumed_revision) == str( self.initial_revision.id): newdata = {} for k, v in data.items(): newdata[k] = v newdata["current_revision"] = self.initial_revision.id # Don't merge if content comes from the caller if provided_content: self.presumed_revision = self.initial_revision.id else: newdata["content"] = simple_merge( content, data.get("content", "")) newdata["title"] = current_revision.title kwargs["data"] = newdata else: # Always pass as kwarg kwargs["data"] = data kwargs["initial"] = initial super().__init__(*args, **kwargs) def clean_title(self): title = self.cleaned_data.get("title", None) title = (title or "").strip() if not title: raise forms.ValidationError( gettext("Article is missing title or has an invalid title")) return title def clean(self): """Validates form data by checking for the following No new revisions have been created since user attempted to edit Revision title or content has changed """ if self.no_clean or self.preview: return self.cleaned_data if not str(self.initial_revision.id) == str(self.presumed_revision): raise forms.ValidationError( gettext( "While you were editing, someone else changed the revision. Your contents have been automatically merged with the new contents. Please review the text below." )) if ("title" in self.cleaned_data and self.cleaned_data["title"] == self.initial_revision.title and self.cleaned_data["content"] == self.initial_revision.content): raise forms.ValidationError( gettext("No changes made. Nothing to save.")) self.check_spam() return self.cleaned_data
def get_context_data(self, **kwargs): kwargs = super(RevisionAddView, self).get_context_data(**kwargs) kwargs['template'] = self.template kwargs['editor'] = editors.getEditor() kwargs['selected_tab'] = 'template' return kwargs
def get_context_data(self, **kwargs): kwargs['selected_tab'] = 'template' kwargs['editor'] = editors.getEditor() return super(TemplateCreateView, self).get_context_data(**kwargs)
class EditForm(forms.Form, SpamProtectionMixin): title = forms.CharField(label=_('Title'), ) content = forms.CharField( label=_('Contents'), required=False, widget=getEditor().get_widget()) # @UndefinedVariable summary = forms.CharField( label=pgettext_lazy('Revision comment', 'Summary'), help_text= _('Give a short reason for your edit, which will be stated in the revision log.' ), required=False) current_revision = forms.IntegerField(required=False, widget=forms.HiddenInput()) def __init__(self, request, current_revision, *args, **kwargs): self.request = request self.no_clean = kwargs.pop('no_clean', False) self.preview = kwargs.pop('preview', False) self.initial_revision = current_revision self.presumed_revision = None if current_revision: initial = { 'content': current_revision.content, 'title': current_revision.title, 'current_revision': current_revision.id } initial.update(kwargs.get('initial', {})) # Manipulate any data put in args[0] such that the current_revision # is reset to match the actual current revision. data = None if len(args) > 0: data = args[0] args = args[1:] if data is None: data = kwargs.get('data', None) if data: self.presumed_revision = data.get('current_revision', None) if not str(self.presumed_revision) == str( self.initial_revision.id): newdata = {} for k, v in data.items(): newdata[k] = v newdata['current_revision'] = self.initial_revision.id newdata['content'] = simple_merge( self.initial_revision.content, data.get('content', "")) newdata['title'] = current_revision.title kwargs['data'] = newdata else: # Always pass as kwarg kwargs['data'] = data kwargs['initial'] = initial super().__init__(*args, **kwargs) def clean_title(self): title = self.cleaned_data.get('title', None) title = (title or "").strip() if not title: raise forms.ValidationError( gettext('Article is missing title or has an invalid title')) return title def clean(self): """Validates form data by checking for the following No new revisions have been created since user attempted to edit Revision title or content has changed """ cd = super().clean() if self.no_clean or self.preview: return cd if not str(self.initial_revision.id) == str(self.presumed_revision): raise forms.ValidationError( gettext( 'While you were editing, someone else changed the revision. Your contents have been automatically merged with the new contents. Please review the text below.' )) if ('title' in cd) and cd['title'] == self.initial_revision.title and cd[ 'content'] == self.initial_revision.content: raise forms.ValidationError( gettext('No changes made. Nothing to save.')) self.check_spam() return cd
def get_context_data(self, **kwargs): kwargs['parent_urlpath'] = self.urlpath kwargs['parent_article'] = self.article kwargs['create_form'] = kwargs.pop('form', None) kwargs['editor'] = editors.getEditor() return super(Create, self).get_context_data(**kwargs)
def get_context_data(self, **kwargs): data = super(CreateRootView, self).get_context_data(**kwargs) data['editor'] = editors.getEditor() return data
def get_context_data(self, **kwargs): data = super(CreateRootView, self).get_context_data(**kwargs) data["editor"] = editors.getEditor() return data
def get_context_data(self, **kwargs): kwargs = super().get_context_data(**kwargs) kwargs['editor'] = editors.getEditor() return kwargs
def get_context_data(self, **kwargs): kwargs["edit_form"] = kwargs.pop("form", None) kwargs["editor"] = editors.getEditor() kwargs["selected_tab"] = "edit" kwargs["sidebar"] = self.sidebar return super(Edit, self).get_context_data(**kwargs)
def get_context_data(self, **kwargs): kwargs['parent_urlpath'] = self.urlpath kwargs['parent_article'] = self.article kwargs['create_form'] = kwargs.pop('form', None) kwargs['editor'] = editors.getEditor() return super(Create, self).get_context_data(**kwargs)
def get_context_data(self, **kwargs): kwargs['edit_form'] = kwargs.pop('form', None) kwargs['editor'] = editors.getEditor() kwargs['selected_tab'] = 'edit' kwargs['sidebar'] = self.sidebar return super(Edit, self).get_context_data(**kwargs)
class BotUpdateForm(forms.ModelForm): """ Standard form for updating a bot """ wiki_article_content = forms.CharField(label='Bot page content', required=False, widget=getEditor().get_widget()) def __init__(self, *args, **kwargs, ): super().__init__(*args, **kwargs) # change the available fields based upon whether the bot_data is available for editing or not # and whether there's a current season if self.instance.bot_data_is_currently_frozen(): self.fields['bot_data'].disabled = True try: Season.get_current_season() # in season except NoCurrentSeason: # outside season - don't allow activation self.fields['active'].disabled = True self.fields['active'].required = False class Meta: model = Bot fields = ['active', 'bot_zip', 'bot_zip_publicly_downloadable', 'bot_data', 'bot_data_publicly_downloadable', 'bot_data_enabled']
class EditForm(forms.Form): title = forms.CharField(label=_(u'Title'), ) content = forms.CharField( label=_(u'Contents'), required=False, widget=getEditor().get_widget()) #@UndefinedVariable summary = forms.CharField( label=_(u'Summary'), help_text= _(u'Give a short reason for your edit, which will be stated in the revision log.' ), required=False) current_revision = forms.IntegerField(required=False, widget=forms.HiddenInput()) def __init__(self, current_revision, *args, **kwargs): self.no_clean = kwargs.pop('no_clean', False) self.preview = kwargs.pop('preview', False) self.initial_revision = current_revision self.presumed_revision = None if current_revision: initial = { 'content': current_revision.content, 'title': current_revision.title, 'current_revision': current_revision.id } initial.update(kwargs.get('initial', {})) # Manipulate any data put in args[0] such that the current_revision # is reset to match the actual current revision. data = None if len(args) > 0: data = args[0] if not data: data = kwargs.get('data', None) if data: self.presumed_revision = data.get('current_revision', None) if not str(self.presumed_revision) == str( self.initial_revision.id): newdata = {} for k, v in data.items(): newdata[k] = v newdata['current_revision'] = self.initial_revision.id newdata['content'] = simple_merge( self.initial_revision.content, data.get('content', "")) newdata['title'] = current_revision.title kwargs['data'] = newdata kwargs['initial'] = initial super(EditForm, self).__init__(*args, **kwargs) def clean(self): cd = self.cleaned_data if self.no_clean or self.preview: return cd if not str(self.initial_revision.id) == str(self.presumed_revision): raise forms.ValidationError( _(u'While you were editing, someone else changed the revision. Your contents have been automatically merged with the new contents. Please review the text below.' )) if cd['title'] == self.initial_revision.title and cd[ 'content'] == self.initial_revision.content: raise forms.ValidationError( _(u'No changes made. Nothing to save.')) return cd