Next / Previous / Contents / Shipman's homepage

21. class FlatSighting: Complete sighting record

For applications where the sighting record must stand alone, an instance of this class gathers data from the sighting's context, and can generate a delimited record suitable for importation into a spreadsheet.

birdnotes.py
# - - - - -   c l a s s   F l a t S i g h t i n g

class FlatSighting(object):
    '''Represents a Sighting with its context.

      Exports:
        FlatSighting(sighting):
          [ sighting is a Sighting instance ->
              return a new FlatSighting representing sighting
              and its context ]
        .txKey:
          [ taxonomic key number for the smallest taxon that
            contains the bird form for sighting ]
        .abbr:
          [ first or only bird code, stripped ]
        .rel:
          [ if this sighting is for a single form -> ""
            else -> relationship code as in BirdId.rel ]
        .abbr2:
          [ if this sighting is for a single form -> ""
            else -> second bird code, stripped ]
        .eng:
          [ English name as "Generic[, Specific]" ]
        .age:          [ age code or "" if unknown ]
        .sex:          [ sex code or "" if unknown ]
        .q:            [ questionable/uncountable flag or "" ]
        .count:        [ count field as in AgeSexGroup.count, or "" ]
        .date:         [ date as "YYYY-MM-DD" ]
        .regionCode:   [ region code as in DayNotes.regionCode ]
        .locName:      [ locality name string ]
        .observer:
          [ if seen by the primary observer -> ""
            else -> observer's name ]
        .delimited(delimiter='\t'):
          [ delimiter is a string ->
              return self as a string containing all the attributes
              above in the same order, with (delimiter) between
              each attribute value ]
    '''

21.1. FlatSighting.__init__(): Constructor

birdnotes.py
# - - -   F l a t S i g h t i n g . _ _ i n i t _ _

    def __init__(self, sighting):
        '''Flatten a Sighting instance. 
        '''
        birdForm = sighting.birdForm
        dayNotes = birdForm.dayNotes
        birdId = birdForm.birdId
        self.txKey = birdId.taxon.txKey
        self.abbr = birdId.abbr
        self.rel = birdId.rel or ''
        self.abbr2 = birdId.abbr2 or ''
        self.eng = birdId.engComma()
        ageSex = sighting.ageSexGroup
        if ageSex is None:
            self.age = ''
            self.sex = ''
            self.q = ''
            self.count = ''
            self.observer = ''
        else:
            self.age = ageSex.age or ''
            self.sex = ageSex.sex or ''
            self.q = ageSex.q or ''
            self.count = ageSex.count or ''
            self.observer = ageSex.fide or ''
        self.date = dayNotes.date
        self.regionCode = dayNotes.regionCode.upper()
        self.locName = self.sanitize(sighting.getLocGroup().loc.name)