ebird-api-data 0.3.4__tar.gz → 0.3.6__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (32) hide show
  1. {ebird_api_data-0.3.4 → ebird_api_data-0.3.6}/PKG-INFO +1 -1
  2. {ebird_api_data-0.3.4 → ebird_api_data-0.3.6}/pyproject.toml +2 -2
  3. ebird_api_data-0.3.6/src/ebird/api/data/__init__.py +1 -0
  4. {ebird_api_data-0.3.4 → ebird_api_data-0.3.6}/src/ebird/api/data/admin.py +1 -1
  5. {ebird_api_data-0.3.4 → ebird_api_data-0.3.6}/src/ebird/api/data/loaders.py +1 -1
  6. {ebird_api_data-0.3.4 → ebird_api_data-0.3.6}/src/ebird/api/data/locale/en/LC_MESSAGES/django.po +201 -136
  7. {ebird_api_data-0.3.4 → ebird_api_data-0.3.6}/src/ebird/api/data/models/checklist.py +11 -20
  8. ebird_api_data-0.3.4/src/ebird/api/data/__init__.py +0 -1
  9. {ebird_api_data-0.3.4 → ebird_api_data-0.3.6}/.gitignore +0 -0
  10. {ebird_api_data-0.3.4 → ebird_api_data-0.3.6}/LICENSE +0 -0
  11. {ebird_api_data-0.3.4 → ebird_api_data-0.3.6}/README.md +0 -0
  12. {ebird_api_data-0.3.4 → ebird_api_data-0.3.6}/src/ebird/api/data/apps.py +0 -0
  13. {ebird_api_data-0.3.4 → ebird_api_data-0.3.6}/src/ebird/api/data/fields.py +0 -0
  14. {ebird_api_data-0.3.4 → ebird_api_data-0.3.6}/src/ebird/api/data/locale/en/LC_MESSAGES/django.mo +0 -0
  15. {ebird_api_data-0.3.4 → ebird_api_data-0.3.6}/src/ebird/api/data/management/__init__.py +0 -0
  16. {ebird_api_data-0.3.4 → ebird_api_data-0.3.6}/src/ebird/api/data/management/commands/__init__.py +0 -0
  17. {ebird_api_data-0.3.4 → ebird_api_data-0.3.6}/src/ebird/api/data/management/commands/add_checklists.py +0 -0
  18. {ebird_api_data-0.3.4 → ebird_api_data-0.3.6}/src/ebird/api/data/migrations/0001_initial.py +0 -0
  19. {ebird_api_data-0.3.4 → ebird_api_data-0.3.6}/src/ebird/api/data/migrations/__init__.py +0 -0
  20. {ebird_api_data-0.3.4 → ebird_api_data-0.3.6}/src/ebird/api/data/models/__init__.py +0 -0
  21. {ebird_api_data-0.3.4 → ebird_api_data-0.3.6}/src/ebird/api/data/models/country.py +0 -0
  22. {ebird_api_data-0.3.4 → ebird_api_data-0.3.6}/src/ebird/api/data/models/county.py +0 -0
  23. {ebird_api_data-0.3.4 → ebird_api_data-0.3.6}/src/ebird/api/data/models/filter.py +0 -0
  24. {ebird_api_data-0.3.4 → ebird_api_data-0.3.6}/src/ebird/api/data/models/location.py +0 -0
  25. {ebird_api_data-0.3.4 → ebird_api_data-0.3.6}/src/ebird/api/data/models/observation.py +0 -0
  26. {ebird_api_data-0.3.4 → ebird_api_data-0.3.6}/src/ebird/api/data/models/observer.py +0 -0
  27. {ebird_api_data-0.3.4 → ebird_api_data-0.3.6}/src/ebird/api/data/models/species.py +0 -0
  28. {ebird_api_data-0.3.4 → ebird_api_data-0.3.6}/src/ebird/api/data/models/state.py +0 -0
  29. {ebird_api_data-0.3.4 → ebird_api_data-0.3.6}/src/ebird/api/data/templates/admin/data/species/change_list_object_tools.html +0 -0
  30. {ebird_api_data-0.3.4 → ebird_api_data-0.3.6}/src/ebird/api/data/templates/admin/data/species/fetch_species.html +0 -0
  31. {ebird_api_data-0.3.4 → ebird_api_data-0.3.6}/src/ebird/api/data/templates/data/widgets/translation_field.html +0 -0
  32. {ebird_api_data-0.3.4 → ebird_api_data-0.3.6}/src/ebird/api/data/widgets.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ebird-api-data
3
- Version: 0.3.4
3
+ Version: 0.3.6
4
4
  Summary: eBird API Data is a reusable Django app for loading data from eBird into a database.
5
5
  Author-email: Stuart MacKay <smackay@flagstonesoftware.com>
6
6
  License-Expression: MIT
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "ebird-api-data"
3
- version = "0.3.4"
3
+ version = "0.3.6"
4
4
  description = "eBird API Data is a reusable Django app for loading data from eBird into a database."
5
5
  keywords = ["checklists", "observations", "species", "Django", "eBird", "models"]
6
6
  license = "MIT"
@@ -65,7 +65,7 @@ dev-dependencies = [
65
65
  ]
66
66
 
67
67
  [tool.bumpversion]
68
- current_version = "0.3.4"
68
+ current_version = "0.3.6"
69
69
  parse = "(?P<major>\\d+)\\.(?P<minor>\\d+)\\.(?P<patch>\\d+)"
70
70
  serialize = ["{major}.{minor}.{patch}"]
71
71
  ignore_missing_version = false
@@ -0,0 +1 @@
1
+ __version__ = "0.3.6"
@@ -49,7 +49,7 @@ class ProtocolListFilter(admin.SimpleListFilter):
49
49
  parameter_name = "protocol_code"
50
50
 
51
51
  def lookups(self, request, model_admin):
52
- return Checklist.Protocol.choices
52
+ return [(key, value) for key, value in Checklist.Protocol.NAMES.items()]
53
53
 
54
54
  def queryset(self, request, queryset):
55
55
  if value := self.value():
@@ -396,7 +396,7 @@ class APILoader:
396
396
  if area := data.get("effortAreaHa"):
397
397
  values["area"] = round(Decimal(area), 3)
398
398
 
399
- if data["protocolId"] not in Checklist.Protocol.values:
399
+ if data["protocolId"] not in Checklist.Protocol.NAMES.keys():
400
400
  logger.info("New protocol: %s", data["protocolId"])
401
401
 
402
402
  if "comments" in data:
@@ -8,7 +8,7 @@ msgid ""
8
8
  msgstr ""
9
9
  "Project-Id-Version: PACKAGE VERSION\n"
10
10
  "Report-Msgid-Bugs-To: \n"
11
- "POT-Creation-Date: 2025-07-10 14:08+0000\n"
11
+ "POT-Creation-Date: 2025-07-26 08:37+0000\n"
12
12
  "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
13
13
  "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
14
14
  "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -17,6 +17,7 @@ msgstr ""
17
17
  "Content-Type: text/plain; charset=UTF-8\n"
18
18
  "Content-Transfer-Encoding: 8bit\n"
19
19
  "Plural-Forms: nplurals=2; plural=(n != 1);\n"
20
+
20
21
  #: admin.py:26
21
22
  msgid "Observation"
22
23
  msgstr ""
@@ -29,216 +30,268 @@ msgstr ""
29
30
  msgid "Scientific name"
30
31
  msgstr ""
31
32
 
32
- #: admin.py:157 admin.py:280
33
- msgid "Name / Byname"
33
+ #: admin.py:48
34
+ msgid "protocol"
34
35
  msgstr ""
35
36
 
36
- #: admin.py:248 models/species.py:16
37
+ #: admin.py:256 models/species.py:15
37
38
  msgid "Species"
38
39
  msgstr ""
39
40
 
40
- #: admin.py:297
41
+ #: admin.py:301
41
42
  msgid "The eBird code for the species, e.g. cangoo, for Canada Goose."
42
43
  msgstr ""
43
44
 
44
- #: apps.py:8 models/checklist.py:168 models/location.py:143
45
- #: models/observation.py:167 models/observer.py:38 models/species.py:86
45
+ #: apps.py:8 models/checklist.py:197 models/location.py:144
46
+ #: models/observation.py:168 models/observer.py:40 models/species.py:90
46
47
  msgid "Data"
47
48
  msgstr ""
48
49
 
49
- #: models/checklist.py:7 models/observation.py:41
50
+ #: models/checklist.py:19
51
+ msgid "Incidental"
52
+ msgstr ""
53
+
54
+ #: models/checklist.py:20
55
+ msgid "Stationary"
56
+ msgstr ""
57
+
58
+ #: models/checklist.py:21
59
+ msgid "Traveling"
60
+ msgstr ""
61
+
62
+ #: models/checklist.py:22
63
+ msgid "Area"
64
+ msgstr ""
65
+
66
+ #: models/checklist.py:23
67
+ msgid "Banding"
68
+ msgstr ""
69
+
70
+ #: models/checklist.py:24
71
+ msgid "Nocturnal Flight Call Count"
72
+ msgstr ""
73
+
74
+ #: models/checklist.py:25
75
+ msgid "Pelagic"
76
+ msgstr ""
77
+
78
+ #: models/checklist.py:26
79
+ msgid "Historical"
80
+ msgstr ""
81
+
82
+ #: models/checklist.py:27
83
+ msgid "Common Bird Survey"
84
+ msgstr ""
85
+
86
+ #: models/checklist.py:28
87
+ msgid "Stationary (directional)"
88
+ msgstr ""
89
+
90
+ #: models/checklist.py:32 models/observation.py:42
50
91
  msgid "checklist"
51
92
  msgstr ""
52
93
 
53
- #: models/checklist.py:8
94
+ #: models/checklist.py:33
54
95
  msgid "checklists"
55
96
  msgstr ""
56
97
 
57
- #: models/checklist.py:13
98
+ #: models/checklist.py:38
58
99
  msgid "The date and time the checklist was added to eBird."
59
100
  msgstr ""
60
101
 
61
- #: models/checklist.py:14
62
- msgid "created"
102
+ #: models/checklist.py:39
103
+ msgid "added"
63
104
  msgstr ""
64
105
 
65
- #: models/checklist.py:20 models/observation.py:22
106
+ #: models/checklist.py:45 models/observation.py:22
66
107
  msgid "The date and time the eBird checklist was last edited."
67
108
  msgstr ""
68
109
 
69
- #: models/checklist.py:21 models/observation.py:23
110
+ #: models/checklist.py:46 models/observation.py:23
70
111
  msgid "edited"
71
112
  msgstr ""
72
113
 
73
- #: models/checklist.py:25
114
+ #: models/checklist.py:50
74
115
  msgid "Is the checklist published?"
75
116
  msgstr ""
76
117
 
77
- #: models/checklist.py:26 models/observation.py:28
118
+ #: models/checklist.py:51 models/observation.py:28
78
119
  msgid "published"
79
120
  msgstr ""
80
121
 
81
- #: models/checklist.py:31 models/location.py:69 models/observation.py:33
82
- #: models/observer.py:11
122
+ #: models/checklist.py:57 models/location.py:70 models/observation.py:34
123
+ #: models/observer.py:13
83
124
  msgid "identifier"
84
125
  msgstr ""
85
126
 
86
- #: models/checklist.py:32
127
+ #: models/checklist.py:58
87
128
  msgid "The unique identifier for the checklist."
88
129
  msgstr ""
89
130
 
90
- #: models/checklist.py:39 models/country.py:7 models/location.py:87
91
- #: models/observation.py:65
131
+ #: models/checklist.py:65 models/country.py:7 models/location.py:88
132
+ #: models/observation.py:66
92
133
  msgid "country"
93
134
  msgstr ""
94
135
 
95
- #: models/checklist.py:40
136
+ #: models/checklist.py:66
96
137
  msgid "The country where the checklist was made."
97
138
  msgstr ""
98
139
 
99
- #: models/checklist.py:47 models/location.py:95 models/observation.py:73
140
+ #: models/checklist.py:73 models/location.py:96 models/observation.py:74
100
141
  #: models/state.py:7
101
142
  msgid "state"
102
143
  msgstr ""
103
144
 
104
- #: models/checklist.py:48
145
+ #: models/checklist.py:74
105
146
  msgid "The state where the checklist was made."
106
147
  msgstr ""
107
148
 
108
- #: models/checklist.py:57 models/county.py:7 models/location.py:105
109
- #: models/observation.py:83
149
+ #: models/checklist.py:83 models/county.py:7 models/location.py:106
150
+ #: models/observation.py:84
110
151
  msgid "county"
111
152
  msgstr ""
112
153
 
113
- #: models/checklist.py:58
154
+ #: models/checklist.py:84
114
155
  msgid "The county where the checklist was made."
115
156
  msgstr ""
116
157
 
117
- #: models/checklist.py:65 models/filter.py:39 models/location.py:64
118
- #: models/observation.py:91
158
+ #: models/checklist.py:91 models/filter.py:39 models/location.py:64
159
+ #: models/observation.py:92
119
160
  msgid "location"
120
161
  msgstr ""
121
162
 
122
- #: models/checklist.py:66
163
+ #: models/checklist.py:92
123
164
  msgid "The location where checklist was made."
124
165
  msgstr ""
125
166
 
126
- #: models/checklist.py:73 models/observation.py:57 models/observer.py:7
167
+ #: models/checklist.py:99 models/observation.py:58 models/observer.py:7
127
168
  msgid "observer"
128
169
  msgstr ""
129
170
 
130
- #: models/checklist.py:74
171
+ #: models/checklist.py:100
131
172
  msgid "The person who submitted the checklist."
132
173
  msgstr ""
133
174
 
134
- #: models/checklist.py:80
175
+ #: models/checklist.py:106
135
176
  msgid "observer count"
136
177
  msgstr ""
137
178
 
138
- #: models/checklist.py:81
179
+ #: models/checklist.py:107
139
180
  msgid "The total number of observers."
140
181
  msgstr ""
141
182
 
142
- #: models/checklist.py:87
183
+ #: models/checklist.py:113
143
184
  msgid "species count"
144
185
  msgstr ""
145
186
 
146
- #: models/checklist.py:88
187
+ #: models/checklist.py:114
147
188
  msgid "The number of species reported."
148
189
  msgstr ""
149
190
 
150
- #: models/checklist.py:93 models/observation.py:97
191
+ #: models/checklist.py:119 models/observation.py:98
151
192
  msgid "date"
152
193
  msgstr ""
153
194
 
154
- #: models/checklist.py:94
195
+ #: models/checklist.py:120
155
196
  msgid "The date the checklist was started."
156
197
  msgstr ""
157
198
 
158
- #: models/checklist.py:100 models/observation.py:104
199
+ #: models/checklist.py:126 models/observation.py:105
159
200
  msgid "time"
160
201
  msgstr ""
161
202
 
162
- #: models/checklist.py:101
203
+ #: models/checklist.py:127
163
204
  msgid "The time the checklist was started."
164
205
  msgstr ""
165
206
 
166
- #: models/checklist.py:108 models/observation.py:112
207
+ #: models/checklist.py:134 models/observation.py:113
167
208
  msgid "date & time"
168
209
  msgstr ""
169
210
 
170
- #: models/checklist.py:109
211
+ #: models/checklist.py:135
171
212
  msgid "The date and time the checklist was started."
172
213
  msgstr ""
173
214
 
174
- #: models/checklist.py:114
215
+ #: models/checklist.py:140
175
216
  msgid "protocol code"
176
217
  msgstr ""
177
218
 
178
- #: models/checklist.py:115
219
+ #: models/checklist.py:141
179
220
  msgid "The code used to identify the protocol."
180
221
  msgstr ""
181
222
 
182
- #: models/checklist.py:120
223
+ #: models/checklist.py:149
183
224
  msgid "project code"
184
225
  msgstr ""
185
226
 
186
- #: models/checklist.py:121
227
+ #: models/checklist.py:150
187
228
  msgid "The code used to identify the project (portal)."
188
229
  msgstr ""
189
230
 
190
- #: models/checklist.py:127
231
+ #: models/checklist.py:156
191
232
  msgid "duration"
192
233
  msgstr ""
193
234
 
194
- #: models/checklist.py:128
235
+ #: models/checklist.py:157
195
236
  msgid "The number of minutes spent counting."
196
237
  msgstr ""
197
238
 
198
- #: models/checklist.py:136
239
+ #: models/checklist.py:165
199
240
  msgid "distance"
200
241
  msgstr ""
201
242
 
202
- #: models/checklist.py:137
203
- msgid "The distance, in metres, covered while travelling."
243
+ #: models/checklist.py:166
244
+ msgid "The distance, in kilometres, covered while travelling."
204
245
  msgstr ""
205
246
 
206
- #: models/checklist.py:145
247
+ #: models/checklist.py:174
207
248
  msgid "area"
208
249
  msgstr ""
209
250
 
210
- #: models/checklist.py:146
251
+ #: models/checklist.py:175
211
252
  msgid "The area covered, in hectares."
212
253
  msgstr ""
213
254
 
214
- #: models/checklist.py:151
255
+ #: models/checklist.py:180
215
256
  msgid "complete"
216
257
  msgstr ""
217
258
 
218
- #: models/checklist.py:152
259
+ #: models/checklist.py:181
219
260
  msgid "All species seen are reported."
220
261
  msgstr ""
221
262
 
222
- #: models/checklist.py:157 models/observation.py:156
263
+ #: models/checklist.py:186 models/observation.py:157
223
264
  msgid "comments"
224
265
  msgstr ""
225
266
 
226
- #: models/checklist.py:158
267
+ #: models/checklist.py:187
227
268
  msgid "Any comments about the checklist."
228
269
  msgstr ""
229
270
 
230
- #: models/checklist.py:163 models/location.py:131
271
+ #: models/checklist.py:192 models/location.py:132
231
272
  msgid "url"
232
273
  msgstr ""
233
274
 
234
- #: models/checklist.py:164
275
+ #: models/checklist.py:193
235
276
  msgid "URL where the original checklist can be viewed."
236
277
  msgstr ""
237
278
 
238
- #: models/checklist.py:169
279
+ #: models/checklist.py:198
239
280
  msgid "Data describing a Checklist."
240
281
  msgstr ""
241
282
 
283
+ #: models/checklist.py:204 models/country.py:26 models/county.py:26
284
+ #: models/filter.py:52 models/location.py:151 models/observation.py:175
285
+ #: models/observer.py:47 models/species.py:97 models/state.py:26
286
+ msgid "When was the record created."
287
+ msgstr ""
288
+
289
+ #: models/checklist.py:208 models/country.py:30 models/county.py:30
290
+ #: models/filter.py:56 models/location.py:155 models/observation.py:179
291
+ #: models/observer.py:51 models/species.py:101 models/state.py:30
292
+ msgid "When was the record updated."
293
+ msgstr ""
294
+
242
295
  #: models/country.py:8
243
296
  msgid "countries"
244
297
  msgstr ""
@@ -252,7 +305,7 @@ msgid "The code used to identify the country."
252
305
  msgstr ""
253
306
 
254
307
  #: models/country.py:18 models/county.py:18 models/filter.py:22
255
- #: models/location.py:79 models/observer.py:16 models/state.py:18
308
+ #: models/location.py:80 models/observer.py:18 models/state.py:18
256
309
  msgid "name"
257
310
  msgstr ""
258
311
 
@@ -304,8 +357,8 @@ msgstr ""
304
357
  msgid "The name of the filter."
305
358
  msgstr ""
306
359
 
307
- #: models/filter.py:29 models/observation.py:49 models/species.py:22
308
- #: models/species.py:23
360
+ #: models/filter.py:29 models/observation.py:50 models/species.py:25
361
+ #: models/species.py:26
309
362
  msgid "species"
310
363
  msgstr ""
311
364
 
@@ -329,63 +382,63 @@ msgstr ""
329
382
  msgid "locations"
330
383
  msgstr ""
331
384
 
332
- #: models/location.py:70
385
+ #: models/location.py:71
333
386
  msgid "The unique identifier for the location."
334
387
  msgstr ""
335
388
 
336
- #: models/location.py:74 models/observer.py:21
389
+ #: models/location.py:75 models/observer.py:23
337
390
  msgid "original name"
338
391
  msgstr ""
339
392
 
340
- #: models/location.py:75
393
+ #: models/location.py:76
341
394
  msgid "The original name of the location from eBird."
342
395
  msgstr ""
343
396
 
344
- #: models/location.py:80
397
+ #: models/location.py:81
345
398
  msgid "The display name of the location."
346
399
  msgstr ""
347
400
 
348
- #: models/location.py:88
401
+ #: models/location.py:89
349
402
  msgid "The country for the location."
350
403
  msgstr ""
351
404
 
352
- #: models/location.py:96
405
+ #: models/location.py:97
353
406
  msgid "The state for the location."
354
407
  msgstr ""
355
408
 
356
- #: models/location.py:106
409
+ #: models/location.py:107
357
410
  msgid "The county for the location."
358
411
  msgstr ""
359
412
 
360
- #: models/location.py:114
413
+ #: models/location.py:115
361
414
  msgid "latitude"
362
415
  msgstr ""
363
416
 
364
- #: models/location.py:115
417
+ #: models/location.py:116
365
418
  msgid "The decimal latitude of the location, relative to the equator."
366
419
  msgstr ""
367
420
 
368
- #: models/location.py:123
421
+ #: models/location.py:124
369
422
  msgid "longitude"
370
423
  msgstr ""
371
424
 
372
- #: models/location.py:125
425
+ #: models/location.py:126
373
426
  msgid "The decimal longitude of the location, relative to the prime meridian."
374
427
  msgstr ""
375
428
 
376
- #: models/location.py:132
429
+ #: models/location.py:133
377
430
  msgid "URL of the location page on eBird."
378
431
  msgstr ""
379
432
 
380
- #: models/location.py:138
433
+ #: models/location.py:139
381
434
  msgid "is hotspot"
382
435
  msgstr ""
383
436
 
384
- #: models/location.py:139
437
+ #: models/location.py:140
385
438
  msgid "Is the location a hotspot."
386
439
  msgstr ""
387
440
 
388
- #: models/location.py:144
441
+ #: models/location.py:145
389
442
  msgid "Data describing a Location."
390
443
  msgstr ""
391
444
 
@@ -401,111 +454,111 @@ msgstr ""
401
454
  msgid "Is the observation published?"
402
455
  msgstr ""
403
456
 
404
- #: models/observation.py:34
457
+ #: models/observation.py:35
405
458
  msgid "A global unique identifier for the observation."
406
459
  msgstr ""
407
460
 
408
- #: models/observation.py:42
461
+ #: models/observation.py:43
409
462
  msgid "The checklist this observation belongs to."
410
463
  msgstr ""
411
464
 
412
- #: models/observation.py:50
465
+ #: models/observation.py:51
413
466
  msgid "The identified species."
414
467
  msgstr ""
415
468
 
416
- #: models/observation.py:58
469
+ #: models/observation.py:59
417
470
  msgid "The person who made the observation."
418
471
  msgstr ""
419
472
 
420
- #: models/observation.py:66
473
+ #: models/observation.py:67
421
474
  msgid "The country where the observation was made."
422
475
  msgstr ""
423
476
 
424
- #: models/observation.py:74
477
+ #: models/observation.py:75
425
478
  msgid "The state where the observation was made."
426
479
  msgstr ""
427
480
 
428
- #: models/observation.py:84
481
+ #: models/observation.py:85
429
482
  msgid "The county where the observation was made."
430
483
  msgstr ""
431
484
 
432
- #: models/observation.py:92
485
+ #: models/observation.py:93
433
486
  msgid "The location where the observation was made."
434
487
  msgstr ""
435
488
 
436
- #: models/observation.py:98
489
+ #: models/observation.py:99
437
490
  msgid "The date the observation was made."
438
491
  msgstr ""
439
492
 
440
- #: models/observation.py:105
493
+ #: models/observation.py:106
441
494
  msgid "The time the observation was made."
442
495
  msgstr ""
443
496
 
444
- #: models/observation.py:113
497
+ #: models/observation.py:114
445
498
  msgid "The date and time the observation was made."
446
499
  msgstr ""
447
500
 
448
- #: models/observation.py:118
501
+ #: models/observation.py:119
449
502
  msgid "count"
450
503
  msgstr ""
451
504
 
452
- #: models/observation.py:119
505
+ #: models/observation.py:120
453
506
  msgid "The number of birds seen."
454
507
  msgstr ""
455
508
 
456
- #: models/observation.py:124
509
+ #: models/observation.py:125
457
510
  msgid "has audio"
458
511
  msgstr ""
459
512
 
460
- #: models/observation.py:125
513
+ #: models/observation.py:126
461
514
  msgid "Have audio recordings been uploaded to the Macaulay library."
462
515
  msgstr ""
463
516
 
464
- #: models/observation.py:130
517
+ #: models/observation.py:131
465
518
  msgid "has photos"
466
519
  msgstr ""
467
520
 
468
- #: models/observation.py:131
521
+ #: models/observation.py:132
469
522
  msgid "Have photos been uploaded to the Macaulay library."
470
523
  msgstr ""
471
524
 
472
- #: models/observation.py:136
525
+ #: models/observation.py:137
473
526
  msgid "has video"
474
527
  msgstr ""
475
528
 
476
- #: models/observation.py:137
529
+ #: models/observation.py:138
477
530
  msgid "Have video recordings been uploaded to the Macaulay library."
478
531
  msgstr ""
479
532
 
480
- #: models/observation.py:142
533
+ #: models/observation.py:143
481
534
  msgid "Approved"
482
535
  msgstr ""
483
536
 
484
- #: models/observation.py:143
537
+ #: models/observation.py:144
485
538
  msgid "Has the observation been accepted."
486
539
  msgstr ""
487
540
 
488
- #: models/observation.py:148
541
+ #: models/observation.py:149
489
542
  msgid "Reason"
490
543
  msgstr ""
491
544
 
492
- #: models/observation.py:150
545
+ #: models/observation.py:151
493
546
  msgid "The reason given for the observation to be marked as not approved."
494
547
  msgstr ""
495
548
 
496
- #: models/observation.py:157
549
+ #: models/observation.py:158
497
550
  msgid "Any comments about the observation."
498
551
  msgstr ""
499
552
 
500
- #: models/observation.py:162
553
+ #: models/observation.py:163
501
554
  msgid "URN"
502
555
  msgstr ""
503
556
 
504
- #: models/observation.py:163
557
+ #: models/observation.py:164
505
558
  msgid "The globally unique identifier for the observation."
506
559
  msgstr ""
507
560
 
508
- #: models/observation.py:168
561
+ #: models/observation.py:169
509
562
  msgid "Data describing an Observation."
510
563
  msgstr ""
511
564
 
@@ -513,40 +566,40 @@ msgstr ""
513
566
  msgid "observers"
514
567
  msgstr ""
515
568
 
516
- #: models/observer.py:12
569
+ #: models/observer.py:14
517
570
  msgid "The code for the person submitted the checklist."
518
571
  msgstr ""
519
572
 
520
- #: models/observer.py:17
573
+ #: models/observer.py:19
521
574
  msgid "The display name of the observer."
522
575
  msgstr ""
523
576
 
524
- #: models/observer.py:22
577
+ #: models/observer.py:24
525
578
  msgid "The original name of the observer from eBird."
526
579
  msgstr ""
527
580
 
528
- #: models/observer.py:27
581
+ #: models/observer.py:29
529
582
  msgid "Multiple accounts"
530
583
  msgstr ""
531
584
 
532
- #: models/observer.py:28
585
+ #: models/observer.py:30
533
586
  msgid "Is the name used by more than one eBird account."
534
587
  msgstr ""
535
588
 
536
- #: models/observer.py:33
589
+ #: models/observer.py:35
537
590
  msgid "Enabled"
538
591
  msgstr ""
539
592
 
540
- #: models/observer.py:34
593
+ #: models/observer.py:36
541
594
  msgid "Load checklists from the eBird observer."
542
595
  msgstr ""
543
596
 
544
- #: models/observer.py:39
597
+ #: models/observer.py:41
545
598
  msgid "Data describing an Observer."
546
599
  msgstr ""
547
600
 
548
- #: models/species.py:15
549
- msgid "All categories"
601
+ #: models/species.py:16
602
+ msgid "Species pairs"
550
603
  msgstr ""
551
604
 
552
605
  #: models/species.py:17
@@ -554,87 +607,99 @@ msgid "Subspecies"
554
607
  msgstr ""
555
608
 
556
609
  #: models/species.py:18
557
- msgid "Domestic"
610
+ msgid "Domestic species"
558
611
  msgstr ""
559
612
 
560
613
  #: models/species.py:19
561
- msgid "Hybrid"
614
+ msgid "Hybrids"
615
+ msgstr ""
616
+
617
+ #: models/species.py:20
618
+ msgid "Species forms"
562
619
  msgstr ""
563
620
 
564
- #: models/species.py:28
621
+ #: models/species.py:21
622
+ msgid "Unidentified species"
623
+ msgstr ""
624
+
625
+ #: models/species.py:22
626
+ msgid "Intergrades"
627
+ msgstr ""
628
+
629
+ #: models/species.py:31
565
630
  msgid "taxonomy order"
566
631
  msgstr ""
567
632
 
568
- #: models/species.py:29
633
+ #: models/species.py:32
569
634
  msgid "The position in the eBird/Clements taxonomic order."
570
635
  msgstr ""
571
636
 
572
- #: models/species.py:34
637
+ #: models/species.py:37
573
638
  msgid "order"
574
639
  msgstr ""
575
640
 
576
- #: models/species.py:36
641
+ #: models/species.py:39
577
642
  msgid "The order, e.g. Struthioniformes, from the eBird/Clements taxonomy."
578
643
  msgstr ""
579
644
 
580
- #: models/species.py:43
645
+ #: models/species.py:46
581
646
  msgid "category"
582
647
  msgstr ""
583
648
 
584
- #: models/species.py:44
649
+ #: models/species.py:47
585
650
  msgid "The category from the eBird/Clements taxonomy."
586
651
  msgstr ""
587
652
 
588
- #: models/species.py:49
653
+ #: models/species.py:53
589
654
  msgid "species code"
590
655
  msgstr ""
591
656
 
592
- #: models/species.py:50
657
+ #: models/species.py:54
593
658
  msgid "The species code, e.g. ostric2, used in the eBird API."
594
659
  msgstr ""
595
660
 
596
- #: models/species.py:55
661
+ #: models/species.py:59
597
662
  msgid "family code"
598
663
  msgstr ""
599
664
 
600
- #: models/species.py:56
665
+ #: models/species.py:60
601
666
  msgid "The family code, e.g. struth1, used in the eBird API."
602
667
  msgstr ""
603
668
 
604
- #: models/species.py:60
669
+ #: models/species.py:64
605
670
  msgid "common name"
606
671
  msgstr ""
607
672
 
608
- #: models/species.py:61
673
+ #: models/species.py:65
609
674
  msgid "The species common name in the eBird/Clements taxonomy."
610
675
  msgstr ""
611
676
 
612
- #: models/species.py:65
677
+ #: models/species.py:69
613
678
  msgid "scientific name"
614
679
  msgstr ""
615
680
 
616
- #: models/species.py:66
681
+ #: models/species.py:70
617
682
  msgid "The species scientific name in the eBird/Clements taxonomy."
618
683
  msgstr ""
619
684
 
620
- #: models/species.py:71
685
+ #: models/species.py:75
621
686
  msgid "family common name"
622
687
  msgstr ""
623
688
 
624
- #: models/species.py:73
689
+ #: models/species.py:77
625
690
  msgid "The common name for the species family in the eBird/Clements taxonomy."
626
691
  msgstr ""
627
692
 
628
- #: models/species.py:79
693
+ #: models/species.py:83
629
694
  msgid "family scientific name"
630
695
  msgstr ""
631
696
 
632
- #: models/species.py:81
697
+ #: models/species.py:85
633
698
  msgid ""
634
699
  "The scientific name for the species family in the eBird/Clements taxonomy."
635
700
  msgstr ""
636
701
 
637
- #: models/species.py:87
702
+ #: models/species.py:91
638
703
  msgid "Data describing a Species."
639
704
  msgstr ""
640
705
 
@@ -1,20 +1,19 @@
1
+ from enum import StrEnum
2
+
1
3
  from django.db import models
2
4
  from django.utils.translation import gettext_lazy as _
3
5
 
4
6
 
5
7
  class Checklist(models.Model):
6
- class Protocol(models.TextChoices):
7
- INCIDENTAL = "P20", _("Incidental")
8
- STATIONARY = "P21", _("Stationary")
9
- TRAVELLING = "P22", _("Travelling")
10
- AREA = "P23", _("Area")
11
- BANDING = "P33", _("Banding")
12
- NOCTURNAL = "P54", _("Nocturnal Flight Call Count")
13
- PELAGIC = "P60", _("Pelagic")
14
- HISTORICAL = "P62", _("Historical")
15
- BREEDING_BIRD_ATLAS = "P65", _("Breeding Bird Atlas")
16
- COMMON_BIRD_SURVEY = "P67", _("Common Bird Survey")
17
- RAM = "P68", _("RAM--Iberian Seawatch Network")
8
+ class Protocol(StrEnum):
9
+ INCIDENTAL = "P20"
10
+ STATIONARY = "P21"
11
+ TRAVELING = "P22"
12
+ AREA = "P23"
13
+ BANDING = "P33"
14
+ NOCTURNAL = "P54"
15
+ PELAGIC = "P60"
16
+ HISTORICAL = "P62"
18
17
 
19
18
  class Meta:
20
19
  verbose_name = _("checklist")
@@ -129,9 +128,6 @@ class Checklist(models.Model):
129
128
  help_text=_("The code used to identify the protocol."),
130
129
  )
131
130
 
132
- # Protocol is not used to set the choices, as we still want to load
133
- # the checklist when a protocol not defined in the class is used.
134
-
135
131
  project_code = models.TextField(
136
132
  blank=True,
137
133
  verbose_name=_("project code"),
@@ -201,8 +197,3 @@ class Checklist(models.Model):
201
197
 
202
198
  def __str__(self) -> str:
203
199
  return str(self.identifier)
204
-
205
- def get_protocol(self):
206
- if self.protocol_code:
207
- return self.Protocol(self.protocol_code).label if self.protocol_code else ""
208
- return ""
@@ -1 +0,0 @@
1
- __version__ = "0.3.4"
File without changes
File without changes