Allow international formatted dates in CSV imports

This commit is contained in:
Andris Reinman 2017-02-02 16:47:50 +02:00
parent 1513c761bc
commit 9778c486e9
5 changed files with 27 additions and 15 deletions

View file

@ -514,18 +514,27 @@ module.exports.getRow = (fieldList, values, useDate, showAll, onlyExisting) => {
} else { } else {
value = (value || '').toString().trim(); value = (value || '').toString().trim();
let parts = value.match(/(\d+)\D+(\d+)(?:\D+(\d+))?/); // try international format first YYYY-MM-DD
if (!parts) { let parts = value.match(/(\d{4})\D+(\d{2})(?:\D+(\d{2})\b)?/);
value = null; if (parts) {
year = Number(parts[1]) || 2000;
month = Number(parts[2]) || 0;
day = Number(parts[3]) || 0;
value = new Date(Date.UTC(year, month - 1, day));
} else { } else {
day = Number(parts[isUs ? 2 : 1]) || 0; parts = value.match(/(\d+)\D+(\d+)(?:\D+(\d+)\b)?/);
month = Number(parts[isUs ? 1 : 2]) || 0; if (!parts) {
year = Number(parts[3]) || 2000;
if (!day || !month) {
value = null; value = null;
} else { } else {
value = new Date(Date.UTC(year, month - 1, day)); day = Number(parts[isUs ? 2 : 1]) || 0;
month = Number(parts[isUs ? 1 : 2]) || 0;
year = Number(parts[3]) || 2000;
if (!day || !month) {
value = null;
} else {
value = new Date(Date.UTC(year, month - 1, day));
}
} }
} }
} }

View file

@ -7,10 +7,12 @@ let tools = require('../lib/tools');
let feed = require('../lib/feed'); let feed = require('../lib/feed');
let campaigns = require('../lib/models/campaigns'); let campaigns = require('../lib/models/campaigns');
const feed_timeout = 15 * 1000;
const rss_timeout = 1 * 1000;
function feedLoop() { function feedLoop() {
db.getConnection((err, connection) => { db.getConnection((err, connection) => {
const feed_timeout = 15 * 1000;
if (err) { if (err) {
log.error('Feed', err.stack); log.error('Feed', err.stack);
return setTimeout(feedLoop, feed_timeout); return setTimeout(feedLoop, feed_timeout);
@ -32,7 +34,6 @@ function feedLoop() {
let parent = tools.convertKeys(rows[0]); let parent = tools.convertKeys(rows[0]);
updateRssInfo(parent.id, true, false, () => { updateRssInfo(parent.id, true, false, () => {
const rss_timeout = 1 * 1000;
log.verbose('Feed', 'Checking feed %s (%s)', parent.sourceUrl, parent.id); log.verbose('Feed', 'Checking feed %s (%s)', parent.sourceUrl, parent.id);
feed.fetch(parent.sourceUrl, (err, entries) => { feed.fetch(parent.sourceUrl, (err, entries) => {
if (err) { if (err) {

View file

@ -10,6 +10,8 @@ let subscriptions = require('../lib/models/subscriptions');
let fs = require('fs'); let fs = require('fs');
let csvparse = require('csv-parse'); let csvparse = require('csv-parse');
const process_timout = 5 * 1000;
function findUnprocessed(callback) { function findUnprocessed(callback) {
db.getConnection((err, connection) => { db.getConnection((err, connection) => {
if (err) { if (err) {
@ -221,7 +223,6 @@ function processImport(data, callback) {
let importLoop = () => { let importLoop = () => {
let getNext = () => { let getNext = () => {
const process_timout = 5 * 1000;
// find an unsent message // find an unsent message
findUnprocessed((err, data) => { findUnprocessed((err, data) => {
if (err) { if (err) {

View file

@ -20,6 +20,8 @@ let libmime = require('libmime');
let attachmentCache = new Map(); let attachmentCache = new Map();
let attachmentCacheSize = 0; let attachmentCacheSize = 0;
const mailing_timeout = 5 * 1000;
function findUnsent(callback) { function findUnsent(callback) {
let returnUnsent = (row, campaign) => { let returnUnsent = (row, campaign) => {
db.getConnection((err, connection) => { db.getConnection((err, connection) => {
@ -461,7 +463,6 @@ let sendLoop = () => {
} }
let getNext = () => { let getNext = () => {
const mailing_timeout = 5 * 1000;
if (!mailer.transport.isIdle()) { if (!mailer.transport.isIdle()) {
// only retrieve new messages if there are free slots in the mailer queue // only retrieve new messages if there are free slots in the mailer queue
return; return;

View file

@ -11,9 +11,10 @@
let moment = require('moment-timezone'); let moment = require('moment-timezone');
let db = require('../lib/db'); let db = require('../lib/db');
let log = require('npmlog'); let log = require('npmlog');
let lastCheck = false; let lastCheck = false;
const timezone_timeout = 60 * 60 * 1000;
function updateTimezoneOffsets(callback) { function updateTimezoneOffsets(callback) {
log.verbose('UTC', 'Updating timezone offsets'); log.verbose('UTC', 'Updating timezone offsets');
db.getConnection((err, connection) => { db.getConnection((err, connection) => {
@ -45,7 +46,6 @@ module.exports = callback => {
return callback(err); return callback(err);
} }
let checkLoop = () => { let checkLoop = () => {
const timezone_timeout = 60 * 60 * 1000;
let curUtcDate = new Date().toISOString().split('T').shift(); let curUtcDate = new Date().toISOString().split('T').shift();
if (curUtcDate !== lastCheck) { if (curUtcDate !== lastCheck) {
updateTimezoneOffsets(err => { updateTimezoneOffsets(err => {