def test_hydrate(self): # note = Note.objects.get(pk=1) bundle_1 = Bundle(data={ 'datetime': '2010-05-12 10:36:28', }) field_1 = DateTimeField(attribute='created') field_1.instance_name = 'datetime' self.assertEqual(field_1.hydrate(bundle_1), aware_datetime(2010, 5, 12, 10, 36, 28)) bundle_2 = Bundle() field_2 = DateTimeField(default=aware_datetime(2010, 4, 1, 2, 0)) field_2.instance_name = 'datetime' self.assertEqual(field_2.hydrate(bundle_2), aware_datetime(2010, 4, 1, 2, 0)) bundle_3 = Bundle(data={ 'datetime': 'Tue, 30 Mar 2010 20:05:00 -0500', }) field_3 = DateTimeField(attribute='created_string') field_3.instance_name = 'datetime' self.assertEqual(field_3.hydrate(bundle_3), aware_datetime(2010, 3, 30, 20, 5, tzinfo=tzoffset(None, -18000))) bundle_4 = Bundle(data={ 'datetime': None, }) field_4 = DateField(attribute='created', null=True) field_4.instance_name = 'datetime' self.assertEqual(field_4.hydrate(bundle_4), None)
class ExportJobResource(ModelResource): query = ToOneField('dds.api.QueryResource', attribute='query') requested = DateTimeField('requested', readonly=True, default=now) begin = DateTimeField('begin', readonly=True, null=True, blank=True) end = DateTimeField('end', readonly=True, null=True, blank=True) download_link = CharField('get_indirect_link', readonly=True, blank=True) filename = CharField('export_filename', readonly=True, blank=True, null=True) class Meta: queryset = ExportJob.objects.all() authentication = SessionAuthentication() authorization = OwnedOnlyAuthorization() def apply_authorization_limits(self, request, object_list): return object_list.filter(query__account=request.user.account) def obj_create(self, bundle, **kwargs): result = super(ExportJobResource, self).obj_create(bundle, **kwargs) if result.obj.query.account != bundle.request.user.account: raise Unauthorized("Can't attach to a query that is not yours") return result def obj_get_list(self, bundle, **kwargs): return [ f for f in super(ExportJobResource, self).obj_get_list( bundle, **kwargs) if f.query.account == bundle.request.user.account ] def obj_get(self, bundle, **kwargs): result = super(ExportJobResource, self).obj_get(bundle, **kwargs) if result.query.account != bundle.request.user.account: raise Unauthorized("Forbidden") return result
def test_dehydrate(self): note = Note.objects.get(pk=1) bundle = Bundle(obj=note) field_1 = DateTimeField(attribute='created') self.assertEqual(field_1.dehydrate(bundle), aware_datetime(2010, 3, 30, 20, 5)) field_2 = DateTimeField(default=aware_datetime(2010, 4, 1, 1, 7)) self.assertEqual(field_2.dehydrate(bundle), aware_datetime(2010, 4, 1, 1, 7)) note.created_string = '2010-04-02 01:11:00' field_3 = DateTimeField(attribute='created_string') self.assertEqual(field_3.dehydrate(bundle), aware_datetime(2010, 4, 2, 1, 11))
class MeetingResource(ModelResource): type = ToOneField(MeetingTypeNameResource, 'type') agenda = ToOneField('ietf.meeting.resources.ScheduleResource', 'agenda', null=True) updated = DateTimeField(attribute='updated') class Meta: cache = SimpleCache() queryset = Meeting.objects.all() serializer = api.Serializer() #resource_name = 'meeting' filtering = { "id": ALL, "number": ALL, "date": ALL, "city": ALL, "country": ALL, "time_zone": ALL, "idsubmit_cutoff_day_offset_00": ALL, "idsubmit_cutoff_day_offset_01": ALL, "idsubmit_cutoff_time_utc": ALL, "idsubmit_cutoff_warning_days": ALL, "submission_start_day_offset": ALL, "submmission_cutoff_day_offset": ALL, "submission_correction_day_offset": ALL, "venue_name": ALL, "venue_addr": ALL, "break_area": ALL, "reg_area": ALL, "agenda_note": ALL, "session_request_lock_message": ALL, "type": ALL_WITH_RELATIONS, "agenda": ALL_WITH_RELATIONS, "proceedings_final": ALL, }
class TimestampResourceMixin(ModelResource): created = DateTimeField(attribute='created', readonly=True) updated = DateTimeField(attribute='updated', readonly=True)