def set_tags():
    posted_data = request.get_json()
    q = posted_data.pop('q', None)
    print('############posted_data###########', posted_data)
    id = posted_data.pop("id", None)
    user_id = session['user']['id']
    posted_data['tagged_by'] = user_id

    if posted_data['tags'] and (posted_data['is_dang']
                                or posted_data['is_xray']
                                or posted_data['is_dirty']):
        posted_data['done'] = True

    next_name = {}
    if 'category' in posted_data:
        next_name['category'] = posted_data.pop("category")
    if 'vendor' in posted_data:
        vendor = posted_data.pop("vendor")
        if vendor != 'All':
            next_name['vendor'] = vendor
    if 'price' in posted_data:
        next_name['price'] = ast.literal_eval(posted_data.pop('price'))

    undo = posted_data.pop("undo", None)
    if undo:
        next_name.clear()
        next_name['_id'] = ObjectId(id)

    elif posted_data.pop("is_skipped"):
        inc_skip_count(id)

    else:
        print('####id####data to be saved -- tagged -- ####', id, posted_data)
        db.products.update({'_id': ObjectId(id)}, {"$set": posted_data})
        inc_tag_count(user_id)

    #fetching next product tagging info
    tagging_info = get_product_tagging_details(next_name)

    if undo:
        db.products.update({'_id': ObjectId(id)}, {
            "$unset": {
                'is_dang': '',
                'is_dirty': '',
                'is_xray': '',
                'tags': '',
                'tagged_by': '',
                'epoch': '',
                'done': ''
            }
        })
        dcr_tag_count(user_id)

    tag_count, verify_count = get_tag_count(user_id)
    tagging_info['tag_count'] = tag_count
    tagging_info['verify_count'] = verify_count
    return json.dumps(tagging_info)
def set_verified_tags():
    posted_data = request.get_json()
    q = posted_data.pop('q', None)
    print('############posted_data###########', posted_data)
    id = posted_data.pop("id", None)
    user_id = session['user']['id']
    posted_data['verified_by'] = user_id
    posted_data['verified'] = True

    next_name = {}
    if 'category' in posted_data:
        next_name['category'] = posted_data.pop("category")
    if 'vendor' in posted_data:
        vendor = posted_data.pop("vendor")
        if vendor != 'All':
            next_name['vendor'] = vendor
    if 'price' in posted_data:
        next_name['price'] = ast.literal_eval(posted_data.pop('price'))

    undo = posted_data.pop("undo", None)
    if undo:
        print('i wanto see last product please........................................')
        next_name.clear()
        next_name['_id'] = ObjectId(id)
        
    elif posted_data.pop("is_skipped"):
        admin_skip_keys = ['verified_by', 'verified', 'admin_tags']
        admin_skip_data = dict(map(lambda key: (key, posted_data.get(key, None)), admin_skip_keys))
        admin_skip_data['dirty_by_admin'] = True
        db.products.update({'_id': ObjectId(id)}, {"$set": admin_skip_data})
    
    else:
        print('####id####data to be saved -- verified --####', id, posted_data)
        db.products.update({'_id': ObjectId(id)}, {"$set": posted_data})
        inc_tag_count(user_id, True)

    #fetching next product tagging info
    if q == 'verify':
        tagging_info = get_product_tagging_details(next_name, True)
    elif q == '3-skips':
        tagging_info = get_product_tagging_details(next_name, False, True)

    if undo:
        db.products.update({'_id': ObjectId(id)},{"$unset":{'admin_tags':'','verified_by':'','verified':'','dirty_by_admin':''}})
        dcr_tag_count(user_id, True)

    tag_count, verify_count = get_tag_count(user_id)
    tagging_info['tag_count'] = tag_count
    tagging_info['verify_count'] = verify_count
    print('----------------------------------------------',tagging_info)
    return json.dumps(tagging_info)
def set_tags():
    posted_data = request.get_json()
    q = posted_data.pop('q', None)
    print('############posted_data###########', posted_data)
    id = posted_data.pop("id", None)
    user_id = session['user']['id']
    posted_data['tagged_by'] = user_id

    if posted_data['tags'] and (posted_data['is_dang'] or posted_data['is_xray'] or posted_data['is_dirty']):
        posted_data['done'] = True

    next_name = {}
    if 'category' in posted_data:
        next_name['category'] = posted_data.pop("category")
    if 'vendor' in posted_data:
        vendor = posted_data.pop("vendor")
        if vendor != 'All':
            next_name['vendor'] = vendor
    if 'price' in posted_data:
        next_name['price'] = ast.literal_eval(posted_data.pop('price'))

    undo = posted_data.pop("undo", None)
    if undo:
        next_name.clear()
        next_name['_id'] = ObjectId(id)

    elif posted_data.pop("is_skipped"):
        inc_skip_count(id)

    else:
        print('####id####data to be saved -- tagged -- ####', id, posted_data)        
        db.products.update({'_id': ObjectId(id)}, {"$set": posted_data})
        inc_tag_count(user_id)

    #fetching next product tagging info
    tagging_info = get_product_tagging_details(next_name)

    if undo:
        db.products.update({'_id': ObjectId(id)},{"$unset":{'is_dang':'','is_dirty':'','is_xray':'',
                            'tags':'','tagged_by':'','epoch':'','done':''}})
        dcr_tag_count(user_id)

    tag_count, verify_count = get_tag_count(user_id)
    tagging_info['tag_count'] = tag_count
    tagging_info['verify_count'] = verify_count
    return json.dumps(tagging_info)
def set_verified_tags():
    posted_data = request.get_json()
    q = posted_data.pop('q', None)
    print('############posted_data###########', posted_data)
    id = posted_data.pop("id", None)
    user_id = session['user']['id']
    posted_data['verified_by'] = user_id
    posted_data['verified'] = True

    next_name = {}
    if 'category' in posted_data:
        next_name['category'] = posted_data.pop("category")
    if 'vendor' in posted_data:
        vendor = posted_data.pop("vendor")
        if vendor != 'All':
            next_name['vendor'] = vendor
    if 'price' in posted_data:
        next_name['price'] = ast.literal_eval(posted_data.pop('price'))

    undo = posted_data.pop("undo", None)
    if undo:
        print(
            'i wanto see last product please........................................'
        )
        next_name.clear()
        next_name['_id'] = ObjectId(id)

    elif posted_data.pop("is_skipped"):
        admin_skip_keys = ['verified_by', 'verified', 'admin_tags']
        admin_skip_data = dict(
            map(lambda key: (key, posted_data.get(key, None)),
                admin_skip_keys))
        admin_skip_data['dirty_by_admin'] = True
        db.products.update({'_id': ObjectId(id)}, {"$set": admin_skip_data})

    else:
        print('####id####data to be saved -- verified --####', id, posted_data)
        db.products.update({'_id': ObjectId(id)}, {"$set": posted_data})
        inc_tag_count(user_id, True)

    #fetching next product tagging info
    if q == 'verify':
        tagging_info = get_product_tagging_details(next_name, True)
    elif q == '3-skips':
        tagging_info = get_product_tagging_details(next_name, False, True)

    if undo:
        db.products.update({'_id': ObjectId(id)}, {
            "$unset": {
                'admin_tags': '',
                'verified_by': '',
                'verified': '',
                'dirty_by_admin': ''
            }
        })
        dcr_tag_count(user_id, True)

    tag_count, verify_count = get_tag_count(user_id)
    tagging_info['tag_count'] = tag_count
    tagging_info['verify_count'] = verify_count
    print('----------------------------------------------', tagging_info)
    return json.dumps(tagging_info)