Example #1
0
def station_graph(request):
    session = request.dbsession
    result = OrderedDict()
    # Calculate the bounds
    today = datetime.date.today()
    begin_date = datetime.date(day=1, month=today.month, year=today.year - 1)
    end_date = datetime.date(day=1, month=today.month, year=today.year)
    # Query
    query = (
        select(
            [
                func.count(Station.ID).label("nb"),
                func.year(Station.StationDate).label("year"),
                func.month(Station.StationDate).label("month"),
            ]
        )
        .where(and_(Station.StationDate >= begin_date, Station.StationDate < end_date))
        .group_by(func.year(Station.StationDate), func.month(Station.StationDate))
    )
    """
            Execute query and sort result by year, month
            (faster than an order_by clause in this case)
    """
    data = session.execute(query).fetchall()
    for nb, y, m in sorted(data, key=operator.itemgetter(1, 2)):
        d = datetime.date(day=1, month=m, year=y).strftime("%b")
        result[" ".join([d, str(y)])] = nb
    return result
def main(argv):

    print(Supportparams.exists('/home/clinical/DEMUX//150703_D00134_0206_AH5HGFBCXX/Unaligned4/support.txt')) # 515
    print(Datasource.exists('/home/clinical/DEMUX//150703_D00134_0206_AH5HGFBCXX/Unaligned4/Basecall_Stats_H5HGFBCXX/Demultiplex_Stats.htm')) #515
    print(Flowcell.exists('H5HGFBCXX')) # 512
    print(Demux.exists(512, 'Y101,I8,I8,Y101')) # 474
    print(Project.exists('240540')) #552
    print(Sample.exists('ADM1136A1_XTA08', 'CAGCGTTA')) #6651
    print(Unaligned.exists(18, 487, 1)) #13902

    print(xstats.parse('/mnt/hds/proj/bioinfo/DEMUX/151009_ST-E00198_0059_BH2V2YCCXX'))

    print(Backup.exists('151117_D00410_0187_AHWYGMADXX'))
    print(Backup.exists('141212_D00134_0166_AHB058ADXX'))
    print(Backup.exists('131219_D00134_0057_BH829YADXX'))
    print(Backup.exists('131219_D00134_0057_BH829YADXX', 'tape005_006'))
    print(Backup.exists('131219_D00134_0057_BH829YADXX', 'tape007_005'))

    print(Backuptape.exists('tape005_006'))

    rs = SQL.query(
        func.year(Datasource.rundate).label('year'),\
        func.month(Datasource.rundate).label('month'),\
        func.count(Datasource.datasource_id.distinct()).label('runs'),\
        func.round(func.sum(Unaligned.readcounts / 2000000), 2).label('mil reads'),\
        func.round(func.sum(Unaligned.readcounts) / (func.count(Datasource.datasource_id.distinct())*2000000), 1).label('mil reads fc lane')
    ).\
    outerjoin(Demux).\
    outerjoin(Flowcell).\
    outerjoin(Unaligned).\
    group_by(func.year(Datasource.rundate), func.month(Datasource.rundate)).\
    order_by(func.year(Datasource.rundate).desc(), func.month(Datasource.rundate).desc(), func.day(Datasource.rundate).desc()).\
    all()

    print(rs)
Example #3
0
def individual_graph(request):
    session = request.dbsession
    # Initialize Json object
    result = OrderedDict()
    # Calculate the bounds
    today = datetime.date.today()
    begin_date = datetime.date(day=1, month=today.month, year=today.year - 1)
    end_date = datetime.date(day=1, month=today.month, year=today.year)
    # Query
    query = (
        select(
            [
                func.count("*").label("nb"),
                func.year(Individual.creationDate).label("year"),
                func.month(Individual.creationDate).label("month"),
            ]
        )
        .where(and_(Individual.creationDate >= begin_date, Individual.creationDate < end_date))
        .group_by(func.year(Individual.creationDate), func.month(Individual.creationDate))
    )
    data = session.execute(query).fetchall()
    for nb, y, m in sorted(data, key=operator.itemgetter(1, 2)):
        d = datetime.date(day=1, month=m, year=y).strftime("%b")
        result[" ".join([d, str(y)])] = nb
    return result
Example #4
0
def by_date():
    '''
    issue_group_date = Issue.query.add_columns(func.sum(func.IF(Issue.status==1, 1, 0)), # sum/count total if status is Open
#                                               func.sum(func.IF(Issue.status==2, 1, 0)), # sum/count total if status is Close
                                               func.year(Issue.issue_date),
                                               func.month(Issue.issue_date)
                                               ).\
        group_by(func.year(Issue.issue_date),
                 func.month(Issue.issue_date)).\
        all()
    '''
    group_date = Issue.query.filter(Issue.status==1)
    group_date = group_date.add_columns(func.count(Issue.status), # sum/count total if status is Open
                                               func.year(Issue.issue_date),
                                               func.month(Issue.issue_date)
                                               )
    group_date = group_date.group_by(func.year(Issue.issue_date),
                 func.month(Issue.issue_date))

    date_data = []

    for element in group_date:
        date_data.append(
            {
                "date": "{}-{}".format(element[-2],element[-1]+1), # + 1 For Months, due to javascript months is 0-11
                #"date": dt.date(element[-2],element[-1],1),
                "open": int(element[1]),
            },
        )
    return date_data
def station_graph(request):
		# Initialize Json object
		result = OrderedDict()

		# Calculate the bounds
		today = datetime.date.today()
		begin_date = datetime.date(day=1, month=today.month, year=today.year-1)
		end_date = datetime.date(day=1, month=today.month, year=today.year)
		# Query
		query = select([
				func.count(Station.id).label('nb'),
				func.year(Station.date).label('year'),
				func.month(Station.date).label('month')]
				).where(and_(Station.date >= begin_date, Station.date < end_date)
				).group_by(func.year(Station.date), func.month(Station.date)
		)

		"""
				Execute query and sort result by year, month
				(faster than an order_by clause in this case)
		"""
		data = DBSession.execute(query).fetchall()
		for nb, y, m in sorted(data, key=operator.itemgetter(1,2)):
				d = datetime.date(day=1, month=m, year=y).strftime('%b')
				result[' '.join([d, str(y)])] = nb

		return result
Example #6
0
 def month_balance(self, id):                
     orders = meta.Session.query(func.month(Order.created_at).label('month'), 
                                 func.day(Order.created_at).label('day'), 
                                 func.sum(Order.real_value - TransportOrder.real_value).label('value')) \
                  .join(Order.transport_order) \
                  .group_by( func.month(Order.created_at), func.day(Order.created_at)) \
                  .filter(and_(Order.idCreator == id, Order.created_at.between(h.today(31), h.today()))) \
                  .all()
     
     chart = open_flash_chart()
     t = title(text='Zestawienie')
     
     b = bar()        
     b.values = [order.value for order in orders]               
     
     lbl = labels(labels = [str(order.month) + ' ' + str(order.day) for order in orders])
     
     x = x_axis()
     x.labels = lbl
     
     y = y_axis()        
     y.min, y.max= 0, max(b.values or [0])         
     
     chart.title = t        
     chart.y_axis = y
     chart.x_axis = x
     chart.add_element(b)        
     
     return chart.render()
Example #7
0
def get_summary(value_class):
    q = db_session.query(
            func.date(SR_Values.datetime).label("date")
            , func.sum(SR_Values.value).label("daily_value")
        ).filter(SR_Classes.id == SR_Values.value_class_id
        ).filter(SR_Classes.accum_flag == true()
        ).filter(SR_Classes.value_class == value_class
        ).filter(SR_Values.datetime > datetime.datetime(datetime.datetime.now().year, 1, 1)
        ).group_by(SR_Classes.value_class, func.month(SR_Values.datetime)
        ).order_by(SR_Classes.value_class, func.date(SR_Values.datetime))
    print q
    rows = [{     "name": x.date
                , "value": x.daily_value
                } for x in q.all()]
    q = db_session.query(
            func.date(SR_Values.datetime).label("date")
            , func.avg(SR_Values.value).label("daily_value")
        ).filter(SR_Classes.id == SR_Values.value_class_id
        ).filter(SR_Classes.accum_flag == false()
        ).filter(SR_Classes.value_class == value_class
        ).filter(SR_Values.datetime > datetime.datetime(datetime.datetime.now().year, 1, 1)
        ).group_by(SR_Classes.value_class, func.month(SR_Values.datetime)
        ).order_by(SR_Classes.value_class, func.date(SR_Values.datetime))
    rows.extend([{     "name": x.date
                    , "value": x.daily_value
                    } for x in q.all()])
    print rows
    return rows
    def filter_query_remove_summer_months(self, table):
        """ Return original query plus filters to remove summer months. """

        self.base_query = self.base_query.\
                          filter(or_(func.month(table.date) < 5,
                                     func.month(table.date) > 9))

        return self.base_query
Example #9
0
def index(all_flag=None):

    # Filter per user, and open status
    memo = Memo.query.filter(Memo.user_id==current_user.id)
    issue = Issue.query.filter(Issue.user_id==current_user.id)

    # Filter per status, all user
    if all_flag == "all":
        memo = Memo.query
        issue = Issue.query

    counter = {
        't_memo': memo.count(),
        't_issue': issue.count(),
        'to_memo': memo.filter(Memo.status==3).count(),
        'to_issue': issue.filter(Issue.status==1).count()
    }

    # add/join other table after filtering
    memo = memo.join(Vendor, User).filter(Memo.status==3).\
        order_by(asc(Memo.waiting_date)).\
        values(Memo.id,Memo.subject, Vendor.short_hand, Memo.waiting_date, User.username)

    issue = issue.join(Vendor, User).filter(Issue.status==1).\
        order_by(asc(Issue.waiting_date)).\
        values(User.username, Issue.issue_description,
               Vendor.short_hand, Issue.waiting_date,
               Issue.id)


    issue_group_date = Issue.query.add_columns(func.sum(func.IF(Issue.status==1, 1, 0)), # sum/count total if status is Open
                                               func.sum(func.IF(Issue.status==2, 1, 0)), # sum/count total if status is Close
                                               func.year(Issue.waiting_date),
                                               func.month(Issue.waiting_date)
                                               ).\
        group_by(func.year(Issue.waiting_date),
                 func.month(Issue.waiting_date)).\
        all()

    issue_date_data = []

    for element in issue_group_date:
        issue_date_data.append(
            {
                "date": "{}-{}".format(element[3],element[4]),
                "open": int(element[1]),
                "close": int(element[2])
            },
        )


    return render_template("index.html",
                           memo_data=memo,
                           issue_data=issue,
                           issue_date_data=issue_date_data,
                           counter=counter
                           )
Example #10
0
def first_heatmap_graph(month="May", year=2020, expence_type="expence"):
    if current_user and current_user.is_authenticated:
        if expence_type == "expence":
            b = db.session.query(func.day(Expences.date_time),
                                 func.sum(Expences.debit).label('total'),
                                 ).group_by(func.date(Expences.date_time)) \
                .filter(func.month(Expences.date_time) == datetime.strptime(month, '%B').month) \
                .filter(func.year(Expences.date_time) == int(year)) \
                .filter(Expences.user_id == current_user.id)
        else:
            b = db.session.query(func.day(Expences.date_time),
                                 func.sum(Expences.credit).label('total'),
                                 ).group_by(func.date(Expences.date_time)) \
                .filter(func.month(Expences.date_time) == datetime.strptime(month, '%B').month) \
                .filter(func.year(Expences.date_time) == int(year)) \
                .filter(Expences.user_id == current_user.id)
        data_date = [0 for _ in range(1, 33)]
        for i in b:
            data_date[i[0]] = i[1]
        act_data = []
        for i in calendar.Calendar().monthdayscalendar(month=datetime.strptime(
                month, '%B').month,
                                                       year=2020):
            a = []
            for j in i:
                a.append(data_date[j])
            act_data.append(a)
        calendar_dates = calendar.Calendar().monthdayscalendar(
            month=datetime.strptime(month, '%B').month, year=2020)
        for i in range(len(calendar_dates)):
            for j in range(len(calendar_dates[i])):
                if calendar_dates[i][j] == 0:
                    calendar_dates[i][j] = ""
        fig = ff.create_annotated_heatmap(
            [act_data[i] for i in range(len(act_data) - 1, -1, -1)],
            x=[
                'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday',
                'Saturday', 'Sunday'
            ],
            annotation_text=[
                calendar_dates[i]
                for i in range(len(calendar_dates) - 1, -1, -1)
            ],
            colorscale='Reds',
        )
        fig.update_layout(
            title="Per Day for the month of " + month,
            xaxis_title="Day of the week",
            yaxis_title="Week",
        )
        return fig
    else:
        return go.Figure(
            data=[go.Bar(x=[1, 2], y=[1, 2])],
            layout=go.Layout(title="Please login To view Your Data"))
def get_records_between_dates(brand_name, d1, d2):
    """Get a list of tuple of (year, month, brand name, search counts of that month)."""
    brand_name = brand_name if brand_name else ''
    records = session.query(
        func.year(SearchRecords.date), func.month(SearchRecords.date),
        SearchRecords.brand_name, func.count(SearchRecords.brand_name)) \
        .filter(SearchRecords.brand_name.ilike('%'+brand_name+'%'))\
        .filter(SearchRecords.date.between(d1, d2))\
        .group_by(func.year(SearchRecords.date), func.month(SearchRecords.date), SearchRecords.brand_name)\
        .all()
    print(*records, sep='\n')
    return records
Example #12
0
 def run(cls, filters):
     fd = filters['FromDate'].split('-')
     td = filters['ToDate'].split('-')
     FromDate = date(int(fd[0]), int(fd[1]), int(fd[2]))
     ToDate = date(int(td[0]), int(td[1]), int(td[2]))
     session = Session()
     records = session.query(func.concat(func.year(User.CreatedDate),'-',func.month(User.CreatedDate)), func.count(User.CreatedDate).label('CNT'))\
         .filter(User.CreatedDate.between(FromDate,ToDate))\
         .group_by(func.concat(func.year(User.CreatedDate),'-',func.month(User.CreatedDate)))\
         .order_by(func.concat(func.year(User.CreatedDate),'-',func.month(User.CreatedDate)).desc())\
         .all()
     session.close()
     columns = ['Mes', 'Cantidad']
     return {'Columns': columns, 'Rows': records}
Example #13
0
def standard_deviation_demand(demand_list):
    for demand in demand_list:
        [min, max] = min_max_trimester(demand[2])
        query = session.query(Order.QTDE).filter(
            func.month(Order.DATAPED) >= min,
            func.month(Order.DATAPED) <= max,
            func.year(Order.DATAPED) == demand[1], Order.IDPROD == demand[0])
        qtd_list = query.all()
        qtd_array = []
        for qtd in qtd_list:
            qtd_array.append(qtd[0])
        demand.append(statistics.stdev(qtd_array))
        #[IDPROD, YEAR, TRIMESTER, AVERAGE_DEMAND, STANDARD_DEVIATION_DEMAND]
    return demand_list
Example #14
0
def expense_amt_data():
   
    i_expenses = {}
    
    expenses = session.query(func.round(func.sum(ExpenseInfo.expense_amt)), 
                func.month(ExpenseInfo.transaction_date)).\
                        group_by(func.month(ExpenseInfo.transaction_date))

    for e in expenses.all():
        i_expenses[e[1]] = str(e[0])
    data = {
        "expenses": i_expenses
    }
    
    return jsonify(data)
Example #15
0
def lead_time_standard_deviation(demand_list):
    for demand in demand_list:
        [min, max] = min_max_trimester(demand[2])
        query = session.query(Provision.DATACOMP, Provision.DATAARREC).filter(
            Provision.IDPROD == demand[0],
            func.month(Order.DATAPED) >= min,
            func.month(Order.DATAPED) <= max,
            func.year(Order.DATAPED) == demand[1])
        provision_time = query.all()
        provision_array = []
        for item in provision_time:
            provision_array.append(abs(item[1] - item[0]).days)
        demand.append(statistics.stdev(provision_array))
    #[IDPROD, YEAR, TRIMESTER, AVERAGE_DEMAND, STANDARD_DEVIATION_DEMAND, lead_time_mean, lead_time_standard_deviation]
    return demand_list
Example #16
0
def lead_time_mean(demand_list):
    for demand in demand_list:
        [min, max] = min_max_trimester(demand[2])
        query = session.query(Provision.DATACOMP, Provision.DATAARREC).filter(
            Provision.IDPROD == demand[0],
            func.month(Order.DATAPED) >= min,
            func.month(Order.DATAPED) <= max,
            func.year(Order.DATAPED) == demand[1])
        provision_time = query.all()
        total_time = 0
        for item in provision_time:
            total_time += abs(item[1] - item[0]).days
        demand.append(total_time / float(query.count()))
    #[IDPROD, YEAR, TRIMESTER, AVERAGE_DEMAND, STANDARD_DEVIATION_DEMAND, lead_time_mean]
    return demand_list
Example #17
0
 def _get_host_service_list_monthly_average_from_days(self, start, end):
     return self.__mysql_session.query(HostService, func.avg(HostService.avg_Uptime).label('monthlyUptime')) \
         .group_by(HostService.entityId) \
         .group_by(func.month(HostService.timestampId)) \
         .filter(HostService.aggregationType == 'd') \
         .filter(HostService.timestampId >= start, HostService.timestampId <= end) \
         .all()
Example #18
0
def histogram(session, name, days=365):
    today = util.utcnow().date()
    start = today - timedelta(days=days)
    stat_key = STAT_TYPE[name]
    month_key = (func.year(Stat.time), func.month(Stat.time))
    rows = session.query(func.max(Stat.value), *month_key).filter(
        Stat.key == stat_key).filter(
        Stat.time >= start).filter(
        Stat.time < today).group_by(
        *month_key).order_by(
        *month_key
    )
    result = []
    for num, year, month in rows.all():
        # use first of August to plot the highest result for July
        if month == 12:  # pragma: no cover
            next_month = date(year + 1, 1, 1)
        else:
            next_month = date(year, month + 1, 1)
        if next_month >= today:
            # we restrict dates to be at most yesterday
            next_month = today - timedelta(days=1)
        day = timegm(next_month.timetuple()) * 1000
        result.append([day, num])
    return [result]
Example #19
0
    def samples_per_month(self, year):
        """Fetch samples per month. Grouped by priority."""
        query = (self.session.query(
            models.Customer.priority.label("priority"),
            func.month(models.Sample.received_at).label("month_no"),
            func.count(models.Sample.id).label("count"),
        ).join(models.Sample.customer).filter(
            models.Sample.received_at > self.get_from_date(year),
            models.Sample.received_at < self.get_until_date(year),
        ).group_by("priority", "month_no"))

        for cust_priority, results in groupby(
                query, key=lambda result: result.priority):
            counts = {
                MONTHS[result.month_no]: result.count
                for result in results
            }
            data = {
                "name": cust_priority,
                "results": {
                    month: counts.get(month) or None
                    for month in MONTHS.values()
                },
            }
            yield data
Example #20
0
    def samples_per_month_application(self, year):
        """Fetch samples per month. Grouped by application cathegory."""

        query = (self.session.query(
            models.Application.category.label("category"),
            func.month(models.Sample.received_at).label("month_no"),
            func.count(models.Sample.id).label("count"),
        ).join(
            models.Sample.application_version,
            models.ApplicationVersion.application,
        ).filter(
            models.Sample.received_at > self.get_from_date(year),
            models.Sample.received_at < self.get_until_date(year),
            models.Sample.received_at,
            models.Application.category,
        ).group_by("category", "month_no"))

        for application_cathegory, results in groupby(
                query, key=lambda result: result.category):
            counts = {
                MONTHS[result.month_no]: result.count
                for result in results
            }
            data = {
                "name": application_cathegory,
                "results": {
                    month: counts.get(month) or None
                    for month in MONTHS.values()
                },
            }
            yield data
Example #21
0
    def get(self):
        self.set_header("Content-Type", "application/json")
        self.set_header('Access-Control-Allow-Origin', '*')

        master_id = self.get_argument('master_id', '')
        month = self.get_argument('month', 0)

        print master_id, month
        month = int(month)
        if month == 0:
            month = dt.datetime.now().month

        ret = {}

        try:
            session = Session()

            row = session.query(func.count(MasterBookingModifyRequest)) \
                        .filter(MasterBookingModifyRequest.master_id == master_id) \
                        .filter(func.month(MasterBookingModifyRequest.request_time) == month ) \
                        .one()

            count = row[0]

            ret['response'] = count
            self.set_status(Response.RESULT_OK)

        except Exception, e:
            session.rollback()
            print_err_detail(e)
            self.set_status(Response.RESULT_SERVERERROR)
            add_err_message_to_response(ret, err_dict['err_mysql'])
Example #22
0
def scheduleInCourse(course):
# Lista med kurstillfallen som anvands i en kurs
    templist = []
    tempvar = db.session.query(Dates.date, func.year(Dates.date), func.month(Dates.date), func.day(Dates.date), Classes.starttime, Classes.endtime, Classes.content, Classes.id).distinct().join(Dates.classes).join(Classes.courses).filter(Courses.code == course).order_by(Dates.date).order_by(Classes.starttime).all()
    for item in tempvar:
        templist.append(item)
    return templist
Example #23
0
def generate_employee_summary(employee_id, year, month):
    worklogs = Worklog.query.filter(Worklog.employee_id == employee_id,
                                    func.month(Worklog.work_date) == month,
                                    func.year(
                                        Worklog.work_date) == year).all()

    salary = decimal.Decimal(0.0)
    for worklog in worklogs:
        project_id = worklog.task.sprint.project_id
        employee_role = ProjectEmployeeRole.query.filter(
            ProjectEmployeeRole.project_id == project_id,
            ProjectEmployeeRole.employee_id == employee_id).first()
        if project_id and employee_role:
            salary = salary + employee_role.rate * worklog.logged_hours
    rows_deleted = Summarize.query.filter(Summarize.employee_id == employee_id,
                                          Summarize.month == month,
                                          Summarize.year == year).delete()
    summary = Summarize(employee_id, month, year, float(salary))
    try:
        db.session.add(summary)
        db.session.flush()
        if summary in db.session:
            db.session.commit()
            return SummarizeSchema().jsonify(summary)
    except DatabaseError:
        return {'error': 'Summary did not generate properly'}, 501
Example #24
0
def check_date(month, year):
    # Kiểm tra xem có nhập xuất trong năm đó không
    year_check_export = db.session.query(
        Invoice.invoice_id).filter(func.year(Invoice.date) == year).first()
    year_check_import = db.session.query(
        BookImport.id).filter(func.year(BookImport.date) == year).first()
    print(year_check_import, '  ', year_check_export)
    if year_check_import is not None and year_check_export is not None:
        month_check_export = db.session.query(Invoice.invoice_id).filter(
            func.month(Invoice.date) == month).first()
        month_check_import = db.session.query(BookImport.id).filter(
            func.month(BookImport.date) == month).first()
        print(month_check_import, '  ', year_check_export)
        if month_check_import is not None and month_check_export is not None:
            return True
    return False
Example #25
0
def histogram(session, name, days=365):
    today = util.utcnow().date()
    start = today - timedelta(days=days)
    stat_key = STAT_TYPE[name]
    month_key = (func.year(Stat.time), func.month(Stat.time))
    rows = session.query(func.max(Stat.value), *month_key).filter(
        Stat.key == stat_key).filter(
        Stat.time >= start).filter(
        Stat.time < today).group_by(
        *month_key).order_by(
        *month_key
    )
    result = []
    for num, year, month in rows.all():
        # use first of August to plot the highest result for July
        if month == 12:
            next_month = date(year + 1, 1, 1)
        else:
            next_month = date(year, month + 1, 1)
        if next_month >= today:
            # we restrict dates to be at most yesterday
            next_month = today - timedelta(days=1)
        day = next_month.strftime('%Y-%m-%d')
        result.append({'day': day, 'num': num})
    return result
    def has_already_run(self):
        """检查任务是否已经执行过

        @override
        首先获取当前应该判断那个月
        然后看看这个月是否已经执行过了
        """
        try:
            target_month, target_year = get_target_month_year()

            session = db.get_session()
            pushed_log_list = session.query(Push_log).\
                filter(Push_log.task_id == self.task_id).\
                filter(Push_log.push_plugin == self.get_task_plugin_name()).\
                filter(Push_log.push_user == self.user).\
                filter(func.month(Push_log.push_datetime) == target_month).\
                filter(func.year(Push_log.push_datetime) == target_year).\
                all()

            pushed_log_num = len(pushed_log_list)
            LOG.debug("[task_name: %s] [task_id: %d], pushed_log_list length is %d",
                      self.get_task_plugin_name(), self.task_id,
                      pushed_log_num)

            if pushed_log_num > 0:
                return True
            return False
        finally:
            session.close()
Example #27
0
    def group_by_period(self):
        """Group by time period (per month)"""

        return self \
            .add_columns (label("month", func.month(DB.SCMLog.date)),
                          label("year", func.year(DB.SCMLog.date))) \
            .group_by("month", "year").order_by("year", "month")
 def _get_host_service_list_monthly_average_from_days(self, start, end):
     return self.__mysql_session.query(HostService, func.avg(HostService.avg_Uptime).label('monthlyUptime')) \
         .group_by(HostService.entityId) \
         .group_by(func.month(HostService.timestampId)) \
         .filter(HostService.aggregationType == 'd') \
         .filter(HostService.timestampId >= start, HostService.timestampId <= end) \
         .all()
Example #29
0
    def group_by_period (self):
        """Group by time period (per month)"""

        return self \
            .add_columns (label("month", func.month(SCMLog.date)),
                          label("year", func.year(SCMLog.date))) \
            .group_by("month", "year").order_by("year", "month")
Example #30
0
 def get(self):
     datas = []
     dates = db.session.query(
         func.count(Comment.mid), func.year(Comment.insert_time),
         func.month(Comment.insert_time),
         func.day(Comment.insert_time)).group_by(
             func.year(Comment.insert_time),
             func.month(Comment.insert_time),
             func.day(Comment.insert_time)).filter(
                 Comment.insert_time >= (datetime.datetime.now() -
                                         datetime.timedelta(30))).all()
     for date in dates:
         datas.append({
             "numbers": date[0],
             "date": f'{date[1]}-{date[2]}-{date[3]}'
         })
     return datas
Example #31
0
def first_bar_graph(month="May", year=2020, expence_type="expence"):
    if current_user and current_user.is_authenticated:
        if expence_type == "expence":
            b = db.session.query(func.day(Expences.date_time),
                                 func.sum(Expences.debit).label('total'),
                                 ).group_by(func.date(Expences.date_time)) \
                .filter(func.month(Expences.date_time) == datetime.strptime(month, '%B').month) \
                .filter(func.year(Expences.date_time) == int(year)) \
                .filter(Expences.user_id == current_user.id)
        else:
            b = db.session.query(func.day(Expences.date_time),
                                 func.sum(Expences.credit).label('total'),
                                 ).group_by(func.date(Expences.date_time)) \
                .filter(func.month(Expences.date_time) == datetime.strptime(month, '%B').month) \
                .filter(func.year(Expences.date_time) == int(year)) \
                .filter(Expences.user_id == current_user.id)
        data_date = [0 for _ in range(32)]
        date_31 = [i for i in range(1, 32)]
        for i in b:
            data_date[i[0]] = i[1]
        data_date_1 = [
            0,
        ]
        for i in data_date:
            data_date_1.append(data_date_1[-1] + i)
        data_fig1 = [
            go.Bar(x=date_31,
                   y=data_date_1[2:],
                   name="Per Day Cumulative",
                   visible='legendonly'),
            go.Bar(x=date_31, y=data_date[1:], name="Per Day", text="pop")
        ]
        layout_fig1 = go.Layout(
            legend_title_text='Click To Disable or Enable..',
            legend=dict(x=0.6, y=1.25),
            title="Per Day for the month of " + month,
            barmode='overlay',
            xaxis_title="Date of the month",
            yaxis_title="Amount",
            margin=dict(l=5, r=10),
        )
        return go.Figure(data=data_fig1, layout=layout_fig1)
    else:
        return go.Figure(
            data=[go.Bar(x=[1, 2], y=[1, 2])],
            layout=go.Layout(title="Please login To view Your Data"))
Example #32
0
def get_statistics_by_day(db: Session, date):
    return (
        db.query(
            func.sum(models.HourlyStats.request_count).label("request_count")
            + func.sum(models.HourlyStats.invalid_count).label("invalid_count")
        )
        .filter(
            func.year(models.HourlyStats.time) == date.year,
            func.month(models.HourlyStats.time) == date.month,
            func.day(models.HourlyStats.time) == date.day,
        )
        .group_by(
            func.year(models.HourlyStats.time),
            func.month(models.HourlyStats.time),
            func.day(models.HourlyStats.time),
        )
        .all()
    )
Example #33
0
 def company_balance(self, id):
     orders = meta.Session.query(func.year(Order.created_at).label('year'), 
                                 func.month(Order.created_at).label('month'), 
                                 func.sum(Order.real_value).label('value')) \
                  .join(Order.transport_order) \
                  .filter(and_(Order.idCompany == id, Order.created_at.between(h.today(365), h.today()))) \
                  .group_by( func.year(Order.created_at), func.month(Order.created_at)) \
                  .all()
     
     profits = meta.Session.query(func.year(Order.created_at).label('year'), 
                                 func.month(Order.created_at).label('month'), 
                                 func.sum(Order.real_value - TransportOrder.real_value).label('value')) \
                  .join(Order.transport_order) \
                  .filter(and_(Order.idCompany == id, Order.created_at.between(h.today(365), h.today()))) \
                  .group_by( func.year(Order.created_at), func.month(Order.created_at)) \
                  .all()
     
     chart = open_flash_chart()
     t = title(text='Zestawienie')
     
     b = bar()        
     b.values = [order.value for order in orders]               
     
     b2 = bar()        
     b2.values = [order.value for order in profits]
     b2.colour = '#56acde'
     
     lbl = labels(labels = [str(order.year) + ' ' + str(order.month) for order in orders])
     
     x = x_axis()
     x.labels = lbl
     
     y = y_axis()
     y.min, y.max= 0, max(b.values or [0])
     y.labels = None
     y.offset = False
     
     chart.title = t        
     chart.y_axis = y
     chart.x_axis = x
     chart.add_element(b)
     chart.add_element(b2)         
     
     return chart.render() 
Example #34
0
def get_charts():
    incoming = request.args
    year = date.today().year
    if "year" in incoming:
        year = incoming["year"]
    chartsList = []

    accountsObjects = Account.get_accounts(g.current_user)
    for account in accountsObjects:
        positive_result = db.session \
            .query(cast(func.sum(Transaction.amount), sqlalchemy_string), func.month(Transaction.date)) \
            .filter(Transaction.account_id == account.id,
                    Transaction.amount > 0,
                    db.func.date(Transaction.date) <= datetime.now().date(),
                    func.year(Transaction.date) == year) \
            .group_by(func.month(Transaction.date)) \
            .all()
        negative_result = db.session \
            .query(cast(func.sum(Transaction.amount), sqlalchemy_string), func.month(Transaction.date)) \
            .filter(Transaction.account_id == account.id,
                    Transaction.amount < 0,
                    db.func.date(Transaction.date) <= datetime.now().date(),
                    func.year(Transaction.date) == year) \
            .group_by(func.month(Transaction.date)) \
            .all()

        positive_data = []
        negative_data = []
        for positive_month in positive_result:
            positive_data.append({
                'amount': positive_month[0],
                'month': positive_month[1]
            })
        for negative_month in negative_result:
            negative_data.append({
                'amount': negative_month[0],
                'month': negative_month[1]
            })
        chartsList.append({
            'account_id': account.id,
            'positive_data': positive_data,
            'negative_data': negative_data,
        })
    return jsonify(result=chartsList)
Example #35
0
def individual_graph(request):
    session = request.dbsession
    result = OrderedDict()
    today = datetime.date.today()
    begin_date = datetime.date(day=1, month=today.month, year=today.year - 1)
    end_date = datetime.date(day=1, month=today.month, year=today.year)

    query = select([
        func.count('*').label('nb'),
        func.year(Individual.creationDate).label('year'),
        func.month(Individual.creationDate).label('month')]
    ).where(and_(Individual.creationDate >= begin_date, Individual.creationDate < end_date)
            ).group_by(func.year(Individual.creationDate), func.month(Individual.creationDate)
                       )
    data = session.execute(query).fetchall()
    for nb, y, m in sorted(data, key=operator.itemgetter(1, 2)):
        d = datetime.date(day=1, month=m, year=y).strftime('%b')
        result[' '.join([d, str(y)])] = nb
    return result
def myslots():
    templist = db.session.query(
        Dates.date, func.year(Dates.date), func.month(Dates.date),
        func.day(Dates.date), Classes.starttime, Classes.endtime,
        Classes.content, Classes.id, Courses.code, Courses.id).distinct().join(
            Dates.classes).join(Classes.teachers).join(Classes.courses).filter(
                Teachers.email == session['user']).order_by(
                    Dates.date).order_by(Classes.starttime).all()

    return templist
Example #37
0
def _likes_aggregation_by_month(criteria):
    records = (
        db.session
        .query(
            func.year(Like.created_at).label("year"),
            func.month(Like.created_at).label("month"),
            func.count(Like.id).label("count"))
        .select_from(UserProfile)
        .join(Post)
        .join(Like)
        .filter(*criteria)
        .group_by(func.year(Like.created_at), func.month(Like.created_at))
        .all()
    )
    return [{
        "year": r.year,
        "month": r.month,
        "count": r.count
    } for r in records]
Example #38
0
def apply_get_stats(time_based='hour'):
    """
    提现申请统计
    :return:
    """
    # 按小时统计
    if time_based == 'hour':
        start_time, end_time = get_current_day_time_ends()
        hours = get_hours(False)
        hours_zerofill = get_hours()
        result = dict(zip(hours, [0] * len(hours)))
        rows = db.session \
            .query(func.hour(ApplyGet.create_time).label('hour'), func.sum(ApplyGet.money_apply)) \
            .filter(ApplyGet.create_time >= time_local_to_utc(start_time),
                    ApplyGet.create_time <= time_local_to_utc(end_time)) \
            .group_by('hour') \
            .limit(len(hours)) \
            .all()
        result.update(dict(rows))
        return [(hours_zerofill[i], result[hour])
                for i, hour in enumerate(hours)]
    # 按日期统计
    if time_based == 'date':
        start_time, end_time = get_current_month_time_ends()
        today = datetime.today()
        days = get_days(year=today.year, month=today.month, zerofill=False)
        days_zerofill = get_days(year=today.year, month=today.month)
        result = dict(zip(days, [0] * len(days)))
        rows = db.session \
            .query(func.day(ApplyGet.create_time).label('date'), func.sum(ApplyGet.money_apply)) \
            .filter(ApplyGet.create_time >= time_local_to_utc(start_time),
                    ApplyGet.create_time <= time_local_to_utc(end_time)) \
            .group_by('date') \
            .limit(len(days)) \
            .all()
        result.update(dict(rows))
        return [(days_zerofill[i], result[day]) for i, day in enumerate(days)]
    # 按月份统计
    if time_based == 'month':
        start_time, end_time = get_current_year_time_ends()
        months = get_months(False)
        months_zerofill = get_months()
        result = dict(zip(months, [0] * len(months)))
        rows = db.session \
            .query(func.month(ApplyGet.create_time).label('month'), func.sum(ApplyGet.money_apply)) \
            .filter(ApplyGet.create_time >= time_local_to_utc(start_time),
                    ApplyGet.create_time <= time_local_to_utc(end_time)) \
            .group_by('month') \
            .limit(len(months)) \
            .all()
        result.update(dict(rows))
        return [(months_zerofill[i], result[month])
                for i, month in enumerate(months)]
Example #39
0
def individual_graph(request):
    session = request.dbsession
    result = OrderedDict()
    today = datetime.date.today()
    begin_date = datetime.date(day=1, month=today.month, year=today.year - 1)
    end_date = datetime.date(day=1, month=today.month, year=today.year)

    query = select([
        func.count('*').label('nb'),
        func.year(Individual.creationDate).label('year'),
        func.month(Individual.creationDate).label('month')
    ]).where(
        and_(Individual.creationDate >= begin_date,
             Individual.creationDate < end_date)).group_by(
                 func.year(Individual.creationDate),
                 func.month(Individual.creationDate))
    data = session.execute(query).fetchall()
    for nb, y, m in sorted(data, key=operator.itemgetter(1, 2)):
        d = datetime.date(day=1, month=m, year=y).strftime('%b')
        result[' '.join([d, str(y)])] = nb
    return result
Example #40
0
def total_orders():
    total_orders = session.query(
        Order.IDPROD,
        case([(func.month(Order.DATAPED) < 4, 1),
              (func.month(Order.DATAPED) < 7, 2),
              (func.month(Order.DATAPED) < 10, 3)],
             else_=4), func.year(Order.DATAPED),
        func.sum(Order.QTDE)).group_by(
            case([(func.month(Order.DATAPED) < 4, 1),
                  (func.month(Order.DATAPED) < 7, 2),
                  (func.month(Order.DATAPED) < 10, 3)],
                 else_=4), func.year(Order.DATAPED), Order.IDPROD).all()

    for demand in total_orders:
        time = session.query(TimeDimension).filter(
            TimeDimension.TRIMESTRE == demand[1],
            TimeDimension.ANO == demand[2]).first()
        if (time is None):
            time = TimeDimension(TRIMESTRE=demand[1], ANO=demand[2])
            session.add(time)
        time = session.query(TimeDimension).filter(
            TimeDimension.TRIMESTRE == time.TRIMESTRE,
            TimeDimension.ANO == time.ANO).first()
        order = NumOrdersFact(IDPROD=demand[0],
                              IDTEMPO=time.ID,
                              TOTAL_PEDIDO=float(demand[3]))
        session.add(order)
    session.commit()
Example #41
0
    def dispatch_request(self, **kwargs):
        self.kwargs = kwargs
        basequery = self.get_queryset()

        income_data = (basequery.filter(Transaction.amount >= 0).with_entities(
            func.year(Transaction.date) + '/' + func.month(Transaction.date),
            func.sum(Transaction.amount)).group_by(
                func.year(Transaction.date),
                func.month(Transaction.date),
            ))
        outcome_data = (basequery.filter(Transaction.amount < 0).with_entities(
            func.year(Transaction.date) + '/' + func.month(Transaction.date),
            0 - func.sum(Transaction.amount)).group_by(
                func.year(Transaction.date),
                func.month(Transaction.date),
            ))
        all_data = (basequery.with_entities(
            func.year(Transaction.date) + '/' + func.month(Transaction.date),
            func.sum(Transaction.amount)).group_by(
                func.year(Transaction.date),
                func.month(Transaction.date),
            ))

        context = self.get_context_data()
        return render_template(self.template_name,
                               income_data=income_data,
                               outcome_data=outcome_data,
                               all_data=all_data,
                               **context)
Example #42
0
 def apply_timeseries(self, query, column=Revision.rev_timestamp):
     """
     Take a query and slice it up into equal time intervals
     
     Parameters
         query   : a sql alchemy query
         column  : defaults to Revision.rev_timestamp, specifies the timestamp
                   column to use for the timeseries
     
     Returns
         The query parameter passed in, with a grouping by the desired time slice
     """
     choice = self.timeseries.data
     
     if choice == TimeseriesChoices.NONE:
         return query
     
     query = query.add_column(func.year(column))
     query = query.group_by(func.year(column))
     
     if choice == TimeseriesChoices.YEAR:
         return query
     
     query = query.add_column(func.month(column))
     query = query.group_by(func.month(column))
     
     if choice == TimeseriesChoices.MONTH:
         return query
     
     query = query.add_column(func.day(column))
     query = query.group_by(func.day(column))
     
     if choice == TimeseriesChoices.DAY:
         return query
     
     query = query.add_column(func.hour(column))
     query = query.group_by(func.hour(column))
     
     if choice == TimeseriesChoices.HOUR:
         return query
 def apply_timeseries(self, query, rev=Revision):
     """
     Take a query and slice it up into equal time intervals
     
     Parameters
         query   : a sql alchemy query
         rev     : defaults to Revision, specifies the object that
                   contains the appropriate rev_timestamp
     
     Returns
         The query parameter passed in, with a grouping by the desired time slice
     """
     choice = self.timeseries.data
     
     if choice == TimeseriesChoices.NONE:
         return query
     
     query = query.add_column(func.year(rev.rev_timestamp))
     query = query.group_by(func.year(rev.rev_timestamp))
     
     if choice == TimeseriesChoices.YEAR:
         return query
     
     query = query.add_column(func.month(rev.rev_timestamp))
     query = query.group_by(func.month(rev.rev_timestamp))
     
     if choice == TimeseriesChoices.MONTH:
         return query
     
     query = query.add_column(func.day(rev.rev_timestamp))
     query = query.group_by(func.day(rev.rev_timestamp))
     
     if choice == TimeseriesChoices.DAY:
         return query
     
     query = query.add_column(func.hour(rev.rev_timestamp))
     query = query.group_by(func.hour(rev.rev_timestamp))
     
     if choice == TimeseriesChoices.HOUR:
         return query
Example #44
0
def populate_qtde():
    real_demand = session.query(
        Order.IDPROD,
            case([
            (func.month(Order.DATAPED) < 4, 1),
            (func.month(Order.DATAPED) < 7, 2),
            (func.month(Order.DATAPED) < 10, 3)
            ],
            else_=4),
            func.year(Order.DATAPED),
            func.sum(Order.QTDE)
        ).group_by(
            case([
            (func.month(Order.DATAPED) < 4, 1),
            (func.month(Order.DATAPED) < 7, 2),
            (func.month(Order.DATAPED) < 10, 3)
            ],
            else_=4),
            func.year(Order.DATAPED),
            Order.IDPROD
        ).all()
    for demand in real_demand:
        time = session.query(TimeDimension).filter(TimeDimension.TRIMESTRE == demand[1], TimeDimension.ANO == demand[2]).first()
        if (time is None):
            time = TimeDimension(TRIMESTRE = demand[1], ANO = demand[2])
            session.add(time)
            session.commit()
        time = session.query(TimeDimension).filter(TimeDimension.TRIMESTRE == time.TRIMESTRE, TimeDimension.ANO == time.ANO).first()
        order = engine.execute(insert(ProjectedDemandFact).values(IDPROD = demand[0], IDTEMPO = time.ID, QTDE = float(demand[3])).on_duplicate_key_update(QTDE = float(demand[3])))
    session.commit()
Example #45
0
def average_demand():
    total_orders = session.query(
        Order.IDPROD,
            case([
            (func.month(Order.DATAPED) < 4, 1),
            (func.month(Order.DATAPED) < 7, 2),
            (func.month(Order.DATAPED) < 10, 3)
            ],
            else_=4),
            func.year(Order.DATAPED),
            func.sum(Order.QTDE)
        ).group_by(
            case([
            (func.month(Order.DATAPED) < 4, 1),
            (func.month(Order.DATAPED) < 7, 2),
            (func.month(Order.DATAPED) < 10, 3)
            ],
            else_=4),
            func.year(Order.DATAPED),
            Order.IDPROD
        ).all()
    mean_list = []
    for total in total_orders:
        #[IDPROD, YEAR, TRIMESTER, AVERAGE_DEMAND]
        mean_list.append([total[0], total[2], total[1], float(total[3])/3.0])
    return mean_list
Example #46
0
def by_date():
    # This is query for grouping Issue per Date

    group_date = Csr.query.filter(Csr.status==1)
    group_date = group_date.add_columns(func.count(Csr.status), # sum/count total if status is Open
                                               func.year(Csr.report_date),
                                               func.month(Csr.report_date)
                                               )
    group_date = group_date.group_by(func.year(Csr.report_date),
                 func.month(Csr.report_date))
    group_date = group_date.all()

    date_data = []

    for element in group_date:
        date_data.append(
            {
                "date": "{}-{}".format(element[-2],element[-1]+1), # + 1 For Months, due to javascript months is 0-11
                #"date": dt.date(element[-2],element[-1],1),
                "open": int(element[1]),
            },
        )

    return date_data
Example #47
0
    def get(self, store_id):
        self.parser.add_argument('start_at', type=lib.arrow_datetime, help="开始时间必填", required=True, location="args")
        self.parser.add_argument('end_at', type=lib.arrow_datetime, help="结束时间", location="args")
        self.parser.add_argument('model', type=unicode, location="args", default="month")
        self.parser.add_argument('company_id', type=int, help="公司 ID", location="args")

        args = self.parser.parse_args()
        if args.model == 'day':
            order_query = models.db.session.query(
                func.count(1).label('total'),
                func.date_format(models.Order.created_at, '%Y年%m月%d日').label('date'),
            )
        elif args.model == 'week':
            order_query = models.db.session.query(
                func.count(1).label('total'),
                func.date_format(models.Order.created_at, '%Y年第%v周').label('date'),
            )
        else:
            order_query = models.db.session.query(
                func.count(1).label('total'),
                func.date_format(models.Order.created_at, '%Y年%m月').label('date'),
            )
        if not args.end_at:
            args.end_at = tool.now(False)

        order_query = order_query.filter(
            models.Order.created_at >= args.start_at.naive,
            models.Order.created_at <= args.end_at.naive,
        )
        if args.company_id:
            order_query = order_query.filter(
                models.Order.company_id == args.company_id,
            )
        if args.model == "day":
            order_query = order_query.group_by(func.day(models.Order.created_at))
        elif args.model == "week":
            order_query = order_query.group_by(func.week(models.Order.created_at))
        else:
            order_query = order_query.group_by(func.month(models.Order.created_at))
        xAxis = list()
        series_data = list()
        for i in order_query:
            xAxis.append(i.date)
            series_data.append(i.total)
        return tool.success({
            'xAxis': xAxis,
            'series_data': series_data,
        })
Example #48
0
def histogram(session, stat_key, days=365):
    today = util.utcnow().date()
    start = today - timedelta(days=days)
    month_key = (func.year(Stat.time), func.month(Stat.time))
    rows = (session.query(func.max(Stat.value), *month_key)
                   .filter((Stat.key == stat_key),
                           (Stat.time >= start))
                   .group_by(*month_key)
                   .order_by(*month_key))
    result = []
    for num, year, month in rows.all():
        # Use the first of the month to graph the value
        # for the entire month.
        day = timegm(date(year, month, 1).timetuple()) * 1000
        result.append([day, num])
    return [result]
Example #49
0
 def get_grouped_notices(user):
     """
     Group notices by year and month
     :param user:
     :return:
     """
     groups = list()
     notice_group = Notice.query.order_by(Notice.created_on.desc()).filter_by(user_id=user.id).\
         group_by(func.year(Notice.created_on), func.month(Notice.created_on)).all()
     for item in notice_group:
         notices = Notice.query.order_by(Notice.created_on.desc()).filter_by(user_id=user.id).filter(
             (extract('year', Notice.created_on) == item.created_on.year) &
             (extract('month', Notice.created_on) == item.created_on.month)
         )
         groups.append([item.created_on, notices])
     return groups
Example #50
0
def api_watt_month_view(request):
    start = datetime.datetime.now() - datetime.timedelta(30)
    query = DBSession.query(
        func.sum(WattLog.value).label("value"),
        func.count(WattLog.value).label("count"),
    )
    query = query.filter(WattLog.created_at > start)
    query = query.group_by(
        func.year(WattLog.created_at),
        func.month(WattLog.created_at),
        func.day(WattLog.created_at),
        func.hour(WattLog.created_at),
    )
    ret = 0
    for d in query.all():
        avg = d.value / d.count
        ret += avg

    return {
        "watt": ret,
    }
Example #51
0
    def dispatch_request(self, **kwargs):
        self.kwargs = kwargs
        basequery = self.get_queryset()

        income_data = (
            basequery
            .filter(Transaction.amount >= 0)
            .with_entities(
                func.year(Transaction.date) + '/' + func.month(Transaction.date),
                func.sum(Transaction.amount))
            .group_by(
                func.year(Transaction.date),
                func.month(Transaction.date),
            )
        )
        outcome_data = (
            basequery
            .filter(Transaction.amount < 0)
            .with_entities(
                func.year(Transaction.date) + '/' + func.month(Transaction.date),
                0 - func.sum(Transaction.amount))
            .group_by(
                func.year(Transaction.date),
                func.month(Transaction.date),
            )
        )
        all_data = (
            basequery
            .with_entities(
                func.year(Transaction.date) + '/' + func.month(Transaction.date),
                func.sum(Transaction.amount))
            .group_by(
                func.year(Transaction.date),
                func.month(Transaction.date),
            )
        )

        context = self.get_context_data()
        return render_template(
            self.template_name,
            income_data=income_data,
            outcome_data=outcome_data,
            all_data=all_data,
            **context
        )