Esempio n. 1
0
def excel_date_and_time_string(value):
    """Return a datetime as short date and AM/PM time with an extra space. 
    Ex: '3/1/19 6:33 AM'
    
    Excel does not seem to be able to recognize as a datetime without the space 
    before AM/PM
    """
    format='%-m/%-d/%y %-I:%M %p'
    return date_to_string(value,format)
Esempio n. 2
0
def abbr_date_string(value):
    """Mon. Mar. 4, 2019"""
    format='%a. %b. %-d, %Y'
        
    if type(value) is str:
        # convert the string to a date first then back.
        value = getDatetimeFromString(value)
        
    #No period after May
    if value.month == 5:
        format='%a. %b %-d, %Y'
        
    return date_to_string(value,format)
Esempio n. 3
0
def local_time_string(value):
    """6:00AM"""
    return date_to_string(value,'local_time')
Esempio n. 4
0
def iso_date_string(value):
    """YYYY-MM-DD"""
    format = '%Y-%m-%d'
    return date_to_string(value,format)
Esempio n. 5
0
def short_abbr_date_string(value):
    """Mar. 4"""
    format='%b. %-d'
    return date_to_string(value,format)
Esempio n. 6
0
def long_date_string(value):
    """March 3, 2019"""
    format='%B %-d, %Y'
    return date_to_string(value,format)
Esempio n. 7
0
def short_day_and_date_and_time_string(value):
    """Mon. 3/4/19 6:00PM"""
    format='%a. %-m/%-d/%y %-I:%M%p'
    return date_to_string(value,format)
Esempio n. 8
0
def short_day_and_date_string(value):
    """Mon. 3/4/19"""
    format='%a. %-m/%-d/%y'
    return date_to_string(value,format)
Esempio n. 9
0
def local_date_and_time_string(value):
    """Return a datetime as short date and AM/PM time. Ex: '3/1/19 6:33AM'"""
    format='%-m/%-d/%y %-I:%M%p'
    return date_to_string(value,format)
Esempio n. 10
0
def local_date_string(value):
    """3/1/19"""
    format='%-m/%-d/%y'
    return date_to_string(value,format)
Esempio n. 11
0
def short_date_string(value):
    """mm/dd/yy"""
    format='%m/%d/%y'
    return date_to_string(value,format)
Esempio n. 12
0
def test_date_to_string():
    assert len(dates.date_to_string(dates.local_datetime_now(),
                                    "%Y-%m-%d")) == 10
    assert len(dates.date_to_string("11/15/18", "%Y-%m-%d")) == 10
Esempio n. 13
0
    def export(self, **kwargs):
        """Export the current record selection as .csv file"""

        # import pdb;pdb.set_trace()

        # provide for case where recs are set extenally
        if not self.recs:
            self.select_recs(**kwargs)
        if self.recs:
            if self.export_file_name:
                filename = self.export_file_name
            else:
                filename = "{table_name}_report_{datetime}.csv".format(
                    table_name=self.table.display_name,
                    datetime=date_to_string(local_datetime_now(),
                                            'iso_datetime'),
                ).replace(' ', '_').lower()

            if not self.export_fields:
                # include all fields by default
                self.export_fields = self._set_default_list_fields(
                    include_all=True).copy()

            self.set_list_fields(self.export_fields)

            if self.export_template:
                result = render_template(self.export_template, data=self)
            else:
                # add a descriptive title row
                if self.export_title:
                    result = self.export_title.strip() + '\n'
                else:
                    result = "Export of table {} as of {}\n".format(
                        self.table.table_name,
                        excel_date_and_time_string(local_datetime_now()))

                result += ','.join([x['label']
                                    for x in self.export_fields]) + '\n'
                for rec in self.recs:
                    rec_row = []
                    for field in self.export_fields:
                        data = rec.__getattribute__(field['name'])
                        if field['type'].upper() == "DATE":
                            data = local_date_string(data)
                        elif field['type'].upper() == "DATETIME":
                            data = excel_date_and_time_string(data)
                        else:
                            # just text
                            data = str(data).strip()

                            # replace double quotes with double-double quotes
                            data = data.replace(
                                '"', '""')  #double up on double quotes

                            if "," in data:
                                # if any commas, wrap in quotes
                                data = '"' + data + '"'

                            #replace returns
                            data = data.replace('\r\n', ' -crnl- ')
                            data = data.replace('\n', ' -nl- ')
                            data = data.replace('\r', ' -rtn- ')

                        rec_row.append(data)

                    result += ','.join([str(x) for x in rec_row]) + '\n'

            return DataStreamer(result, filename, 'text/csv').send()

        self.result_text = "No records selected"
        self.success = False

        flash(self.result_text)
        return self.list(**kwargs)