Skip to content

Commit 0abe1d7

Browse files
Merge pull request #1394 from IFRCGo/feature/revision-for-frontend-requests
Feature/revision for frontend requests
2 parents 42a37b6 + 1d6dfd4 commit 0abe1d7

File tree

9 files changed

+99
-0
lines changed

9 files changed

+99
-0
lines changed

api/drf_views.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
from datetime import datetime
2+
from pytz import utc
13
from rest_framework.status import HTTP_201_CREATED, HTTP_200_OK
24
from rest_framework.generics import GenericAPIView, CreateAPIView, UpdateAPIView
35
from rest_framework.response import Response
@@ -821,6 +823,9 @@ def map_many_to_many_relations(self, data):
821823
if prop in data:
822824
del data[prop]
823825

826+
if 'start_date' in data:
827+
data['start_date'] = datetime.strptime(data['start_date'], '%Y-%m-%dT%H:%M:%S.%f%z')\
828+
.replace(tzinfo=utc)
824829
return data, locations, meta, partners
825830

826831
def save_locations(self, instance, locations, is_update=False):

api/models.py

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import reversion
12
from django.utils.translation import ugettext_lazy as _
23
# from django.db import models
34
from django.contrib.gis.db import models
@@ -132,6 +133,7 @@ class Labels:
132133
# update api_country set record_type=3 where name like '%egion%';
133134

134135

136+
@reversion.register()
135137
class Country(models.Model):
136138
""" A country """
137139

@@ -287,6 +289,7 @@ class Meta:
287289
def __str__(self):
288290
return f'{self.admin1} - {self.name}'
289291

292+
290293
class CountryGeoms(models.Model):
291294
""" Admin0 geometries """
292295
geom = models.MultiPolygonField(srid=4326, blank=True, null=True)
@@ -298,11 +301,13 @@ class DistrictGeoms(models.Model):
298301
geom = models.MultiPolygonField(srid=4326, blank=True, null=True)
299302
district = models.OneToOneField(District, verbose_name=_('district'), on_delete=models.DO_NOTHING, primary_key=True)
300303

304+
301305
class Admin2Geoms(models.Model):
302306
""" Admin2 geometries """
303307
geom = models.MultiPolygonField(srid=4326, blank=True, null=True)
304308
admin2 = models.OneToOneField(Admin2, verbose_name=_('admin2'), on_delete=models.DO_NOTHING, primary_key=True)
305309

310+
306311
class VisibilityChoices(IntEnum):
307312
MEMBERSHIP = 1
308313
IFRC = 2
@@ -333,6 +338,7 @@ class VisibilityCharChoices():
333338

334339
# Common parent class for key figures.
335340
# Country/region variants inherit from this.
341+
@reversion.register()
336342
class AdminKeyFigure(models.Model):
337343
figure = models.CharField(verbose_name=_('figure'), max_length=100)
338344
deck = models.CharField(verbose_name=_('deck'), max_length=50)
@@ -390,6 +396,7 @@ class Labels:
390396
TAB_3 = _('Tab 3')
391397

392398

399+
@reversion.register()
393400
class RegionSnippet(models.Model):
394401
region = models.ForeignKey(Region, verbose_name=_('region'), related_name='snippets', on_delete=models.CASCADE)
395402
snippet = HTMLField(verbose_name=_('snippet'), null=True, blank=True)
@@ -406,6 +413,7 @@ def __str__(self):
406413
return self.snippet
407414

408415

416+
@reversion.register()
409417
class RegionEmergencySnippet(models.Model):
410418
region = models.ForeignKey(Region, verbose_name=_('region'), related_name='emergency_snippets', on_delete=models.CASCADE)
411419
title = models.CharField(max_length=255, blank=True)
@@ -422,6 +430,7 @@ def __str__(self):
422430
return self.snippet
423431

424432

433+
@reversion.register()
425434
class RegionPreparednessSnippet(models.Model):
426435
region = models.ForeignKey(Region, verbose_name=_('region'), related_name='preparedness_snippets', on_delete=models.CASCADE)
427436
title = models.CharField(max_length=255, blank=True)
@@ -438,6 +447,7 @@ def __str__(self):
438447
return self.snippet
439448

440449

450+
@reversion.register()
441451
class RegionProfileSnippet(models.Model):
442452
region = models.ForeignKey(Region, verbose_name=_('region'), related_name='profile_snippets', on_delete=models.CASCADE)
443453
title = models.CharField(max_length=255, blank=True)
@@ -463,6 +473,7 @@ def __str__(self):
463473
# return self.title
464474

465475

476+
@reversion.register()
466477
class CountrySnippet(models.Model):
467478
country = models.ForeignKey(Country, verbose_name=_('country'), related_name='snippets', on_delete=models.CASCADE)
468479
snippet = HTMLField(verbose_name=_('snippet'), null=True, blank=True)
@@ -479,6 +490,7 @@ def __str__(self):
479490
return self.snippet
480491

481492

493+
@reversion.register()
482494
class AdminLink(models.Model):
483495
title = models.CharField(verbose_name=_('title'), max_length=100)
484496
url = models.URLField(verbose_name=_('url'), max_length=300)
@@ -505,6 +517,7 @@ class Meta:
505517
verbose_name_plural = _('country links')
506518

507519

520+
@reversion.register()
508521
class AdminContact(models.Model):
509522
ctype = models.CharField(verbose_name=_('type'), max_length=100, blank=True)
510523
name = models.CharField(verbose_name=_('name'), max_length=100)
@@ -546,6 +559,7 @@ class Labels:
546559
RED = _('Red')
547560

548561

562+
@reversion.register()
549563
class Event(models.Model):
550564
""" A disaster, which could cover multiple countries """
551565

@@ -681,6 +695,7 @@ def __str__(self):
681695
return self.name
682696

683697

698+
@reversion.register()
684699
class EventFeaturedDocument(models.Model):
685700
event = models.ForeignKey(
686701
Event,
@@ -700,6 +715,7 @@ class EventFeaturedDocument(models.Model):
700715
)
701716

702717

718+
@reversion.register()
703719
class EventLink(models.Model):
704720
"""
705721
Used in emergency overview.
@@ -716,6 +732,7 @@ class EventLink(models.Model):
716732
url = models.URLField(verbose_name=_('url'))
717733

718734

735+
@reversion.register()
719736
class EventContact(models.Model):
720737
""" Contact for event """
721738

@@ -734,6 +751,7 @@ def __str__(self):
734751
return '%s: %s' % (self.name, self.title)
735752

736753

754+
@reversion.register()
737755
class KeyFigure(models.Model):
738756
event = models.ForeignKey(Event, verbose_name=_('event'), related_name='key_figures', on_delete=models.CASCADE)
739757
number = models.CharField(verbose_name=_('number'), max_length=100, help_text=_('key figure metric'))
@@ -750,6 +768,7 @@ def snippet_image_path(instance, filename):
750768
return 'emergencies/%s/%s' % (instance.event.id, filename)
751769

752770

771+
@reversion.register()
753772
class Snippet(models.Model):
754773
""" Snippet of text """
755774
snippet = HTMLField(verbose_name=_('snippet'), null=True, blank=True)
@@ -788,6 +807,7 @@ def sitrep_document_path(instance, filename):
788807
return 'sitreps/%s/%s' % (instance.event.id, filename)
789808

790809

810+
@reversion.register()
791811
class SituationReport(models.Model):
792812
created_at = models.DateTimeField(verbose_name=_('created at'), auto_now_add=True)
793813
name = models.CharField(verbose_name=_('name'), max_length=100)
@@ -869,6 +889,7 @@ class Labels:
869889
ARCHIVED = _('Archived')
870890

871891

892+
@reversion.register()
872893
class Appeal(models.Model):
873894
""" An appeal for a disaster and country, containing documents """
874895

@@ -1025,6 +1046,7 @@ def __str__(self):
10251046
return self.aid
10261047

10271048

1049+
@reversion.register()
10281050
class AppealDocument(models.Model):
10291051
# Don't set `auto_now_add` so we can modify it on save
10301052
created_at = models.DateTimeField(verbose_name=_('created at'))
@@ -1048,6 +1070,7 @@ def __str__(self):
10481070
return '%s - %s' % (self.appeal, self.name)
10491071

10501072

1073+
@reversion.register()
10511074
class AppealFilter(models.Model):
10521075
name = models.CharField(verbose_name=_('name'), max_length=100)
10531076
value = models.CharField(verbose_name=_('value'), max_length=1000)
@@ -1109,6 +1132,7 @@ class Labels:
11091132
OTHER = _('OTHER')
11101133

11111134

1135+
@reversion.register()
11121136
class ExternalPartner(models.Model):
11131137
''' Dropdown items for COVID Field Reports '''
11141138

@@ -1177,6 +1201,7 @@ def __str__(self):
11771201
return self.user.get_username()
11781202

11791203

1204+
@reversion.register()
11801205
class FieldReport(models.Model):
11811206
""" A field report for a disaster and country, containing documents """
11821207

@@ -1412,6 +1437,7 @@ def __str__(self):
14121437
return '%s - %s' % (self.id, summary)
14131438

14141439

1440+
@reversion.register()
14151441
class FieldReportContact(models.Model):
14161442
""" Contact for field report """
14171443

@@ -1474,6 +1500,7 @@ class ActionCategory:
14741500
)
14751501

14761502

1503+
@reversion.register()
14771504
class Action(models.Model):
14781505
""" Action taken """
14791506
name = models.CharField(verbose_name=_('name'), max_length=400)
@@ -1499,6 +1526,7 @@ def __str__(self):
14991526
return self.name
15001527

15011528

1529+
@reversion.register()
15021530
class ActionsTaken(models.Model):
15031531
""" All the actions taken by an organization """
15041532

@@ -1532,6 +1560,7 @@ def __str__(self):
15321560
return self.name
15331561

15341562

1563+
@reversion.register()
15351564
class Source(models.Model):
15361565
""" Source of information """
15371566
stype = models.ForeignKey(SourceType, verbose_name=_('type'), on_delete=models.PROTECT)
@@ -1548,6 +1577,7 @@ def __str__(self):
15481577
return '%s: %s' % (self.stype.name, self.spec)
15491578

15501579

1580+
@reversion.register()
15511581
class Profile(models.Model):
15521582
""" Holds location and identifying information about users """
15531583
NTLS = 'NTLS'
@@ -1593,6 +1623,7 @@ def __str__(self):
15931623
return self.user.username
15941624

15951625

1626+
@reversion.register()
15961627
class EmergencyOperationsBase(models.Model):
15971628
"""Common fields used by EmergencyOperations* Tables"""
15981629
is_validated = models.BooleanField(
@@ -1901,6 +1932,7 @@ def __str__(self):
19011932
return self.raw_file_name
19021933

19031934

1935+
@reversion.register()
19041936
class MainContact(models.Model):
19051937
''' Contacts on the Resources page '''
19061938
extent = models.CharField(verbose_name=_('extent'), max_length=300)
@@ -1930,6 +1962,7 @@ class Labels:
19301962
ERRONEOUS = _('Erroneous')
19311963

19321964

1965+
@reversion.register()
19331966
class CronJob(models.Model):
19341967
""" CronJob log row about jobs results """
19351968
name = models.CharField(verbose_name=_('name'), max_length=100, default='')

0 commit comments

Comments
 (0)