diff --git a/core/forms.py b/core/forms.py index 8365a63..f3df10a 100644 --- a/core/forms.py +++ b/core/forms.py @@ -6,7 +6,7 @@ from django.forms import ModelForm from django.forms.models import modelformset_factory from django.contrib.admin.widgets import AdminDateWidget -from tinymce.widgets import TinyMCE +#from tinymce.widgets import TinyMCE from troggle.core.models.troggle import Person, PersonExpedition, Expedition from troggle.core.models.caves import Cave, LogbookEntry, QM, Entrance, CaveAndEntrance @@ -25,7 +25,6 @@ class CaveForm(ModelForm): '''Only those fields for which we want to override defaults are listed here the other fields are present on the form, but use the default presentation style ''' - official_name = forms.CharField(required = False, widget=forms.TextInput(attrs={'size': '45'})) underground_description = forms.CharField(required = False, widget=HTMLarea( attrs={"height":"80%", "rows":20, 'placeholder': "Enter page content (using HTML)"})) @@ -63,123 +62,6 @@ class CaveForm(ModelForm): if self.cleaned_data.get("url") and self.cleaned_data.get("url").startswith("/"): self._errors["url"] = self.error_class(["This field cannot start with a /."]) return self.cleaned_data - - -class CaveFormTextArea(ModelForm): - '''Only those fields for which we want to override defaults are listed here - the other fields are present on the form, but use the default presentation style - ''' - - official_name = forms.CharField(required = False, widget=forms.TextInput(attrs={'size': '45'})) - underground_description = forms.CharField(required = False, widget=forms.Textarea(attrs={'rows':9})) - explorers = forms.CharField(required = False, widget=forms.Textarea(attrs={'rows':9})) - equipment = forms.CharField(required = False, widget=forms.Textarea(attrs={'rows':9})) - survey = forms.CharField(required = False, widget=forms.Textarea(attrs={'rows':9})) - #survey = forms.CharField(required = False, widget=TinyMCE(attrs={'cols': 80, 'rows': 10})) - kataster_status = forms.CharField(required = False) - underground_centre_line = forms.CharField(required = False, widget=forms.Textarea(attrs={'rows':9})) - notes = forms.CharField(required = False, widget=forms.Textarea(attrs={'rows':9})) - references = forms.CharField(required = False, widget=forms.Textarea(attrs={'rows':9})) - description_file = forms.CharField(required = False, widget=forms.TextInput(attrs={'size': '45'})) - survex_file = forms.CharField(required = False, label="Survex file [caves-1623/000/000.svx]", widget=forms.TextInput(attrs={'size': '45'})) - url = forms.CharField(required = True, label="URL [1623/000/000]", widget=forms.TextInput(attrs={'size': '45'})) - length = forms.CharField(required = False, label="Length (m)") - depth = forms.CharField(required = False, label="Depth (m)") - extent = forms.CharField(required = False, label="Extent (m)") - class Meta: - model = Cave - exclude = ("filename",) - - def clean(self): - if self.cleaned_data.get("kataster_number") == "" and self.cleaned_data.get("unofficial_number") == "": - self._errors["unofficial_number"] = self.error_class(["Either the kataster or unoffical number is required."]) -# if self.cleaned_data.get("kataster_number") != "" and self.cleaned_data.get("official_name") == "": -# self._errors["official_name"] = self.error_class(["This field is required when there is a kataster number."]) - if self.cleaned_data.get("area") == []: - self._errors["area"] = self.error_class(["This field is required."]) - if self.cleaned_data.get("url") and self.cleaned_data.get("url").startswith("/"): - self._errors["url"] = self.error_class(["This field cannot start with a /."]) - return self.cleaned_data - - -class CaveFormCodeMirrorPreview(ModelForm): - '''Only those fields for which we want to override defaults are listed here - the other fields are present on the form, but use the default presentation style - ''' - - official_name = forms.CharField(required = False, widget=forms.TextInput(attrs={'size': '45'})) - underground_description = forms.CharField(required = False, widget=HTMLarea(preview = True, - attrs={"height":"80%", "rows":20, 'placeholder': "Enter page content (using HTML)"})) - explorers = forms.CharField(required = False, widget=HTMLarea(preview = True, - attrs={"height":"80%", "rows":20, 'placeholder': "Enter page content (using HTML)"})) - equipment = forms.CharField(required = False, widget=HTMLarea(preview = True, - attrs={"height":"80%", "rows":20, 'placeholder': "Enter page content (using HTML)"})) - survey = forms.CharField(required = False, widget=HTMLarea(preview = True, - attrs={"height":"80%", "rows":20, 'placeholder': "Enter page content (using HTML)"})) - #survey = forms.CharField(required = False, widget=TinyMCE(attrs={'cols': 80, 'rows': 10})) - kataster_status = forms.CharField(required = False) - underground_centre_line = forms.CharField(required = False, widget=HTMLarea(preview = True, - attrs={"height":"80%", "rows":20, 'placeholder': "Enter page content (using HTML)"})) - notes = forms.CharField(required = False, widget=HTMLarea(preview = True, - attrs={"height":"80%", "rows":20, 'placeholder': "Enter page content (using HTML)"})) - references = forms.CharField(required = False, widget=HTMLarea(preview = True, - attrs={"height":"80%", "rows":20, 'placeholder': "Enter page content (using HTML)"})) - description_file = forms.CharField(required = False, widget=forms.TextInput(attrs={'size': '45'})) - survex_file = forms.CharField(required = False, label="Survex file [caves-1623/000/000.svx]", widget=forms.TextInput(attrs={'size': '45'})) - url = forms.CharField(required = True, label="URL [1623/000/000]", widget=forms.TextInput(attrs={'size': '45'})) - length = forms.CharField(required = False, label="Length (m)") - depth = forms.CharField(required = False, label="Depth (m)") - extent = forms.CharField(required = False, label="Extent (m)") - class Meta: - model = Cave - exclude = ("filename",) - - def clean(self): - if self.cleaned_data.get("kataster_number") == "" and self.cleaned_data.get("unofficial_number") == "": - self._errors["unofficial_number"] = self.error_class(["Either the kataster or unoffical number is required."]) -# if self.cleaned_data.get("kataster_number") != "" and self.cleaned_data.get("official_name") == "": -# self._errors["official_name"] = self.error_class(["This field is required when there is a kataster number."]) - if self.cleaned_data.get("area") == []: - self._errors["area"] = self.error_class(["This field is required."]) - if self.cleaned_data.get("url") and self.cleaned_data.get("url").startswith("/"): - self._errors["url"] = self.error_class(["This field cannot start with a /."]) - return self.cleaned_data - -class CaveFormTinyMCE(ModelForm): - '''Only those fields for which we want to override defaults are listed here - the other fields are present on the form, but use the default presentation style - ''' - - official_name = forms.CharField(required = False, widget=forms.TextInput(attrs={'size': '45'})) - underground_description = forms.CharField(required = False, widget=TinyMCE(attrs={'cols': 80, 'rows': 30})) - explorers = forms.CharField(required = False, widget=TinyMCE(attrs={'cols': 80, 'rows': 30})) - equipment = forms.CharField(required = False, widget=TinyMCE(attrs={'cols': 80, 'rows': 30})) - survey = forms.CharField(required = False, widget=TinyMCE(attrs={'cols': 80, 'rows': 30})) - #survey = forms.CharField(required = False, widget=TinyMCE(attrs={'cols': 80, 'rows': 10})) - kataster_status = forms.CharField(required = False) - underground_centre_line = forms.CharField(required = False, widget=TinyMCE(attrs={'cols': 80, 'rows': 30})) - notes = forms.CharField(required = False, widget=TinyMCE(attrs={'cols': 80, 'rows': 30})) - references = forms.CharField(required = False, widget=TinyMCE(attrs={'cols': 80, 'rows': 30})) - description_file = forms.CharField(required = False, widget=forms.TextInput(attrs={'size': '45'})) - survex_file = forms.CharField(required = False, label="Survex file [caves-1623/000/000.svx]", widget=forms.TextInput(attrs={'size': '45'})) - url = forms.CharField(required = True, label="URL [1623/000/000]", widget=forms.TextInput(attrs={'size': '45'})) - length = forms.CharField(required = False, label="Length (m)") - depth = forms.CharField(required = False, label="Depth (m)") - extent = forms.CharField(required = False, label="Extent (m)") - class Meta: - model = Cave - exclude = ("filename",) - - def clean(self): - if self.cleaned_data.get("kataster_number") == "" and self.cleaned_data.get("unofficial_number") == "": - self._errors["unofficial_number"] = self.error_class(["Either the kataster or unoffical number is required."]) -# if self.cleaned_data.get("kataster_number") != "" and self.cleaned_data.get("official_name") == "": -# self._errors["official_name"] = self.error_class(["This field is required when there is a kataster number."]) - if self.cleaned_data.get("area") == []: - self._errors["area"] = self.error_class(["This field is required."]) - if self.cleaned_data.get("url") and self.cleaned_data.get("url").startswith("/"): - self._errors["url"] = self.error_class(["This field cannot start with a /."]) - return self.cleaned_data class EntranceForm(ModelForm): '''Only those fields for which we want to override defaults are listed here diff --git a/core/views/caves.py b/core/views/caves.py index bbc2750..8df801b 100644 --- a/core/views/caves.py +++ b/core/views/caves.py @@ -18,7 +18,7 @@ import troggle.settings as settings from troggle.core.views import expo from troggle.core.models.troggle import Expedition, DataIssue from troggle.core.models.caves import CaveSlug, Cave, CaveAndEntrance, QM, EntranceSlug, Entrance, Area, SurvexStation, GetCaveLookup -from troggle.core.forms import CaveForm, CaveAndEntranceFormSet, EntranceForm, EntranceLetterForm, CaveFormCodeMirrorPreview, CaveFormTextArea, CaveFormTinyMCE +from troggle.core.forms import CaveForm, CaveAndEntranceFormSet, EntranceForm, EntranceLetterForm from .auth import login_required_if_public '''Manages the complex procedures to assemble a cave description out of the compnoents @@ -297,42 +297,6 @@ def caveEntrance(request, slug): else: return render(request,'cave_entrances.html', {'cave': cave}) -def test_edit_cave(request, editor = "codemirror"): - '''This is the form that edits all the cave data and writes out an XML file in the :expoweb: repo folder - The format for the file being saved is in templates/dataformat/cave.xml - - It does save the data into into the database directly, not by parsing the file. - It does NOT yet commit to the git repoSaving is not allowed - ''' - form_type = {"codemirror": CaveForm, "codemirrorpreview": CaveFormCodeMirrorPreview, "textarea": CaveFormTextArea, "tinymce": CaveFormTinyMCE}[editor] - - message = "" - try: - cave = Cave.objects.get(caveslug__slug = "1623-264") - except: - return render(request,'errors/badslug.html') - if request.POST: - form = form_type(request.POST, instance=cave) - ceFormSet = CaveAndEntranceFormSet(request.POST) - #versionControlForm = VersionControlCommentForm(request.POST) - if form.is_valid() and ceFormSet.is_valid(): - pass - else: - message = f'! POST data is INVALID {cave}' - print(message) - else: - form = form_type(instance=cave) - ceFormSet = CaveAndEntranceFormSet(queryset=cave.caveandentrance_set.all()) - #versionControlForm = VersionControlCommentForm() - - return render(request, - 'editcave.html', - {'form': form, 'cave': cave, 'message': message, - 'caveAndEntranceFormSet': ceFormSet, - 'editor': editor, - #'versionControlForm': versionControlForm - }) - @login_required_if_public def edit_cave(request, slug=None): '''This is the form that edits all the cave data and writes out an XML file in the :expoweb: repo folder @@ -341,7 +305,6 @@ def edit_cave(request, slug=None): It does save the data into into the database directly, not by parsing the file. It does NOT yet commit to the git repo ''' - message = "" if slug is not None: try: diff --git a/requirements.txt b/requirements.txt index da33a88..b05fda2 100644 --- a/requirements.txt +++ b/requirements.txt @@ -14,4 +14,3 @@ reportlab==3.6.0 sqlparse==0.4.0 typing_extensions==4.2.0 Unidecode==1.3.0 -django-tinymce diff --git a/settings.py b/settings.py index 05947c0..bcb972e 100644 --- a/settings.py +++ b/settings.py @@ -127,26 +127,7 @@ X_FRAME_OPTIONS = 'DENY' # changed to "DENY" after I eliminated all the iframes DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField' # from Django 3.2 -TINYMCE_JS_URL = 'https://cloud.tinymce.com/stable/tinymce.min.js' -TINYMCE_DEFAULT_CONFIG = { - "height": "320px", - "width": "960px", - "menubar": "file edit view insert format tools table help", - "plugins": "advlist autolink lists link image charmap print preview anchor searchreplace visualblocks code " - "fullscreen insertdatetime media table paste code help wordcount spellchecker", - "toolbar": "undo redo | bold italic underline strikethrough | fontselect fontsizeselect formatselect | alignleft " - "aligncenter alignright alignjustify | outdent indent | numlist bullist checklist | forecolor " - "backcolor casechange permanentpen formatpainter removeformat | pagebreak | charmap emoticons | " - "fullscreen preview save print | insertfile image media pageembed template link anchor codesample | " - "a11ycheck ltr rtl | showcomments addcomment code", - "custom_undo_redo_levels": 10, - "language": "es_ES", # To force a specific language instead of the Django current language. -} -TINYMCE_SPELLCHECKER = True -TINYMCE_COMPRESSOR = True - INSTALLED_APPS = ( - 'tinymce', 'django.contrib.admin', 'django.contrib.auth', # includes the url redirections for login, logout 'django.contrib.contenttypes', diff --git a/templates/editcave.html b/templates/editcave.html index 4897027..64c2f97 100644 --- a/templates/editcave.html +++ b/templates/editcave.html @@ -2,17 +2,6 @@ {% block title %}Edit Cave - {{cave.official_name|safe}} - {{cave.kataster_number}}{% endblock %} {% block extraheaders %} {% include 'html_editor_scripts_css.html' %} - - {% endblock %} {% block content %}