Introduces a dedicated interface for exploring existing keywords, reviewing their usage, and identifying potential duplicates: a first step toward more structured vocabulary management, while keeping Django, MySQL, and django-taggit.
Name canonicalization and controlled merge management.
Macro-categories, parent/child hierarchies, and cycle prevention.
Aliases and translations, with optional language identification.
Integration of the canonical vocabulary with search, autocomplete, and review workflows.
Evaluation of standards for controlled vocabularies and knowledge organization, in particular:
Evaluation of potential links to external vocabularies and persistent identifiers.
These areas are proposals for discussion, not standards that have already been adopted or features included in this PR. The goal remains to develop a solution that is proportionate to the catalog’s needs and compatible with the existing stack.
https://github.com/GrandComicsDatabase/gcd-django/pull/768
(26 files)
—
Reply to this email directly, view it on GitHub, or unsubscribe.
Triage notifications, keep track of coding agent tasks and review pull requests on the go with GitHub Mobile for iOS and Android. Download it today!
You are receiving this because you are subscribed to this thread.![]()
@gemini-code-assist[bot] commented on this pull request.
This pull request introduces a read-only keyword management interface with duplicate detection, and significantly enhances the indexing data cache to support bulk copying, bulk removal, and drag-and-drop reordering of remembered stories and covers. It also optimizes series search queries to prevent dependent subqueries in MySQL, improves publication date rendering to tolerate missing issue pointers, and updates localization files. The reviewer suggests extracting the similar parsing and validation logic for cached object choices in copy_cached_sequences into a reusable helper function to reduce code duplication and improve maintainability.
In apps/oi/views.py:
> + for choice in choices:
+ try:
+ choice_kind, object_id = choice.split('_')
+ object_id = int(object_id)
+ except ValueError:
+ return HttpResponseBadRequest('Invalid cached object.')
+ if choice_kind != kind or object_id <= 0:
+ return HttpResponseBadRequest('Invalid selection category.')
+ selected.add(object_id)
+ cached_ids = get_ordered_cached_ids(request, 'cached_%s' % (
+ 'stories' if kind == 'story' else 'covers'))
+ if not selected.issubset(set(cached_ids)):
+ return HttpResponseBadRequest('A selected object is no longer cached.')
+ story_ids = [pk for pk in cached_ids if pk in selected] if kind == 'story' else []
+ covers = set(selected) if kind == 'cover' else set()
+ for choice in cover_choices:
+ if not choice:
+ continue
+ try:
+ category, pk = choice.split('_')
+ pk = int(pk)
+ except ValueError:
+ return HttpResponseBadRequest('Invalid cover selection.')
+ if category != 'cover' or pk <= 0:
+ return HttpResponseBadRequest('Invalid cover selection.')
+ covers.add(pk)
The logic for parsing and validating the choices and cover_choices from the POST data is quite similar. To improve maintainability and reduce code duplication, you could extract this parsing and validation logic into a helper function. This function could accept a list of choice strings and an expected object 'kind', then return a validated set of integer IDs, raising an exception for any invalid input. This would make the view cleaner and the validation logic more reusable.
—
Reply to this email directly, view it on GitHub, or unsubscribe.
Triage notifications, keep track of coding agent tasks and review pull requests on the go with GitHub Mobile for iOS and Android. Download it today!
You are receiving this because you are subscribed to this thread.![]()
@ProfNardi pushed 1 commit.
—
View it on GitHub or unsubscribe.
Triage notifications, keep track of coding agent tasks and review pull requests on the go with GitHub Mobile for iOS and Android. Download it today!
You are receiving this because you are subscribed to this thread.![]()
Just a quick note: the database import script
./bin/dev setup --dump ~/Downloads/current.zip
doesn't import the taggit_tag and taggit_taggeditem tables, which remain empty.
—
Reply to this email directly, view it on GitHub, or unsubscribe.
Triage notifications, keep track of coding agent tasks and review pull requests on the go with GitHub Mobile for iOS and Android. Download it today!
You are receiving this because you are subscribed to this thread.![]()
@ProfNardi pushed 1 commit.
—
View it on GitHub or unsubscribe.
Triage notifications, keep track of coding agent tasks and review pull requests on the go with GitHub Mobile for iOS and Android. Download it today!
You are receiving this because you are subscribed to this thread.![]()
@ProfNardi pushed 1 commit.
—
View it on GitHub or unsubscribe.
Triage notifications, keep track of coding agent tasks and review pull requests on the go with GitHub Mobile for iOS and Android. Download it today!
You are receiving this because you are subscribed to this thread.![]()
@ProfNardi pushed 1 commit.
—
View it on GitHub or unsubscribe.
Triage notifications, keep track of coding agent tasks and review pull requests on the go with GitHub Mobile for iOS and Android. Download it today!
You are receiving this because you are subscribed to this thread.![]()
@ProfNardi pushed 1 commit.
—
View it on GitHub or unsubscribe.
Triage notifications, keep track of coding agent tasks and review pull requests on the go with GitHub Mobile for iOS and Android. Download it today!
You are receiving this because you are subscribed to this thread.![]()