Skip to content

Commit

Permalink
feat(models): change field type from TextField to JSONField
Browse files Browse the repository at this point in the history
  • Loading branch information
b1rger committed Sep 23, 2024
1 parent b2e69ba commit c8af143
Show file tree
Hide file tree
Showing 5 changed files with 22 additions and 13 deletions.
2 changes: 1 addition & 1 deletion apis_bibsonomy/forms.py
Original file line number Diff line number Diff line change
Expand Up @@ -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(
Expand Down
17 changes: 17 additions & 0 deletions apis_bibsonomy/migrations/0004_alter_reference_bibtex.py
Original file line number Diff line number Diff line change
@@ -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),
),
]
10 changes: 2 additions & 8 deletions apis_bibsonomy/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,16 +5,14 @@
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"""

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)
Expand All @@ -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})

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ <h1>{{ reference }}</h1>
</div>
<details>
<summary>bibtex</summary>
<p>{{ reference.bibtexjson }}</p>
<p>{{ reference.bibtex }}</p>
</details>

<hr/>
Expand Down
4 changes: 1 addition & 3 deletions apis_bibsonomy/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -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)


Expand Down

0 comments on commit c8af143

Please sign in to comment.