示例#1
0
文件: views.py 项目: Dandresfs/sican
    def get_context_data(self, **kwargs):
        semana = Semana.objects.get(id=self.kwargs['semana_id'])

        inicio = Week(semana.creacion.isocalendar()[0],semana.creacion.isocalendar()[1]+1).tuesday()
        fin = Week(semana.creacion.isocalendar()[0],semana.creacion.isocalendar()[1]+2).monday()

        kwargs['start_date'] = inicio.strftime("%Y-%m-%d")
        kwargs['end_date'] = fin.strftime("%Y-%m-%d")
        kwargs['formador'] = Formador.objects.get(id=self.kwargs['id']).get_full_name()
        kwargs['numero_semana'] = semana.numero
        return super(CronogramaFormadorUpdateView,self).get_context_data(**kwargs)
示例#2
0
文件: views.py 项目: Dandresfs/sican
    def get_context_data(self, **kwargs):
        semana = Semana.objects.get(id=self.kwargs['semana_id'])
        kwargs['informes'] = self.request.user.has_perm('permisos_sican.formacion.cronograma.informes')
        kwargs['numero_semana'] = Semana.objects.get(id=self.kwargs['semana_id']).numero
        kwargs['id_semana'] = self.kwargs['semana_id']

        inicio = Week(semana.creacion.isocalendar()[0],semana.creacion.isocalendar()[1]+1).monday()
        fin = Week(semana.creacion.isocalendar()[0],semana.creacion.isocalendar()[1]+1).sunday()

        kwargs['fechas'] = inicio.strftime("%d de %B del %Y") + ' - ' + fin.strftime("%d de %B del %Y")

        return super(ListaCronogramasSemanaView,self).get_context_data(**kwargs)
示例#3
0
文件: views.py 项目: Dandresfs/sican
    def get_context_data(self, **kwargs):
        semana = Semana.objects.get(id=self.kwargs['semana_id'])
        kwargs['formador'] = Formador.objects.get(id=self.kwargs['id']).get_full_name()
        kwargs['semana_numero'] = semana.numero
        kwargs['id_semana'] = semana.id

        x, created = Semana.objects.get_or_create(numero = datetime.datetime.now().isocalendar()[1]+1)

        inicio = Week(semana.creacion.isocalendar()[0],semana.creacion.isocalendar()[1]+1).monday()
        fin = Week(semana.creacion.isocalendar()[0],semana.creacion.isocalendar()[1]+1).sunday()

        kwargs['fechas'] = inicio.strftime("%d de %B del %Y") + ' - ' + fin.strftime("%d de %B del %Y")
        kwargs['id_formador'] = self.kwargs['id']

        return super(CronogramaFormadorView,self).get_context_data(**kwargs)
示例#4
0
def decide_forecast_time(timeby, value):

    if timeby == "Daily":
        d = "2014" + value[4:]
        start = parse(d)
        starti = (parse(d) - parse('2014-1-1')).days * 24

        end = parse(d) + timedelta(days=1)
        endi = starti + 24

    elif timeby == "Weekly":
        d = Week(2011, 40).monday()
        s = d.strftime("%Y-%m-%d")
        d = "2014" + s[4:]
        start = parse(d)
        starti = (parse(d) - parse('2014-1-1')).days * 24
        end = parse(d) + timedelta(days=7)
        endi = starti + (7 * 24)
    else:
        d = get_first_date(value)
        start = parse(d)
        starti = (parse(d) - parse('2014-1-1')).days * 24
        end = parse(d) + timedelta(days=30)
        endi = starti + (30 * 24)

    if end.year == 2015:
        end = parse("2014-12-31")
        endi = starti + ((end - parse(d)).days * 24)

    return start, end, starti, endi
def decide_forecast_time(timeby,value):
		
	if timeby == "Daily":
		d = "2014"+value[4:]
		start = parse(d)
		starti = (parse(d)-parse('2014-1-1')).days * 24
	
		end = parse(d)+timedelta(days=1)
		endi = starti + 24
		
	elif timeby == "Weekly":
		d = Week(2011, 40).monday()
		s = d.strftime("%Y-%m-%d")
		d = "2014"+s[4:]
		start = parse(d)
		starti = (parse(d)-parse('2014-1-1')).days * 24
		end = parse(d)+timedelta(days=7)
		endi = starti + (7*24)
	else:
		d = get_first_date(value)
		start = parse(d)
		starti = (parse(d)-parse('2014-1-1')).days * 24
		end = parse(d)+timedelta(days=30)
		endi = starti + (30*24)
		
	if end.year == 2015:
		end = parse("2014-12-31")
		endi = starti + ((end-parse(d)).days *24)
	
	return start,end,starti,endi
示例#6
0
    def get_hiatus_weeks(air_weeks):
        iso_week_nums = []
        for week in air_weeks:
            dt = date(2018, int(week.split('/')[0]), int(week.split('/')[1]))
            wk = dt.isocalendar()[1]
            iso_week_nums.append(wk)

        index = 0
        hiatus_week_nums = []
        while index < len(iso_week_nums) - 1:
            if iso_week_nums[index + 1] - iso_week_nums[index] > 1:
                week_before = iso_week_nums[index]
                week_after = iso_week_nums[index + 1]
                weeks_to_add = week_after - week_before - 1
                for x in range(weeks_to_add):
                    week_before += 1
                    hiatus_week_nums.append(week_before)

            index += 1
        hiatus_weeks = []
        for week in hiatus_week_nums:
            d = Week(2018, week).monday()
            d = d.strftime('%m/%d')
            hiatus_weeks.append(d)
        return hiatus_weeks
 def get_date_from_index(index, date_format='%Y-%m-%d'):
     if index in WebsiteVersion.index_dates:
         date = WebsiteVersion.index_dates[index]
     else:
         dirty_date = index.replace('CC-MAIN-', '')
         dirty_date_parts = dirty_date.split('-')
         year = int(dirty_date_parts[0])
         week_no = int(dirty_date_parts[1])
         week_date = Week(year, week_no).monday()
         date = week_date.strftime(date_format)
     return date
示例#8
0
def decide_time(timeby, value):

    if timeby == "Daily":
        d = "2014" + value[4:]
        start = parse(d) - timedelta(days=3)

    elif timeby == "Weekly":
        d = Week(2011, 40).monday()
        s = d.strftime("%Y-%m-%d")
        d = "2014" + s[4:]
        start = parse(d) - timedelta(days=21)
    else:
        d = get_first_date(value)
        start = parse(d) - timedelta(days=90)
    if start.year == 2013:
        start = parse("2014-1-1")
    return start
def decide_time(timeby,value):
	
	if timeby == "Daily":
		d = "2014"+value[4:]
		start = parse(d)-timedelta(days=3)
		
	elif timeby == "Weekly":
		d = Week(2011, 40).monday()
		s = d.strftime("%Y-%m-%d")
		d = "2014"+s[4:]
		start = parse(d)-timedelta(days=21)
	else:
		d = get_first_date(value)
		start = parse(d)-timedelta(days=90)
	if start.year == 2013:
		start = parse("2014-1-1")
	return start
示例#10
0
    def _compute_commitment_date_from_week(self, week_number):
        """ Return friday because friday is the best day """

        year, week, day = datetime.now().isocalendar()
        if week_number < week:
            # If the week number is smaller than current week number,
            # jump to the next year
            year += 1

        #         week_string = "{}-{}-{}".format(year, week_number, 5)
        #         calculated_day = datetime.strptime(week_string, "%G-%V-%u")

        # Temporary fix
        iso_week = Week(year, week_number).day(4)
        calculated_day_iso = iso_week.strftime("%Y-%m-%d 00:00:00")

        return calculated_day_iso
示例#11
0
def storeData(created, closed, started, team, options):

    #only do cycle times if data available
    startedstr = ""
    started_date = 0
    if started != 0:
        startedstr = started.split('T')[0]
        started_date = datetime.strptime(startedstr, '%Y-%m-%d')

    createdstr = created.split('T')[0]
    closedstr = closed.split('T')[0]
    created_date = datetime.strptime(createdstr, '%Y-%m-%d')
    closed_date = datetime.strptime(closedstr, '%Y-%m-%d')
    isocal = datetime.date(closed_date).isocalendar()
    closedweek = Week(isocal[0], isocal[1]).monday()
    weeknum = closedweek.strftime("%Y%m%d")

    #thruput
    Teams[team][0][weeknum] += 1
    newval = Domains[options[1]][0][weeknum] + 1
    domain = options[1]
    #pprint.pprint("updating domain %s for weeknum %s to %d " % (domain, weeknum, newval))
    Domains[options[1]][0][weeknum] += 1
    Platforms[options[2]][0][weeknum] += 1
    Totals["Totals"][0][weeknum] += 1

    leadtime = len(list(get_working_days(created_date, closed_date)))
    #leadtime
    Teams[team][1].append(leadtime)
    Domains[options[1]][1].append(leadtime)
    Platforms[options[2]][1].append(leadtime)
    Totals["Totals"][1].append(leadtime)

    #cycle time if there
    if started != 0:
        cycletime = len(list(get_working_days(started_date, closed_date)))
        Teams[team][2].append(cycletime)
        Domains[options[1]][2].append(cycletime)
        Platforms[options[2]][2].append(cycletime)
        Totals["Totals"][2].append(cycletime)
示例#12
0
def storeData(created, closed, started, team, options):

    startedstr = ""
    started_date = 0

    created_date = cleanDate(created)

    #print(closed)
    closed_date = cleanDate(closed)
    #print(closed_date)

    isocal = datetime.date(closed_date).isocalendar()
    #print(isocal)
    closedweek = Week(isocal[0], isocal[1]).monday()
    #print(closedweek)
    weeknum = closedweek.strftime("%Y%m%d")

    #throughput
    #print(weeknum)
    Teams[team][0][weeknum] += 1
    #only add up stuff from projects, not teams, otherwise there'd be dupes
    if options[0] == "project":
        Totals["Totals"][0][weeknum] += 1

    #leadtime
    leadtime = len(list(get_working_days(created_date, closed_date)))
    Teams[team][1].append(leadtime)
    if options[0] == "project":
        Totals["Totals"][1].append(leadtime)

    #cycletime is approximatio from assigned date as point at which work started. This is not always true.
    if str(started) != "0":
        started_date = cleanDate(started)
        cycletime = len(list(get_working_days(started_date, closed_date)))
        Teams[team][2].append(cycletime)
        if options[0] == "project":
            Totals["Totals"][2].append(cycletime)
示例#13
0
team_instance = 'https://asos.visualstudio.com'
connection = VssConnection(base_url=team_instance, creds=credentials)
core_client = connection.get_client('vsts.core.v4_0.core_client.CoreClient')
wi_client = connection.get_client(
    'vsts.work_item_tracking.v4_0.work_item_tracking_client.WorkItemTrackingClient'
)

joptions = {'server': 'https://asosmobile.atlassian.net/'}

jiras = JIRA(joptions, basic_auth=(jirauser, jirapwd))

#get start date of week
#see https://stackoverflow.com/questions/5882405/get-date-from-iso-week-number-in-python
startdate = (datetime.today() + timedelta(days=-period)).isocalendar()
weekstart = Week(startdate[0], startdate[1]).monday()
startweek = weekstart.strftime("%Y%m%d")

enddate = datetime.today().isocalendar()
endweek = Week(enddate[0], enddate[1]).monday().strftime("%Y%m%d")

j = 0
weeks = []
weeks.append(startweek)
step = 0

while j < endweek:
    i = (datetime.today() + timedelta(days=(-period + step))).isocalendar()
    j = Week(i[0], i[1]).monday().strftime("%Y%m%d")
    #pprint.pprint(j)
    weeks.append(j)
    step += 7
示例#14
0
def get_working_days(a, b):
    rs = rrule.rruleset()
    rs.rrule(rrule.rrule(rrule.DAILY, dtstart=a,
                         until=b))  # Get all days between a and b
    rs.exrule(
        rrule.rrule(rrule.WEEKLY, dtstart=a,
                    byweekday=(rrule.SA, rrule.SU)))  # Exclude weekends
    rs.exrule(get_holidays(a, b))  # Exclude holidays
    return rs


#get start date of week
#see https://stackoverflow.com/questions/5882405/get-date-from-iso-week-number-in-python
startdate = (datetime.today() + timedelta(days=-period)).isocalendar()
weekstart = Week(startdate[0], startdate[1]).monday()
startweek = int(weekstart.strftime("%Y%m%d"))

enddate = datetime.today().isocalendar()
endweek = int(Week(enddate[0], enddate[1]).monday().strftime("%Y%m%d"))
#print("endweek:")
#print(endweek)

j = 0
weeks = []
weeks.append(str(startweek))
step = 0

while j < endweek:
    i = (datetime.today() + timedelta(days=(-period + step))).isocalendar()
    j = int(Week(i[0], i[1]).monday().strftime("%Y%m%d"))
    #pprint.pprint(j)
示例#15
0
def trial_balance(currency, groupby, period):
    if groupby == None:
        period = datetime.now()
        lastday = calendar.monthrange(period.year, period.month)[1]
        year = period.year
        month = period.month        
        period_beg = datetime(period.year, period.month, 1, 0, 0, 0, 0).strftime('%Y-%m-%d')
        period_end = datetime(period.year, period.month, lastday, 23, 59, 59, 999999).strftime('%Y-%m-%d')
        return redirect(
            url_for('bookkeeping.trial_balance',
            currency='Satoshis',
            groupby='Monthly',
            period='Current'))
            
    if groupby == 'Daily':
        periods = db.session \
            .query(\
                func.date_part('year', models.LedgerEntries.date), \
                func.date_part('month', models.LedgerEntries.date), \
                func.date_part('day', models.LedgerEntries.date)) \
            .order_by( \
                func.date_part('year', models.LedgerEntries.date).desc(), \
                func.date_part('month', models.LedgerEntries.date).desc(), \
                func.date_part('day', models.LedgerEntries.date).desc()) \
            .group_by( \
                func.date_part('year', models.LedgerEntries.date), \
                func.date_part('month', models.LedgerEntries.date), \
                func.date_part('day', models.LedgerEntries.date)) \
            .limit(7)

        periods = sorted([date(int(period[0]), int(period[1]), int(period[2])) for period in periods])
        if period == 'Current':
            period = periods[-1]
        else:
            period = datetime.strptime(period, "%Y-%m-%d")
        
        period_beg = datetime(period.year, period.month, period.day, 0, 0, 0, 0)
        period_end = datetime(period.year, period.month, period.day, 23, 59, 59, 999999)
        
        periods = sorted([period.strftime("%Y-%m-%d") for period in periods])
        period = period.strftime("%Y-%m-%d") 

    elif groupby == 'Weekly':
        periods = db.session \
            .query(\
                func.date_part('year', models.LedgerEntries.date), \
                func.date_part('week', models.LedgerEntries.date)) \
            .order_by( \
                func.date_part('year', models.LedgerEntries.date).desc(), \
                func.date_part('week', models.LedgerEntries.date).desc()) \
            .group_by( \
                func.date_part('year', models.LedgerEntries.date), \
                func.date_part('week', models.LedgerEntries.date)) \
            .limit(7)
        periods = sorted([Week(int(period[0]), int(period[1])).monday() for period in periods])
        
        if period == 'Current':
            period = periods[-1]
        else:
            period = period.split('-')
            period = Week(int(period[0]), int(period[1])+1).monday()
            
        period_beg = period - timedelta(days = period.weekday())
        period_end = period_beg + timedelta(days = 6)
        period_beg = datetime(period_beg.year, period_beg.month, period_beg.day, 0, 0, 0, 0)
        period_end = datetime(period_end.year, period_end.month, period_end.day, 23, 59, 59, 999999)
        periods = sorted([period.strftime("%Y-%W") for period in periods])
        period = period.strftime("%Y-%W") 

    elif groupby == 'Monthly':
        if period == 'Current':
            period = datetime.now()
        else:
            period = datetime.strptime(period, "%Y-%m")
        lastday = calendar.monthrange(period.year, period.month)[1]
        period_beg = datetime(period.year, period.month, 1, 0, 0, 0, 0)
        period_end = period = datetime(period.year, period.month, lastday, 23, 59, 59, 999999)

        periods = db.session \
            .query(\
                func.date_part('year', models.LedgerEntries.date), \
                func.date_part('month', models.LedgerEntries.date)) \
            .group_by( \
                func.date_part('year', models.LedgerEntries.date), \
                func.date_part('month', models.LedgerEntries.date)) \
            .all()
        periods = sorted([date(int(period[0]), int(period[1]), 1) for period in periods])
        periods = sorted([period.strftime("%Y-%m") for period in periods])
        period = period.strftime("%Y-%m")
        
    elif groupby == 'Annual':
        if period == 'Current':
            period = datetime.now()
        else:
            period = datetime.strptime(period, "%Y")
        period_beg = datetime(period.year, 1, 1, 0, 0, 0, 0)
        period_end = datetime(period.year, 12, 31, 23, 59, 59, 999999)
        
        periods = db.session \
            .query(func.date_part('year', models.LedgerEntries.date)) \
            .group_by(func.date_part('year', models.LedgerEntries.date)) \
            .all()
        periods = sorted([date(int(period[0]), 12, 31) for period in periods])
        periods = sorted([period.strftime("%Y") for period in periods])
        period = period.strftime("%Y")
    
    subaccounts = db.session \
        .query( \
            models.LedgerEntries.ledger, \
            func.sum(models.LedgerEntries.debit), \
            func.sum(models.LedgerEntries.credit)) \
        .filter(models.LedgerEntries.currency==currency) \
        .filter( models.LedgerEntries.date.between(period_beg, period_end)) \
        .group_by(models.LedgerEntries.ledger) \
        .all()
    totalDebits = 0
    totalCredits = 0
    for subaccount in subaccounts:
            totalDebits += subaccount[1]
            totalCredits += subaccount[2]
    
    return render_template('trial_balance.html',
        groupby=groupby,
        currency=currency,
        periods=periods,
        period=period,
        period_beg=period_beg,
        period_end=period_end,
        totalDebits=totalDebits,
        totalCredits=totalCredits,
        subaccounts=subaccounts)