|
4 | 4 |
|
5 | 5 | ### Added |
6 | 6 |
|
7 | | -- **RSS/Atom feed harvesting support** (`publications/tasks.py`) |
8 | | - - `parse_rss_feed_and_save_publications()` function for parsing RSS/Atom feeds |
9 | | - - `harvest_rss_endpoint()` function for complete RSS harvesting workflow |
10 | | - - Support for RDF-based RSS feeds (Scientific Data journal) |
11 | | - - DOI extraction from multiple feed fields (prism:doi, dc:identifier) |
12 | | - - Duplicate detection by DOI and URL |
13 | | - - Abstract/description extraction from feed content |
14 | | -- feedparser library integration (v6.0.12) |
15 | | - - Added to requirements.txt for RSS/Atom feed parsing |
16 | | - - Supports RSS 1.0/2.0, Atom, and RDF feeds |
17 | | -- Django management command `harvest_journals` enhanced for RSS/Atom feeds |
18 | | - - Added Scientific Data journal with RSS feed support |
19 | | - - Support for both OAI-PMH and RSS/Atom feed types |
20 | | - - Automatic feed type detection based on journal configuration |
21 | | - - Now supports 4 journals: ESSD, AGILE-GISS, GEO-LEO (OAI-PMH), Scientific Data (RSS) |
22 | | -- Comprehensive RSS harvesting tests (`RSSFeedHarvestingTests`) |
23 | | - - 7 test cases covering RSS parsing, duplicate detection, error handling |
24 | | - - Test fixture with sample RDF/RSS feed (`tests/harvesting/rss_feed_sample.xml`) |
25 | | - - Tests for max_records limit, invalid feeds, and HTTP errors |
26 | | -- Django management command `harvest_journals` for harvesting real journal sources |
27 | | - - Command-line options for journal selection, record limits, and source creation |
28 | | - - Detailed progress reporting with colored output |
29 | | - - Statistics for spatial/temporal metadata extraction |
30 | | -- Integration tests for real journal harvesting (`tests/test_real_harvesting.py`) |
31 | | - - 6 tests covering ESSD, AGILE-GISS, GEO-LEO, and EssOAr |
32 | | - - Tests skipped by default (use `SKIP_REAL_HARVESTING=0` to enable) |
33 | | - - Max records parameter to limit harvesting for testing |
34 | | -- Comprehensive error handling tests for OAI-PMH harvesting (`HarvestingErrorTests`) |
35 | | - - 10 test cases covering malformed XML, missing metadata, HTTP errors, network timeouts |
36 | | - - Test fixtures for various error conditions in `tests/harvesting/error_cases/` |
37 | | - - Verification of graceful error handling and logging |
38 | | -- pytest configuration with custom markers (`pytest.ini`) |
39 | | - - `real_harvesting` marker for integration tests |
40 | | - - Configuration for Django test discovery |
| 7 | +- **Temporal extent contribution** - Users can now contribute temporal extent (start/end dates) in addition to spatial extent. Works can be published with either spatial, temporal, or both extents. Supports flexible date formats: YYYY, YYYY-MM, YYYY-MM-DD. |
| 8 | +- **Complete status workflow documentation** - Documented all 6 publication statuses (Draft, Harvested, Contributed, Published, Testing, Withdrawn) with workflow transitions and visibility rules in README.md. |
| 9 | +- **Map popup enhancement** - Added "View Publication Details" button to map popups linking to work landing pages. |
| 10 | +- **Admin unpublish functionality** - Admins can unpublish works, changing status from Published to Draft. |
| 11 | +- **RSS/Atom feed harvesting support** - Added support for harvesting publications from RSS/Atom feeds in addition to OAI-PMH. |
| 12 | +- **Django management command `harvest_journals`** - Command-line tool for harvesting from real journal sources with progress reporting and statistics. |
| 13 | +- **Comprehensive test coverage** - Added 40+ new tests covering temporal contribution, status workflow, RSS harvesting, error handling, and real journal harvesting. |
41 | 14 |
|
42 | 15 | ### Changed |
43 | 16 |
|
44 | | -- Fixed OAI-PMH harvesting test failures by updating response format parameters |
45 | | - - Changed from invalid 'structured'/'raw' to valid 'geojson'/'wkt'/'wkb' formats |
46 | | - - Updated test assertions to expect GeoJSON FeatureCollection |
47 | | -- Fixed syntax errors in `publications/tasks.py` |
48 | | - - Fixed import statement typo |
49 | | - - Fixed indentation in `extract_timeperiod_from_html` function |
50 | | - - Fixed misplaced return statement in `regenerate_geopackage_cache` function |
51 | | -- Fixed test setup method in `tests/test_harvesting.py` |
52 | | - - Removed incorrect `@classmethod` decorator from `setUp` method |
53 | | -- Fixed `test_regular_harvesting.py` to include `max_records` parameter in mock function |
54 | | -- Updated README.md with comprehensive documentation for: |
55 | | - - Integration test execution |
56 | | - - `harvest_journals` management command usage |
57 | | - - Journal harvesting workflows |
| 17 | +- **Unified contribution workflow** - Single "Submit contribution" button for both spatial and temporal extent. Users can submit either or both in one action. |
| 18 | +- **Unified admin control panel** - Consolidated admin status display, publish/unpublish buttons, and "Edit in Admin" link into single highlighted box at top of work landing page. |
| 19 | +- **Improved text wrapping** - Page titles and abstract text now properly wrap on narrow windows instead of overflowing. |
| 20 | +- **Unified URL structure** - Changed ID-based URLs from `/publication/<id>/` to `/work/<id>/` for consistency with DOI-based URLs. |
| 21 | +- **Refactored views_geometry.py** - Eliminated code duplication by making DOI-based functions wrap ID-based functions. Reduced from 375 to 240 lines (~36% reduction). |
| 22 | +- **Renamed "Locate" to "Contribute"** - URL, page title, and navigation updated for clarity about crowdsourcing purpose. |
| 23 | +- **Contribute page layout refactored** - Fixed text overflow issues with proper CSS containment strategy. |
| 24 | +- **Flexible publishing requirements** - Harvested publications with geometry can be published directly without requiring user contribution. |
| 25 | +- **Contribute page login button improved** - Changed to informational disabled button with clear text: "Please log in to contribute (user menu at top right)". |
58 | 26 |
|
59 | 27 | ### Fixed |
60 | 28 |
|
61 | | -- Docker build for geoextent installation (added git dependency to Dockerfile) |
62 | | -- 18 geoextent API test failures due to invalid response format values |
63 | | -- 8 test setup errors in OAI-PMH harvesting tests |
64 | | -- Test harvesting function signature mismatch |
65 | | - |
66 | | -### Deprecated |
67 | | - |
68 | | -- None. |
69 | | - |
70 | | -### Removed |
71 | | - |
72 | | -- None. |
73 | | - |
74 | | -### Security |
75 | | - |
76 | | -- None. |
77 | | - |
78 | | -## [0.2.0] - 2025-10-09 |
79 | | - |
80 | | -### Added |
81 | | - |
82 | | -- Work landing page improvements: |
83 | | - - Clickable DOI links to https://doi.org resolver |
84 | | - - Clickable source links to journal homepages |
85 | | - - Link to raw JSON API response |
86 | | - - Publication title and DOI in HTML `<title>` tag |
87 | | -- Map enhancements on work landing page: |
88 | | - - Fullscreen control using Leaflet Fullscreen plugin |
89 | | - - Custom "Zoom to All Features" button |
90 | | - - Scroll wheel zoom enabled |
91 | | -- Comprehensive test suite for work landing page (9 tests) |
92 | | -- Comprehensive test suite for geoextent API (24 tests) |
93 | | - |
94 | | -### Changed |
95 | | - |
96 | | -- None. |
97 | | - |
98 | | -### Fixed |
99 | | - |
100 | | -- None. |
101 | | - |
102 | | -### Deprecated |
103 | | - |
104 | | -- None. |
105 | | - |
106 | | -### Removed |
107 | | - |
108 | | -- None. |
109 | | - |
110 | | -### Security |
111 | | - |
112 | | -- External links (DOI, source, API) now use `target="_blank"` with `rel="noopener"` for security |
113 | | - |
114 | | -## [0.1.0] - 2025-04-16 |
115 | | - |
116 | | -### Added |
117 | | - |
118 | | -- Changelog |
119 | | - |
120 | | -### Changed |
121 | | - |
122 | | -- None. |
123 | | - |
124 | | -### Fixed |
125 | | - |
126 | | -- None. |
127 | | - |
128 | | -### Deprecated |
129 | | - |
130 | | -- None. |
131 | | - |
132 | | -### Removed |
133 | | - |
134 | | -- None. |
135 | | - |
136 | | -### Security |
137 | | - |
138 | | -- None. |
| 29 | +- **JavaScript scope error** - Fixed "drawnItems is not defined" error in contribution form by declaring variable in outer scope. |
0 commit comments