def calculate_field( self, field_name ): from exemption_record import exemption_record if field_name == 'exemption_count': self['exemption_count'] = len(self['exemptions']) elif field_name == 'missing_volume_exemption_count': count = 0 for publication_id in self['exemptions']: r = exemption_record.get_record( publication_id=publication_id ) if (r['volume'] is None) or (r['volume'] == 0): count += 1 self['missing_volume_exemption_count'] = count elif field_name == 'exemption_volume': volume = 0 for publication_id in self['exemptions']: r = exemption_record.get_record( publication_id=publication_id ) volume += r['volume'] if r['volume'] is not None else 0 self['exemption_volume'] = volume elif field_name == 'exemption_offices': from exemption_record import exemption_record ret = {} for publication_id in self['exemptions']: r = exemption_record.get_record( publication_id=publication_id ) ret.setdefault( r['publisher'], [] ) ret[r['publisher']].append( r ) self['exemption_offices'] = ret elif field_name == 'exemption_offices_2014': from exemption_record import exemption_record ret = {} started_2014 = numerate_date( '1/1/2014' ) for publication_id in self['exemptions']: r = exemption_record.get_record( publication_id=publication_id ) if numerate_date(r['start_date']) < started_2014: continue ret.setdefault( r['publisher'], [] ) ret[r['publisher']].append( r ) self['exemption_offices_2014'] = ret else: raise KeyError( 'unknown field %s' % field_name )
def go_to_publication_id( self, publication_id ): self.publication_id = publication_id url = exemption_record.get_record( publication_id=publication_id )['url'] self.go_to_url( url )