diff --git a/DOSPORTAL/admin.py b/DOSPORTAL/admin.py index 87ed70c..1e53495 100644 --- a/DOSPORTAL/admin.py +++ b/DOSPORTAL/admin.py @@ -1,6 +1,6 @@ from django.contrib import admin from .models import * - +from markdownx.admin import MarkdownxModelAdmin from import_export import resources from import_export.admin import ImportExportModelAdmin diff --git a/DOSPORTAL/forms.py b/DOSPORTAL/forms.py index b3ede71..f43e77b 100644 --- a/DOSPORTAL/forms.py +++ b/DOSPORTAL/forms.py @@ -4,7 +4,7 @@ from django import forms from django.contrib.auth.models import User from django.contrib.auth.forms import UserCreationForm - +from markdownx.fields import MarkdownxFormField class LoginForm(forms.Form): username = forms.CharField( @@ -81,6 +81,10 @@ def __init__(self,*args, user=None, **kwargs): help_text="Select used detector. It is not mandatory in case of detectors with auto-detect feature." ) + description = MarkdownxFormField( + + ) + record_type = forms.ChoiceField( choices=Record.RECORD_TYPES ) diff --git a/DOSPORTAL/migrations/0009_record_description.py b/DOSPORTAL/migrations/0009_record_description.py new file mode 100644 index 0000000..7550760 --- /dev/null +++ b/DOSPORTAL/migrations/0009_record_description.py @@ -0,0 +1,19 @@ +# Generated by Django 4.2.11 on 2024-04-04 16:43 + +from django.db import migrations +import markdownx.models + + +class Migration(migrations.Migration): + + dependencies = [ + ('DOSPORTAL', '0008_record_created_alter_record_data_file'), + ] + + operations = [ + migrations.AddField( + model_name='record', + name='description', + field=markdownx.models.MarkdownxField(blank=True, help_text='Description of the record', verbose_name='Description'), + ), + ] diff --git a/DOSPORTAL/models.py b/DOSPORTAL/models.py index 3ea9f3c..9f9c666 100644 --- a/DOSPORTAL/models.py +++ b/DOSPORTAL/models.py @@ -13,8 +13,9 @@ from django.contrib.contenttypes.models import ContentType from django.db import models from django.contrib.gis.db import models as geomodels - +from markdownx.models import MarkdownxField import json +from markdownx.utils import markdownify from .tasks import process_flight_entry, process_record_entry @@ -472,6 +473,11 @@ def user_directory_path_data(instance, filename): blank=True ) + description = MarkdownxField( + verbose_name=_("Description"), + help_text=_("Description of the record"), + blank=True + ) log_original_filename = models.CharField( verbose_name = _("Original filename of log file"), @@ -552,10 +558,13 @@ def save(self, *args, **kwargs): def __str__(self) -> str: return "record ({}, {}, start {}, {})".format(self.belongs, self.log_original_filename, self.time_start, 0) - def description(self) -> str: - return "Record ({}, {})".format(get_enum_dsc(self.RECORD_TYPES, self.record_type), self.time_start.strftime("%Y-%m-%d_%H:%M")) + # def description(self) -> str: + # return "Record ({}, {})".format(get_enum_dsc(self.RECORD_TYPES, self.record_type), self.time_start.strftime("%Y-%m-%d_%H:%M")) + @property + def formatted_markdown(self): + return markdownify(self.description) diff --git a/DOSPORTAL/settings.py b/DOSPORTAL/settings.py index 4e49895..6a16f30 100644 --- a/DOSPORTAL/settings.py +++ b/DOSPORTAL/settings.py @@ -56,12 +56,16 @@ 'crispy_forms', 'crispy_bootstrap5', 'django_gravatar', - + 'markdownx', 'prettyjson', 'organizations', ] +MARKDOWNX_MARKDOWN_EXTENSIONS = [ + 'markdown.extensions.extra' +] + MIDDLEWARE = [ 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', diff --git a/DOSPORTAL/templates/records/record_detail.html b/DOSPORTAL/templates/records/record_detail.html index ece1549..ff7a572 100644 --- a/DOSPORTAL/templates/records/record_detail.html +++ b/DOSPORTAL/templates/records/record_detail.html @@ -6,12 +6,12 @@ -