diff --git a/apis_bibsonomy/forms.py b/apis_bibsonomy/forms.py index 48fd5c7..3c39085 100644 --- a/apis_bibsonomy/forms.py +++ b/apis_bibsonomy/forms.py @@ -20,7 +20,7 @@ def __init__(self, *args, **kwargs): self.helper = FormHelper(self) if "instance" in kwargs: self.fields["bibs_url"].widget.choices = [ - (self.initial.get("bibs_url"), self.instance.bibtexjson.get("title")) + (self.initial.get("bibs_url"), self.instance.bibtex.get("title")) ] self.helper.layout = Layout( Row( diff --git a/apis_bibsonomy/migrations/0004_alter_reference_bibtex.py b/apis_bibsonomy/migrations/0004_alter_reference_bibtex.py new file mode 100644 index 0000000..8c970fa --- /dev/null +++ b/apis_bibsonomy/migrations/0004_alter_reference_bibtex.py @@ -0,0 +1,17 @@ +# Generated by Django 5.1.1 on 2024-09-23 09:49 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + dependencies = [ + ("apis_bibsonomy", "0003_auto_20230202_0953"), + ] + + operations = [ + migrations.AlterField( + model_name="reference", + name="bibtex", + field=models.JSONField(blank=True, null=True), + ), + ] diff --git a/apis_bibsonomy/models.py b/apis_bibsonomy/models.py index f7d0ea2..494d510 100644 --- a/apis_bibsonomy/models.py +++ b/apis_bibsonomy/models.py @@ -5,8 +5,6 @@ from django.db.models import Q from .utils import get_bibtex_from_url -import json - class Reference(models.Model): """Model that holds the reference to a bibsonomy entry""" @@ -14,7 +12,7 @@ class Reference(models.Model): bibs_url = models.URLField() pages_start = models.PositiveIntegerField(blank=True, null=True) pages_end = models.PositiveIntegerField(blank=True, null=True) - bibtex = models.TextField(blank=True, null=True) + bibtex = models.JSONField(blank=True, null=True) content_type = models.ForeignKey(ContentType, on_delete=models.CASCADE) object_id = models.PositiveIntegerField() attribute = models.CharField(blank=True, null=True, max_length=255) @@ -30,15 +28,11 @@ class Reference(models.Model): ) def __str__(self): - title = self.bibtexjson.get("title") + title = self.bibtex.get("title") desc = [title, self.pages_start, self.pages_end, self.folio, self.notes] desc = ", ".join(map(str, filter(None, desc))) return desc - @property - def bibtexjson(self): - return json.loads(self.bibtex or "{}") - def get_absolute_url(self): return reverse("apis_bibsonomy:referencedetail", kwargs={"pk": self.pk}) diff --git a/apis_bibsonomy/templates/apis_bibsonomy/reference_detail.html b/apis_bibsonomy/templates/apis_bibsonomy/reference_detail.html index 0d98d65..ca48d1c 100644 --- a/apis_bibsonomy/templates/apis_bibsonomy/reference_detail.html +++ b/apis_bibsonomy/templates/apis_bibsonomy/reference_detail.html @@ -9,7 +9,7 @@

{{ reference }}

bibtex -

{{ reference.bibtexjson }}

+

{{ reference.bibtex }}


diff --git a/apis_bibsonomy/views.py b/apis_bibsonomy/views.py index 1c9e6ed..cce77a3 100644 --- a/apis_bibsonomy/views.py +++ b/apis_bibsonomy/views.py @@ -81,9 +81,7 @@ def form_valid(self, form): ) args["object_id"] = self.request.resolver_match.kwargs["pk"] ref = Reference.objects.create(**args) - self.request.session["last_bibsonomy_reference_title"] = ref.bibtexjson.get( - "title" - ) + self.request.session["last_bibsonomy_reference_title"] = ref.bibtex.get("title") return super().form_valid(form)