Example #1
0
def schedule_testing_send(request):
    """ Create a testing campaign which schedules sms to be sent to the selected user in the other sheet """
    try:
        data = json.loads(request.body)
        english = data.get('english', '_')
        arabic = data.get('arabic', '_')
        row = ['Immediately', 'testing', '_', '', '_', '_', english, arabic]
        append_to_sheet(row)
        return jsonResponse({"success": True})

    except Exception, e:
        return basic_error(e)
Example #2
0
def form_post(request):
    """ Form submission api """
    try:
        data = json.loads(request.body)
        # Do processing here
        if data.get('segmented', False):
            row = ['No Send', 'external', '_', '', '1', '1', '_', '_']
            data.pop('campaign_config', {})
        else:
            campaign = data['campaign_config']
            repeat = campaign.get('repeat', 'Once')
            start_date = datetime.fromtimestamp(campaign['start_date'] / 1000).strftime("%m/%d/%Y")
            if 'end_date' in campaign:
                end_date = datetime.fromtimestamp(campaign['end_date'] / 1000).strftime("%m/%d/%Y")
            else:
                end_date = ''

            time = datetime.fromtimestamp(campaign['time'] / 1000)
            hour = time.hour
            minute = time.minute

            english = campaign['text']['english']
            arabic = campaign['text']['arabic']

            if len(english.strip()) == 0:
                english = '_'
            if len(arabic.strip()) == 0:
                arabic = '_'

            row = [repeat, 'external', start_date, end_date, hour, minute, english, arabic]

        data['name'] = data.get('name', 'Untitled')  # Add name and description
        data['description'] = data.get('description', '')
        data['job'] = {'status': [{'status': 'Pending', 'time': datetime.now()}]}  # Add the job subdocument, will be used later
        debug = data.pop('debug', False)

        data['timestamp'] = datetime.now()
        result = db.jobs.insert_one(data)  # >> Insertion here
        row.append(str(result.inserted_id))

        if debug:
            # db.jobs.remove({"_id": result.inserted_id})
            return jsonResponse({'success': True, 'data_received': data, 'row created': row})
        else:
            append_to_sheet(row)
            return jsonResponse({'success': True})

    except Exception, e:
        return basic_error(e)
def post_segment_form(request):
    try:
        data = json.loads(request.body)
        total = data['total']
        segments = data['segments']
        ref_job = data['ref_job']
        t_id = data['t_id']
        if db.jobs.count({"_id": ObjectId(ref_job)}) == 0:
            return basic_failure

        # Step 1: Setup limits
        slen = len(segments)
        sub_size = int(total) // slen

        limits = [
            [sub_size*i, sub_size*(i+1)] for i in range(0, slen)
            ]
        limits[-1][1] = total

        # Step 2, create db jobs for each segment
        result = []
        sheet_rows = []
        timestamp = datetime.now()
        for i, segment in enumerate(segments):
            date = segment['date']
            res = db.segment_jobs.insert_one({
                "ref_job": ObjectId(ref_job),
                "timestamp": timestamp,
                "segment_number": i+1,
                "limits": {
                    "lower": limits[i][0],
                    "upper": limits[i][1]
                },
                "text": {
                    "english": segment['english'],
                    "arabic": segment['arabic']
                },
                "date": date,
                "job": {
                    "status": "pending"
                }
            })
            oid_col = str(res.inserted_id) + ("_segment,%i,%i,%i" % (t_id, limits[i][0], limits[i][1]))     # Added _segment
            result.append(oid_col)

            # Creating the row
            date = datetime.fromtimestamp(date / 1000)
            start_date = date.strftime("%m/%d/%Y")
            hour = date.hour
            minute = date.minute

            row = ['Once', 'segment', start_date, '', hour, minute, segment['english'], segment['arabic'], oid_col]
            sheet_rows.append(row)

        if data.get('debug', False):
            return jsonResponse({"success": True, "result": sheet_rows})
        else:
            for row in sheet_rows:
                append_to_sheet(row)
            return basic_success
    except Exception, e:
        return basic_error(e)
Example #4
0
def post_segment_form(request):
    try:
        data = json.loads(request.body)
        total = data['total']
        segments = data['segments']
        ref_job = data['ref_job']
        t_id = data['t_id']
        if db.jobs.count({"_id": ObjectId(ref_job)}) == 0:
            return basic_failure

        # Step 1: Setup limits
        slen = len(segments)
        sub_size = int(total) // slen

        limits = [[sub_size * i, sub_size * (i + 1)] for i in range(0, slen)]
        limits[-1][1] = total

        # Step 2, create db jobs for each segment
        result = []
        sheet_rows = []
        timestamp = datetime.now()
        for i, segment in enumerate(segments):
            date = segment['date']
            res = db.segment_jobs.insert_one({
                "ref_job": ObjectId(ref_job),
                "timestamp": timestamp,
                "segment_number": i + 1,
                "limits": {
                    "lower": limits[i][0],
                    "upper": limits[i][1]
                },
                "text": {
                    "english": segment['english'],
                    "arabic": segment['arabic']
                },
                "date": date,
                "job": {
                    "status": "pending"
                }
            })
            oid_col = str(res.inserted_id) + (
                "_segment,%i,%i,%i" %
                (t_id, limits[i][0], limits[i][1]))  # Added _segment
            result.append(oid_col)

            # Creating the row
            date = datetime.fromtimestamp(date / 1000)
            start_date = date.strftime("%m/%d/%Y")
            hour = date.hour
            minute = date.minute

            row = [
                'Once', 'segment', start_date, '', hour, minute,
                segment['english'], segment['arabic'], oid_col
            ]
            sheet_rows.append(row)

        if data.get('debug', False):
            return jsonResponse({"success": True, "result": sheet_rows})
        else:
            for row in sheet_rows:
                append_to_sheet(row)
            return basic_success
    except Exception, e:
        return basic_error(e)