示例#1
0
    def post(self):
        # prepare the csv file for reading
        upload_files = self.get_uploads('csv_file')
        blob_info = upload_files[0]
        blob_reader = blobstore.BlobReader(blob_info.key())
        reader = csv.reader(blob_reader, delimiter=',')

        # set up the csv file for download
        self.response.headers['Content-Type'] = 'text/csv'
        self.response.headers['Content-Disposition'] = 'attachment; filename=shorterned_urls.csv'
        writer = csv.writer(self.response.out)
        writer.writerow(['Original Url', 'Short Url'])

        # maximum link to convert is 500,000
        if len(list(reader)) > MAX_URLS_TO_CONVERT:
            raise ValueError("The maximum number of links to be converted is 500,000")
            # A better way to handle this would be with flash messages or alerts, etc

        # convert links, save to DB and download CSV
        for row in reader:
            if len(row) > 1:
                raise ValueError("Input must have a single url per line")
                # better checks can be implemented
            original_url = row[0]
            shortened_url = '{}/{}'.format(
                self.request.application_url,
                Link.shorten_url(original_url))

            writer.writerow([original_url, shortened_url])
示例#2
0
    def post(self):
        original_url = self.request.get('original_url')
        shortened_url = Link.shorten_url(original_url)

        self.render(
            'links/add_link.html',
            original_url=original_url,
            shortened_url=shortened_url,
            url=self.request.application_url)