def _calculate_summary(self):
     summary = db.get_data("SELECT parameter, value FROM digin_usage_summary "
                           "WHERE user_id = '{0}' AND tenant = '{1}'".format(self.user_id, self.tenant))
     if summary['rows'] == ():
         db.insert_data(self.insert_obj,'digin_usage_summary')
     else:
         update_obj = []
         residue_insert = []
         for i in self.insert_obj:
             for j in summary['rows']:
                 if i['parameter'] == j[0]:
                     if self.is_increment:
                         update_obj.append({i['parameter']:str(int(j[1])+int(i['value']))})
                     else:
                         update_obj.append({i['parameter']: str(int(j[1])-int(i['value']))})
                     break
             else:
                 residue_insert.append({'parameter':i['parameter'],'value':i['value'],'user_id':self.user_id,'tenant':self.tenant})
                 continue
         if update_obj:
             for record in update_obj:
                 db.update_data('digin_usage_summary',"WHERE parameter = '{0}' AND user_id = '{1}' AND tenant = '{2}' "
                                .format(list(record.keys())[0], self.user_id,self.tenant), value = record.itervalues().next(),
                                modifieddatetime=datetime.datetime.now())
         if residue_insert:
             db.insert_data(residue_insert,'digin_usage_summary')
def MEMcache_insert(result,query, id, expiry):
            logger.info("Cache insertion started...")

            class ExtendedJSONEncoder(json.JSONEncoder):
                def default(self, obj):
                    if isinstance(obj, decimal.Decimal):
                        return str(obj)
                    if isinstance(obj, datetime) or isinstance(obj, datetime.date):
                        return obj.isoformat()
                    return super(ExtendedJSONEncoder, self).default(obj)

            createddatetime = datetime.datetime.now()
            expirydatetime = createddatetime + datetime.timedelta(seconds=expiry)
            # to_cache_lst = []
            # for k,v in result[0].iteritems():
            to_cache = { 'id': id,
                         # 'fieldname': k,
                         # 'value': v,
                         'data' : json.dumps(result, cls=ExtendedJSONEncoder),
                         'query' : str(query),
                         'expirydatetime': expirydatetime,
                         'createddatetime': createddatetime}
           # to_cache_lst.append(to_cache)
            try:
                CC.insert_data([to_cache],'cache_aggregation')
                logger.info("Cache insertion successful!")
            except Exception, err:
                logger.error("Error inserting to cache!")
                logger.error(err)
    def set_usage(self):

        for k,v in self.usages.items():
            usage_rating = {'user_id':self.user_id,
                       'tenant':self.tenant,
                       'parameter':k,
                       'value':v,
                       'other_data':self.other_data}
            self.insert_obj.append(usage_rating)
        print self.insert_obj
        db.insert_data(self.insert_obj,'digin_usage_details')
        self._calculate_summary()
def MEM_insert(id, data, query, cache_timeout):
        logger.info("Cache insertion started...")
        createddatetime = datetime.datetime.now()
        expirydatetime = createddatetime + datetime.timedelta(seconds=cache_timeout)

        to_cache = [{'id': str(id),
                     'data': data,
                     'query': query,
                     'expirydatetime': expirydatetime,
                     'createddatetime': createddatetime}]

        try:
            CC.insert_data(to_cache,'cache_execute_query')

        except Exception, err:
            print err
            logger.error("Error inserting to cache!")
            logger.error(err)
def MEM_insert(data,cache_timeout):
        logger.info("Cache insertion started...")
        createddatetime = datetime.datetime.now()
        expirydatetime = createddatetime + datetime.timedelta(seconds=cache_timeout)

        to_cache_lst = []
        for row in data:
            to_cache = {'id': str(row['ID']),
                         'level': row['level'],
                         'value': row['value'],
                         'expirydatetime': expirydatetime,
                         'createddatetime': createddatetime}
            to_cache_lst.append(to_cache)
        try:
            CC.insert_data(to_cache_lst,'cache_hierarchy_levels')

        except Exception, err:
            logger.error("Error inserting to cache!")
            logger.error(err)
            pass
    def set_packages(self):
        time_now = datetime.datetime.now()
        _, num_days = calendar.monthrange(time_now.year, time_now.month)
        free_package = conf.get_conf('DefaultConfigurations.ini', 'Package Settings')['Free']
        if self.package_id == int(free_package):
            last_day = time_now + datetime.timedelta(days=30)
        else:
            last_day = datetime.datetime(time_now.year, time_now.month, num_days, 23, 59, 59)

        tenant_package_mapping = [{'tenant_id': self.tenant,
                                   'package_id': self.package_id,
                                   'created_datetime': time_now,
                                   'modified_datetime': time_now,
                                   'expiry_datetime': last_day,
                                   'package_status':'current_package'}]
        try:
            db.insert_data(tenant_package_mapping, 'digin_tenant_package_details')
        except Exception, err:
            print "Error inserting to cacheDB!"
            return cmg.format_response(False, err, "Error occurred while inserting.. \n" + str(err),
                                          exception=sys.exc_info())
                           cache_lifetime=int(params['cache_lifetime']),
                           widget_limit=int(params['widget_limit']),
                           query_limit=int(params['query_limit']),
                           logo_path='/digin_user_data/'+user_id+'/'+domain+'/logos/'+params['logo_name'],
                           dp_path='/digin_user_data/'+user_id+'/'+domain+'/DPs/'+params['dp_name'],
                           theme_config=params['theme_config'],
                           modified_date_time=datetime.datetime.now())
            return cmg.format_response(True,1,"User settings updated successfully")
        except Exception, err:
            logger.error("Error updating user settings")
            logger.error(err)
            print "Error updating user settings"
            print err
            raise
    try:
        CC.insert_data(data_object,'digin_user_settings')
    except Exception, err:
        logger.error("Error saving user settings")
        logger.error(err)
        print "Error saving user settings"
        print err
        raise
    return cmg.format_response(True,1,"User settings saved successfully")

def get_user_settings(user_id, domain):

    query = "SELECT components, user_role, cache_lifetime, widget_limit, " \
            "query_limit, logo_path, dp_path, theme_config, modified_date_time, created_date_time, " \
            "domain FROM digin_user_settings WHERE user_id = '{0}' AND domain = '{1}'".format(user_id, domain)
    logo_path = conf.get_conf('FilePathConfig.ini','User Files')['Path']
    document_root = conf.get_conf('FilePathConfig.ini','Document Root')['Path']
def insert_data(dj):
    date = dt.datetime.now()
    cache.insert_data([{'d_name': "test1", 'DateTime': date, 'data' : dj}],'wordcloud')
    logger.info('Inserted results into wordcloud table')
        try:
            db.insert_data(tenant_package_mapping, 'digin_tenant_package_details')
        except Exception, err:
            print "Error inserting to cacheDB!"
            return cmg.format_response(False, err, "Error occurred while inserting.. \n" + str(err),
                                          exception=sys.exc_info())

        if not self.is_default:
            package_data = [{'package_id': self.package_id,
                             'package_name': self.package_name,
                             'package_attribute': self.package_attribute,
                             'package_value': self.package_value,
                             'package_price': self.package_price,
                             'is_default': False}]
            try:
                db.insert_data(package_data, 'digin_packagedetails')
            except Exception, err:
                print "Error inserting to DB!"
                result = cmg.format_response(False, err,
                                             "Error occurred while inserting additional_packages.. \n" + str(err),
                                             exception=sys.exc_info())
                return result
        return cmg.format_response(True, 0, "Package updated successfully")

    def deactivate_packages(self):
        ""
        if self.is_default:
            try:
                db.update_data('digin_tenant_package_details'," WHERE tenant_id = '{0}' AND package_id IN ({1},{2},{3},{4})".format(self.tenant,int(free_package),int(default_1),int(default_2),int(default_3)),
                               package_status = 'deactivated')
            except Exception, err:
def store_components(params, user_id, domain):
         data = json.loads(params)
         pprint.pprint(data)
         DiginCompDate = datetime.datetime.now()
         User_id = user_id
         Domain = domain
         DiginCompName = data["compName"]
         DiginCompClass = data["compClass"]
         DiginCompType = data["compType"]
         DiginCompCategory = data["compCategory"]
         RefreshInterval = data["refreshInterval"]
         pages = data["pages"]
         deletions = data["deletions"]

         epoch = datetime.datetime.utcfromtimestamp(0)
         def unix_time_millis(dt):
            return (dt - epoch).total_seconds() * 1000.0

         if data["compID"] is None:
             DiginCompID = int(unix_time_millis(datetime.datetime.now()))
             print DiginCompID
             try:
                p1 = threading.Thread(target=CC.insert_data,args=([{ 'digin_comp_id':DiginCompID,
                                                                     'digin_comp_name':DiginCompName,
                                                                     'created_date_time':DiginCompDate,
                                                                     'digin_comp_class':DiginCompClass,
                                                                     'digin_comp_type':DiginCompType,
                                                                     'digin_comp_category':DiginCompCategory,
                                                                     'refresh_interval':RefreshInterval,
                                                                     'modified_date_time':DiginCompDate,
                                                                     'last_modified_user':User_id}],
                                                                  'digin_component_header'))
                p2 = threading.Thread(target=CC.insert_data, args=([{ 'component_id':DiginCompID,'user_id':User_id,
                                                                      'type':'dashboard','domain':Domain}],
                                                                   'digin_component_access_details'))
                p1.start()
                p2.start()
                p1.join()
                p2.join()
                _rate_calculation_helper(True,DiginCompID,DiginCompType,User_id,Domain)
                logger.info("DigIn Component Successfully created")
             except Exception, err:
                logger.error("Error in updating cache. %s" % err)
                return cmg.format_response(False,None,'Error occurred while saving dashboard!',sys.exc_info())

             for page in pages:
                 page_id = int(unix_time_millis(datetime.datetime.now()))
                 try:
                     CC.insert_data([{'page_id':page_id, 'digin_comp_id':DiginCompID,'page_name':page["pageName"],
                                      'page_data': json.dumps(page['pageData'])}],
                                    'digin_component_page_detail')
                     logger.info("Component page successfully saved!")
                 except Exception, err:
                     logger.error("Error in updating cache. %s" % err)
                     return cmg.format_response(False,None,'Error occurred while saving dashboard!',sys.exc_info())
                 widgets = page["widgets"]
                 for widget in widgets:
                     widget_id = int(unix_time_millis(datetime.datetime.now()))
                     widgetData = widget["widgetData"]
                     print widgetData
                     try:
                        CC.insert_data([{ 'widget_id':widget_id, 'widget_name': widget['widgetName'], 'widget_data':json.dumps(widgetData),
                                          'digin_comp_id':DiginCompID, 'version_id':1,'size_x':widget['sizeX'],'size_y':widget['sizeY'],'row':widget['row'],'col':widget['col'],
                                          'comp_page_id': page_id}], 'digin_component_detail')
                        logger.info("Digin Widget Successfully created")
                     except Exception, err:
                        logger.error("Error in updating cache. %s" % err)
                        return cmg.format_response(False,None,'Error occurred while saving dashboard!',sys.exc_info())
                logger.info("Digin component successfully updated")
             except Exception, err:
                logger.error("Error in updating component. %s" % err)
                pass

             for page in pages:
                 try:
                     if page['pageID'] is not None:
                         CC.update_data('digin_component_page_detail','WHERE digin_comp_id ={0} AND page_id ={1}'
                                        .format(data["compID"],page['pageID']),
                                        page_name=page['pageName'],
                                        page_data=json.dumps(page['pageData']))
                     else:
                         page_id = int(unix_time_millis(datetime.datetime.now()))
                         CC.insert_data([{'page_id':page_id, 'digin_comp_id':data["compID"],'page_name':page["pageName"],
                                          'page_data': json.dumps(page['pageData']) }],
                                        'digin_component_page_detail')
                     logger.info("Component page updated saved!")
                 except Exception, err:
                     logger.error("Error in updating cache. %s" % err)
                     pass

                 widgets = page["widgets"]
                 for widget in widgets:
                     widgetData = widget["widgetData"]
                     print widgetData
                     try:
                        if widget['widgetID'] is not None:
                            CC.update_data('digin_component_detail','WHERE digin_comp_id ={0} AND comp_page_id ={1} AND widget_id ={2}'
                            .format(data["compID"],page['pageID'],widget['widgetID']),
                            widget_name=widget['widgetName'],