示例#1
0
class WeekView(AjaxableViewMixin, CalendarMixin, ListView):
    model = events.Event
    context_object_name = 'events'

    template_name = 'gamenightplanner/calendar/week.html'

    def dispatch(self, request, year, week, *args, **kwargs):
        self.week = Week(int(year), int(week))
        return super().dispatch(request, *args, **kwargs)

    def get_queryset(self):
        return self.model.objects.filter(date__date__gte=self.week.monday(),
                                         date__date__lte=self.week.sunday())

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        context['year'] = self.week.year
        context['month'] = self.week.monday().month
        context['week'] = self.week
        context['daysofweeknames'] = self.DAYSOFWEEK
        context['daysofweekshort'] = self.DAYSOFWEEK_SHORT
        context['current_url'] = self.week_link(self.week)
        context['next_url'] = self.week_link(self.week+1)
        context['prev_url'] = self.week_link(self.week-1)
        return context
示例#2
0
def week_start_end_seconds(year_number, week_number):
    week_start = Week(year_number, week_number)
    week_end = Week(year_number if week_number < 52 else year_number + 1,
                    week_number + 1 if week_number < 52 else 1)
    time = datetime.datetime.min.time()
    return (int(
        datetime.datetime.combine(week_start.monday(), time,
                                  tzinfo=tz.tzutc()).timestamp()),
            int(
                datetime.datetime.combine(week_end.monday(),
                                          time,
                                          tzinfo=tz.tzutc()).timestamp()))
示例#3
0
    def execute_goals(self):

        week_day = datetime.datetime.now().isocalendar()[1]
        w = Week(datetime.datetime.now().year, week_day)
        start_date = w.monday()
        end_date = w.sunday()

        result = Records.objects.filter(
            create_date_time__date__range=(start_date, end_date),
            type_entry__id=1).annotate(total_value=Sum("debit"))

        try:

            total_debit = 0
            for a in result:
                total_debit += a.total_value if a.total_value else 0

            logging.warning(f"total_debit: {total_debit}")

            can_use = 770 - total_debit

            loop = asyncio.get_event_loop()

            bot = telepot.aio.Bot(settings.TELEGRAM_TOKEN)

            loop.run_until_complete(
                bot.sendMessage(
                    self.user_id,
                    f"Você ainda pode gastar {can_use} doas 770 reais estipulados para a semana."
                ))

        except BaseException as e:
            logging.exception("Error na meta", e)
示例#4
0
    def getPrevWeekString(weekString):

        annee = int(weekString[:4])
        # on récupère le numéro de la semaine
        sem = int(weekString[-2:])

        week = Week(annee, sem)
        lundi = week.monday()

        dimanchePrecedent = lundi + timedelta(days=-1)

        previousYear = dimanchePrecedent.strftime("%Y")

        if (int(previousYear) == annee):
            if (sem - 1) <= 9:
                prevWeekString = previousYear + "0" + str(sem - 1)
            else:
                prevWeekString = previousYear + str(sem - 1)

        else:
            prevWeekNum = dimanchePrecedent.isocalendar()[1]
            if prevWeekNum <= 9:
                prevWeekString = previousYear + "0" + str(prevWeekNum)
            else:
                prevWeekString = previousYear + str(prevWeekNum)

        return prevWeekString
示例#5
0
def get_week_agenda(model, queryset, start_date):
    """
    Get list of events that will occur in the given week.

    :param queryset: EventInstance queryset
    :param start_date: period start_date
    :type start_date: datetime.datetime()
    :return: data dictionary
    """
    period = Week(start_date.year, start_date.date().isocalendar()[1])
    end_date = utils.date_to_datetime(period.sunday(), 'max')
    start_date = utils.date_to_datetime(period.monday())
    return {
        'start_date':
        start_date,
        'end_date':
        end_date,
        'scope':
        'Week',
        'items':
        model.objects.in_date_range(start_date,
                                    end_date).filter(event__in=queryset),
        'next_date':
        start_date + timedelta(days=7),
        'previous_date':
        start_date + timedelta(days=-7),
    }
示例#6
0
文件: stats.py 项目: sungitly/isr
def convert_to_catergory_str(year, week):
    isoweek = Week(year, week)
    monday = isoweek.monday()
    sunday = isoweek.sunday()
    return monday.strftime(
        DATE_FORMAT_SHORT_MONTH_DAY) + '~' + sunday.strftime(
            DATE_FORMAT_SHORT_MONTH_DAY)
示例#7
0
def _task_completed(user_id, task_id, year, week_number):
    
    """ Return true if a task is completed for this specific user and week """
    
    week = Week(year, week_number)
    monday = week.monday().isoformat()
    next_monday = week.sunday() + timedelta(days=1)
    return _db.is_task_completed(user_id, task_id, monday, next_monday)
示例#8
0
def make_p(current_year_num, begin_week_num):
    current_week = Week(current_year_num, begin_week_num)
    commit(current_week.monday())
    commit(current_week.tuesday())
    commit(current_week.wednesday())
    commit(current_week.thursday())
    commit(current_week.friday())
    current_week = Week(current_year_num, begin_week_num + 1)
    commit(current_week.monday())
    commit(current_week.wednesday())
    current_week = Week(current_year_num, begin_week_num + 2)
    commit(current_week.monday())
    commit(current_week.wednesday())
    current_week = Week(current_year_num, begin_week_num + 3)
    commit(current_week.monday())
    commit(current_week.tuesday())
    commit(current_week.wednesday())
示例#9
0
def make_p(current_year_num, begin_week_num):
  current_week = Week(current_year_num, begin_week_num)
  commit(current_week.monday())
  commit(current_week.tuesday())
  commit(current_week.wednesday())
  commit(current_week.thursday())
  commit(current_week.friday())
  current_week = Week(current_year_num, begin_week_num + 1 )
  commit(current_week.monday())
  commit(current_week.wednesday())
  current_week = Week(current_year_num, begin_week_num + 2 )
  commit(current_week.monday())
  commit(current_week.wednesday())
  current_week = Week(current_year_num, begin_week_num + 3 )
  commit(current_week.monday())
  commit(current_week.tuesday())
  commit(current_week.wednesday())
示例#10
0
def get_week_range(start_date):
    """
    Get the start and end datetimes for the week
    :param start_date: period start_date
    :type start_date: datetime.datetime()
    :return: tuple start_datetime, end_datetime
    """
    period = Week(start_date.year, start_date.date().isocalendar()[1])
    start_date = utils.date_to_datetime(period.monday())
    end_date = utils.date_to_datetime(period.sunday(), 'max')
    return start_date, end_date
示例#11
0
def get_ini_and_end_date(g: Goal) -> Tuple:

    if g.period == 1:
        week_day = datetime.datetime.now().isocalendar()[1]
        w = Week(datetime.datetime.now().year, week_day)
        start_date = w.monday()
        end_date = w.sunday()

        return start_date, end_date

    raise Exception("Invalid goal.")
示例#12
0
def spent_time_by_day_of_the_week(request,
                                  member_id=None,
                                  week_of_year=None,
                                  board_id=None):
    user_boards = get_user_boards(request.user)
    if member_id is None:
        if user_is_member(request.user):
            member = request.user.member
        else:
            member = Member.objects.filter(boards__in=user_boards)[0]
    else:
        member = Member.objects.filter(boards__in=user_boards).distinct().get(
            id=member_id)

    if week_of_year is None:
        now = timezone.now()
        today = now.date()
        week_of_year_ = get_iso_week_of_year(today)
        week_of_year = "{0}W{1}".format(today.year, week_of_year_)

    y, w = week_of_year.split("W")
    week = Week(int(y), int(w))
    start_of_week = week.monday()
    end_of_week = week.sunday()

    chart_title = u"{0}'s spent time in week {1} ({2} - {3})".format(
        member.external_username, week_of_year,
        start_of_week.strftime("%Y-%m-%d"), end_of_week.strftime("%Y-%m-%d"))
    board = None
    if board_id:
        board = user_boards.get(id=board_id)
        chart_title += u" for board {0}".format(board.name)

    spent_time_chart = pygal.HorizontalBar(title=chart_title,
                                           legend_at_bottom=True,
                                           print_values=True,
                                           print_zeroes=False,
                                           human_readable=True)

    try:
        day = start_of_week
        while day <= end_of_week:
            member_spent_time = member.get_spent_time(day, board)
            spent_time_chart.add(u"{0}".format(day.strftime("%A")),
                                 member_spent_time)
            day += datetime.timedelta(days=1)
    except AssertionError:
        spent_time_chart.no_data_text = u"No developers for this board.\nCheck members' attributes."
        spent_time_chart.style = DefaultStyle(no_data_font_size=20)
        return spent_time_chart.render_django_response()

    return spent_time_chart.render_django_response()
示例#13
0
 def view_hours_of_week(self, ):  # pylint: disable=no-self-use
     # ~ logging.warning("request.args:{}".format(request.args))
     # ~ flash("request.args:{}".format(request.args))
     # ~ 'selected_week', '2020-W05'
     selected_week = request.args.get('selected_week')
     year, week_n = selected_week.split('-W')
     w_start = Week(int(year), int(week_n))
     t0 = w_start.monday().isoformat()
     t1 = (w_start + 1).monday().isoformat()
     # ~ admin.py:340: t0:2020-01-27, t1:2020-02-03
     # ~ /worktime/?flt1_user_user_name_equals=Giovanni%20A
     # ~ &flt2_date_between=2020-01-27+00%3A00%3A00+to+2020-02-03+23%3A59%3A59
     url_ = compile_filtered_url('worktime', [
         ('date', 'between', '{}+00:00:00+to+{}+00:00:00'.format(t0, t1)),
         ('user_user_name', 'equals', flask_login.current_user.name),
     ])
     # ~ logging.warning("t0:{}, t1:{}".format(t0, t1))
     # ~ logging.warning("url_:{}".format(url_))
     return redirect(url_)
示例#14
0
def fetch_weeks_data(week_number):
    """Takes as parameter a week number (so 1 through 52) and returns a list of data 
	point objects that ocurred in that week. It currently assumes the year is 2015; this will
	need to be refactored in later iterations."""

    dbsession = connect()

    requested_week = Week(2015, week_number)

    # These functions return datetime objects. I <3 the isoweek library zomg.
    startbound = requested_week.monday()
    endbound = requested_week.saturday(
    )  #This doesn't *include* data from the endbound day, just up to that day.

    one_weeks_data = dbsession.query(HRDataPoint).filter(
        HRDataPoint.start_datetime > startbound,
        HRDataPoint.start_datetime < endbound).all()

    return one_weeks_data
示例#15
0
 def from_etree(self, root):
     if len(root) != 1:
         raise TypeError("Date containers should have one child")
     if root[0].tag != "{%s}%s" % (NS_UDT, "DateTimeString"):
         raise TypeError("Tag %s not recognized" % root[0].tag)
     self.format = root[0].attrib['format']
     if self.format == '102':
         self.value = datetime.strptime(root[0].text, '%Y%m%d').date()
     elif self.format == '616':
         if sys.version_info < (3, 6):
             from isoweek import Week
             w = Week(int(root[0].text[:4]), int(root[0].text[4:]))
             self.value = w.monday()
         else:
             self.value = datetime.strptime(root[0].text + '1',
                                            '%G%V%u').date()
     else:
         raise TypeError("Date format %s cannot be parsed" %
                         root[0].attrib['format'])
     return self
示例#16
0
def cleaning_schedule(request, room_id):
    room = get_object_or_404(Room, pk=room_id)  
    members = RoomMembers.objects.filter(room=room_id) 
    takenWeeks = Tasks.objects.filter(room=room_id).filter(type="clean").filter(task="weekly cleaning")
    #get all weeks of the year (year hardcoded)
    weeks = []
    i = 1
    while i <= 52:
        w = Week(2021, i)
        week = {'week': w.isoformat(), 'weekStart': w.monday().isoformat(), 'weekEnd': w.sunday().isoformat(), 'deadline': None, 'user': None  }
        weeks.append(week)
        i += 1

    context={  
        'user': request.user,   
        'room': room,
        'members': members,
        'weeks': weeks,
        'takenWeeks': takenWeeks
    }     
    return render(request, 'kitchen_app/cleaning_schedule.html', context)
示例#17
0
def generate_days_index(week_number):
    """Function returns a list of dates for the requested week as strings. 
	Writing to resolve GitHub issue #5. The controller will call this so the view
	knows the correct order to display the is_stressful booleans."""

    week = Week(2015, week_number)

    days = [
        week.monday(),
        week.tuesday(),
        week.wednesday(),
        week.thursday(),
        week.friday()
    ]

    days_index = []

    for each in days:
        # stringify the date and add it to the list to return
        days_index.append(str(each))

    return days_index
示例#18
0
文件: stats.py 项目: sungitly/isr
def get_weekly_stats(week, year, store_id, stats_names):
    result = {}

    for stats_name in stats_names:
        weekly_stats = None
        isoweek = Week(year, week)
        monday = isoweek.monday()
        sunday = isoweek.sunday()
        if stats_name != 'ta_settings':
            weekly_stats = StoreStats.get_weekly_store_stats(
                monday.strftime(WEEK_FORMAT), store_id, stats_name)

        if not weekly_stats:
            weekly_stats = stats_meta.get(stats_name)(monday, sunday, store_id)
            # if the week >= this week, do not cache the result because the result will be changed.
            if week < datetime.datetime.now().isocalendar()[1]:
                StoreStats.set_weekly_store_stats(monday.strftime(WEEK_FORMAT),
                                                  store_id, stats_name,
                                                  weekly_stats)

        result[stats_name] = weekly_stats

    return result
示例#19
0
    def getAllWeekDays(weekString, dateFormat):
        """ Cette fonction prend en paramètre une semaine au format aaaass et 
        retourne la liste des jours de cette semaine au format spécifié 
        """

        #on récupère l'année c'est à dire les 4 premiers caractères
        annee = int(weekString[:4])

        # on récupère le numéro de la semaine
        sem = int(weekString[-2:])

        week = Week(annee, sem)
        lundi = week.monday()

        jours = []

        jours.append(lundi.strftime(dateFormat))

        for i in range(1, 7):
            tmpDate = lundi + timedelta(days=i)
            jours.append(tmpDate.strftime(dateFormat))

        return jours
示例#20
0
    def test_days(self):
        w = Week(2011, 20)
        self.assertEqual(w.monday().isoformat(),    "2011-05-16")
        self.assertEqual(w.tuesday().isoformat(),   "2011-05-17")
        self.assertEqual(w.wednesday().isoformat(), "2011-05-18")
        self.assertEqual(w.thursday().isoformat(),  "2011-05-19")
        self.assertEqual(w.friday().isoformat(),    "2011-05-20")
        self.assertEqual(w.saturday().isoformat(),  "2011-05-21")
        self.assertEqual(w.sunday().isoformat(),    "2011-05-22")

        self.assertEqual(w.day(0).isoformat(),  "2011-05-16")
        self.assertEqual(w.day(-1).isoformat(), "2011-05-15")
        self.assertEqual(w.day(10).isoformat(), "2011-05-26")

        days = w.days()
        self.assertEqual(len(days), 7)
        self.assertEqual(days[0].isoformat(), "2011-05-16")
        self.assertEqual(days[-1].isoformat(), "2011-05-22")

        from datetime import date
        self.assertFalse(w.contains(date(2011,5,15)))
        self.assertTrue(w.contains(date(2011,5,16)))
        self.assertTrue(w.contains(date(2011,5,22)))
        self.assertFalse(w.contains(date(2011,5,23)))
    def test_days(self):
        w = Week(2011, 20)
        self.assertEqual(w.monday().isoformat(), "2011-05-16")
        self.assertEqual(w.tuesday().isoformat(), "2011-05-17")
        self.assertEqual(w.wednesday().isoformat(), "2011-05-18")
        self.assertEqual(w.thursday().isoformat(), "2011-05-19")
        self.assertEqual(w.friday().isoformat(), "2011-05-20")
        self.assertEqual(w.saturday().isoformat(), "2011-05-21")
        self.assertEqual(w.sunday().isoformat(), "2011-05-22")

        self.assertEqual(w.day(0).isoformat(), "2011-05-16")
        self.assertEqual(w.day(-1).isoformat(), "2011-05-15")
        self.assertEqual(w.day(10).isoformat(), "2011-05-26")

        days = w.days()
        self.assertEqual(len(days), 7)
        self.assertEqual(days[0].isoformat(), "2011-05-16")
        self.assertEqual(days[-1].isoformat(), "2011-05-22")

        from datetime import date
        self.assertFalse(w.contains(date(2011, 5, 15)))
        self.assertTrue(w.contains(date(2011, 5, 16)))
        self.assertTrue(w.contains(date(2011, 5, 22)))
        self.assertFalse(w.contains(date(2011, 5, 23)))
示例#22
0
def start_of_week_of_year(week, year):
    week = Week(year, week)
    return week.monday()
示例#23
0
def normalize_record(r):
    date = datetime.strptime(r['Date'], "%Y-%m-%d")
    weekday = date.weekday()
    r['NowDayFromStart'] = (date - START_DATE).days
    r['NowDayOfWeek'] = int(weekday)
    r['NowDayOfMonth'] = int(date.day)
    r['NowMonth'] = int(date.month)
    r['NowYear'] = int(date.year)
    r['NowIsWeekend'] = int(weekday >= 5)
    r['NowWeek'] = int(date.date().isocalendar()[1])
    del r['Date'], r['DayOfWeek']

    r['Store'] = int(r['Store'])
    r['Promo'] = int(r['Promo'])
    r['SchoolHoliday'] = int(r['SchoolHoliday'])
    if 'Customers' in r:
        r['Customers'] = int(r['Customers'])
    if 'Sales' in r:
        r['Sales'] = int(r['Sales'])
    if 'Id' in r:
        r['Id'] = int(r['Id'])

    (
        r['IsOpenYes'],
        r['IsOpenNo'],
        r['IsOpenUnknown'],
    ) = one_hot_encode(r['Open'], ('1', '0', ''))
    del r['Open']

    (
        r['StateHolidayNone'],
        r['StateHolidayPublic'],
        r['StateHolidayEaster'],
        r['StateHolidayChristmas'],
    ) = one_hot_encode(r['StateHoliday'], ('0', 'a', 'b', 'c'))
    del r['StateHoliday']

    r['Promo2'] = int(r['Promo2'])
    r['CompetitionDistance'] = int(r['CompetitionDistance']) if r['CompetitionDistance'] else sys.maxint

    if r['CompetitionOpenSinceMonth'] and r['CompetitionOpenSinceYear']:
        competition_open_since = datetime(int(r['CompetitionOpenSinceYear']), int(r['CompetitionOpenSinceMonth']), 1)
        r['CompetitionOpenAvailable'] = 1
    else:
        competition_open_since = datetime(2010, 1, 1)
        r['CompetitionOpenAvailable'] = 0
    r['CompetitionOpenDays'] = int((date - competition_open_since).days)
    r['CompetitionOpenSinceMonth'] = int(competition_open_since.month)
    r['CompetitionOpenSinceYear'] = int(competition_open_since.year)

    (
        r['AssortmentBasic'],
        r['AssortmentExtra'],
        r['AssortmentExtended'],
    ) = one_hot_encode(r['Assortment'], ('a', 'b', 'c'))
    del r['Assortment']

    (
        r['StoreTypeA'],
        r['StoreTypeB'],
        r['StoreTypeC'],
        r['StoreTypeD'],
    ) = one_hot_encode(r['StoreType'], ('a', 'b', 'c', 'd'))
    del r['StoreType']

    if r['Promo2SinceYear'] and r['Promo2SinceWeek']:
        promo2_since = Week(int(r['Promo2SinceYear']), int(r['Promo2SinceWeek']))
        r['Promo2SinceAvailable'] = 1
    else:
        promo2_since = Week(2000, 1)
        r['Promo2SinceAvailable'] = 0
    promo2_since = datetime.combine(promo2_since.monday(), time(0, 0))
    r['Promo2RunDays'] = int((date - promo2_since).days)
    r['Promo2SinceWeek'] = int(promo2_since.date().isocalendar()[1])
    r['Promo2SinceMonth'] = int(promo2_since.month)
    r['Promo2SinceYear'] = int(promo2_since.year)
    del r['Promo2']

    (
        r['Promo2IntervalJanAprJulOct'],
        r['Promo2IntervalFebMayAugNov'],
        r['Promo2IntervalMarJunSepDec'],
    ) = one_hot_encode(r['PromoInterval'], tuple(PROMO2_INTERVAL))
    r['Promo2Now'] = int(r['NowMonth'] in PROMO2_INTERVAL.get(r['PromoInterval'], set()))
    del r['PromoInterval']
示例#24
0
文件: date.py 项目: sungitly/isr
def get_last_monday(date):
    last_week = date + relativedelta(weeks=-1)
    date_cal = last_week.isocalendar()
    isoweek = Week(date_cal[0], date_cal[1])
    return isoweek.monday()
示例#25
0
def spent_time_by_week(current_user, week_of_year=None, board=None):
    if week_of_year is None:
        now = timezone.now()
        today = now.date()
        week_of_year_ = get_iso_week_of_year(today)
        week_of_year = "{0}W{1}".format(today.year, week_of_year_)

    # Caching
    chart_uuid = "members.spent_time_by_week-{0}-{1}".format(
        current_user.id, week_of_year,
        board.id if board else "user-{0}".format(current_user.id))
    chart = CachedChart.get(board=board, uuid=chart_uuid)
    if chart:
        return chart

    y, w = week_of_year.split("W")
    week = Week(int(y), int(w))
    start_of_week = week.monday()
    end_of_week = week.sunday()

    chart_title = u"Spent time in week {0} ({1} - {2})".format(
        week_of_year, start_of_week.strftime("%Y-%m-%d"),
        end_of_week.strftime("%Y-%m-%d"))
    if board:
        chart_title += u" for board {0}".format(board.name)

    spent_time_chart = pygal.HorizontalBar(title=chart_title,
                                           legend_at_bottom=True,
                                           print_values=True,
                                           print_zeroes=False,
                                           human_readable=True)

    report_filter = {"date__year": y, "week_of_year": w}
    if board:
        report_filter["board_id"] = board.id

    team_spent_time = 0

    if board is None:
        boards = get_user_boards(current_user)
    else:
        boards = [board]
    members = Member.objects.filter(
        boards__in=boards, is_developer=True).distinct().order_by("id")
    for member in members:
        member_name = member.external_username
        daily_spent_times = member.daily_spent_times.filter(**report_filter)
        spent_time = daily_spent_times.aggregate(
            Sum("spent_time"))["spent_time__sum"]
        if spent_time is None:
            spent_time = 0
        team_spent_time += spent_time

        if spent_time > 0:
            spent_time_chart.add(u"{0}'s spent time".format(member_name),
                                 spent_time)

    spent_time_chart.add(u"Team spent time", team_spent_time)

    chart = CachedChart.make(board=board,
                             uuid=chart_uuid,
                             svg=spent_time_chart.render(is_unicode=True))
    return chart.render_django_response()
示例#26
0
    def insertC2CSTKAWeek(self, weekString):
        
        print(time.strftime("%d/%m/%Y %H:%M:%S"), "Début calculs préalables à l'insertion d'une nouvelle semaine dans c2CSTKA", weekString)  
        annee = int(weekString[:4])        
        # on récupère le numéro de la semaine
        sem = int(weekString[-2:])    

        week = Week(annee, sem)
        lundi = week.monday()

        dimanchePrecedent = lundi + timedelta(days=-1)

        previousYear = dimanchePrecedent.strftime("%Y")

        if(int(previousYear) == annee):
            if(sem - 1) <= 9:
                prevWeekString = previousYear+"0"+str(sem - 1)
            else:
                prevWeekString = previousYear+str(sem-1)
        
        else:
            prevWeekNum = dimanchePrecedent.isocalendar()[1]
            if prevWeekNum <= 9:
                prevWeekString = previousYear + "0"+ str(prevWeekNum)
            else:
                prevWeekString = previousYear+str(prevWeekNum) 

        print(time.strftime("%d/%m/%Y %H:%M:%S"), "Récupération de la semaine précédente", prevWeekString) 

        sessionFactory = SessionFactory()
        session = sessionFactory.Session()
        print(time.strftime("%d/%m/%Y %H:%M:%S"), ">>>>>>>> Récupération des informations de la semaine précédente ", prevWeekString)
        stkasPreviousWeekList = session.query(DDC2CSemSTKA).filter_by(sem = prevWeekString)
        print(time.strftime("%d/%m/%Y %H:%M:%S"), ">>>>>>>> Fin Récupération des informations de la semaine précédente ", prevWeekString)
        

        stkasPreviousWeek = dict()

        for stkaPrev in stkasPreviousWeekList:
            stkasPreviousWeek[stkaPrev.stkaMsisdn] = stkaPrev

        print(time.strftime("%d/%m/%Y %H:%M:%S"), ">>>>>>>> Récupération des informations de la semaine en cours ", weekString)
        stkasWeek = self.getC2CSTKAWeek(weekString)
        print(time.strftime("%d/%m/%Y %H:%M:%S"), ">>>>>>>> Fin de la récupération des informations de la semaine en cours ", weekString)
        toAdd = []

        if len(stkasPreviousWeek) > 0:
            #si le tableau de la semaine précédente n'est pas vide
            #on met à jour les informations relatives au mois précédent
            for stka, val in stkasWeek.items():
                if stkasPreviousWeek.get(stka) != None:
                    val.c2cS1 = stkasPreviousWeek.get(stka).c2c
                    val.evolS1 = float(val.c2c) - float(stkasPreviousWeek.get(stka).c2c)                
                toAdd.append(val)    
        else:
            for stka, val in stkasWeek.items():
                toAdd.append(val)           
                 
        try:
            print(time.strftime("%d/%m/%Y %H:%M:%S"), "Début insertion ")
            session.add(toAdd)
            session.commit()
            print(time.strftime("%d/%m/%Y %H:%M:%S"), "Fin insertion ")
            print(time.strftime("%d/%m/%Y %H:%M:%S"), "Fin insertions avec succès")
        except Exception as ex:
            self.view_traceback()
            print(time.strftime("%d/%m/%Y %H:%M:%S"), "Echec de l'insertion, annulation des modifications")
            session.rollback()
        finally:
            session.close()
            print(time.strftime("%d/%m/%Y %H:%M:%S"), "Session close")                 
示例#27
0
        re.sub(ur'<\!--.+?-->', ur'',
               unicode(infoboks.parameters[commonargs['week']])).strip())
    if infoboks.has_param(commonargs['week2']):
        endweek = re.sub(
            ur'<\!--.+?-->', ur'',
            unicode(infoboks.parameters[commonargs['week2']])).strip()
        if endweek == '':
            endweek = startweek
    else:
        endweek = startweek
    endweek = int(endweek)

    startweek = Week(year, startweek)
    endweek = Week(year, endweek)
    start = wiki_tz.localize(
        datetime.combine(startweek.monday(), dt_time(0, 0, 0)))
    end = wiki_tz.localize(
        datetime.combine(endweek.sunday(), dt_time(23, 59, 59)))
elif infoboks.has_param(ibcfg['start']) and infoboks.has_param(ibcfg['end']):
    startdt = infoboks.parameters[ibcfg['start']].value
    enddt = infoboks.parameters[ibcfg['end']].value
    start = wiki_tz.localize(
        datetime.strptime(startdt + ' 00 00 00', '%Y-%m-%d %H %M %S'))
    end = wiki_tz.localize(
        datetime.strptime(enddt + ' 23 59 59', '%Y-%m-%d %H %M %S'))
else:
    log('!! fant ikke datoer')
    sys.exit(0)

year = start.isocalendar()[0]
startweek = start.isocalendar()[1]
示例#28
0
def admin_schedule(request, room_id):
    assert is_room_admin(request.user, room_id), 'Member routed to member view.'
    room = get_object_or_404(Room, pk=room_id)  
    members = RoomMembers.objects.filter(room=room_id) 

    # get all weeks that have cleaning schedule
    takenWeeks = Tasks.objects.filter(room=room_id).filter(type="clean").filter(task="weekly cleaning")

    #get all weeks of the year
    weeks = []
    i = 1
    while i <= 52:
        w = Week(2021, i)
        week = {'week': w.isoformat(), 'weekStart': w.monday().isoformat(), 'weekEnd': w.sunday().isoformat(), 'deadline': None, 'user': None  }
        weeks.append(week)
        i += 1

    context={  
        'user': request.user,   
        'room': room,
        'members': members,
        'weeks': weeks,
        'takenWeeks': takenWeeks
    }

    taken = False
  
    # assign a week to a room member for cleaning
    if request.method == 'POST' and 'addBtn' in request.POST:
        try: 
            dueToWeek = Week.fromstring(request.POST['week'])
            if takenWeeks: 
                for takenWeek in takenWeeks:
                    if dueToWeek.isoformat() == takenWeek.deadline:
                        context['error'] = "Week is taken"
                        taken = True
               
            if taken == False:
                #create a task for the week of cleaning
                assignedUser = request.POST['members_choice']
                user = get_object_or_404(User, username=assignedUser)  
                Tasks.create(user, room, "weekly cleaning", "clean", dueToWeek)

                #create a list of subtasks
                queryset = Tasks.objects.filter(room=room_id)
                task = get_object_or_404(queryset, deadline=dueToWeek.isoformat())
                list = get_object_or_404(List, pk=1)
                listTasks = ListTasks.objects.filter(list=list)
                for listTask in listTasks:
                    Subtasks.create(task, listTask.task)
                return HttpResponseRedirect(reverse('kitchen_app:admin_schedule', args=(room.id,)))
        except IntegrityError as e:
            context['error'] = "Week is taken"

    # remove an assigned week
    if request.method == 'POST' and 'removeBtn' in request.POST:
        takenWeekID = request.POST['takenWeekID']
        task =  get_object_or_404(Tasks, pk=takenWeekID)
        task.delete()
        return HttpResponseRedirect(reverse('kitchen_app:admin_schedule', args=(room.id,)))
                        
    return render(request, 'kitchen_app/admin_cleaning_schedule.html', context)
示例#29
0
 def for_week(self, year, week_no):
     from isoweek import Week
     week = Week(year, week_no)
     return TimeEntry.objects.filter(date__gte=week.monday(), date__lte=week.sunday())
示例#30
0
#!/usr/bin/python3

#https://pypi.org/project/isoweek/

from isoweek import Week

w = Week(2018, 45)
#print("Week %s starts on %s" % (w, w.monday()))
print("Week %s starts on %s" % (w, w.monday().strftime('%Y%m%d')))
#print("Current week number is", Week.thisweek().week)
#print("Next week is", Week.thisweek() + 1)
示例#31
0
    def __init__(self, parent, controller):
        Frame.__init__(self, parent, bg="#f8f8f8")
        menu_frame = Frame(self, bg="#e7e7e7")
        menu_frame.pack(fill='both')

        load = Image.open("home.jpg")
        render = ImageTk.PhotoImage(load)
        from landingpage import LandingPage
        img = Button(menu_frame, image=render, borderwidth=0, highlightthickness=0, highlightbackground="#e7e7e7",
                     command=lambda: controller.show_frame(LandingPage))
        img.image = render
        img.grid(row=0, column=0, sticky="nsew")

        label = Label(menu_frame, text="Meal Planner", font=LARGE_FONT, bg="#e7e7e7", fg="#272822")
        label.grid(row=0, column=1, sticky="nsew")

        grocery_button = Button(menu_frame, text="Grocery List", highlightbackground="#e7e7e7", command=lambda: view_grocery_list())
        grocery_button.grid(row=0, column=2, sticky="nsew")

        view_recipe_frame = Frame(self, bg="#f8f8f8")

        now = datetime.datetime.now()
        dt = datetime.date(now.year, now.month, now.day)
        week_number = dt.isocalendar()[1]
        w = Week(now.year, week_number)

        menu = Frame(self, bg="#f8f8f8")
        menu.pack()

        column_labels = ["Breakfast", "Lunch", "Dinner"]
        for i in range(len(column_labels)):
            Label(menu, text=column_labels[i], font=("Trebuchet MS", 16), bg="#f8f8f8").grid(row=0, column=i+2, pady= 10,
                                                                                        padx=85, sticky="nsew")
        monday_text = "Monday " + str(w.monday())
        tuesday_text = "Tuesday " + str(w.tuesday())
        wednesday_text = "Wednesday " + str(w.wednesday())
        thursday_text = "Thursday " + str(w.thursday())
        friday_text = "Friday " + str(w.friday())
        saturday_text = "Saturday " + str(w.saturday())
        sunday_text = "Sunday " + str(w.sunday())

        labels = [monday_text, tuesday_text, wednesday_text, thursday_text, friday_text, saturday_text, sunday_text]
        for i in range(len(labels)):
            Label(menu, font=("Trebuchet MS", 12), bg="#f8f8f8", text=labels[i]).grid(row=i+1, column=0, padx = 5, pady=15, sticky="w")
            sep = ttk.Separator(menu, orient="vertical")
            sep.grid(row=i+1, column=1, padx=5, sticky="nsew")

        database_file = "meal_planner.db"
        tableName = "recipes_" + str(week_number)
        menuDict = {}
        with sqlite3.connect(database_file) as conn:
            cursor = conn.cursor()
            selection = cursor.execute("""SELECT * FROM """ + tableName)
            for result in [selection]:
                for row in result.fetchall():
                    name = row[0]
                    row_db = row[1]
                    column_db = row[2]
                    menuDict[name] = (row_db, column_db)
        valueArray = []
        keyArray = []
        for (key, value) in menuDict.items():
            print(key, value)
            keyArray.append(key)
            valueArray.append(value)

        button_dict = {}
        list_of_buttons = []
        for rows in range(len(labels)):
            for columns in range(len(column_labels)):
                buttons = Button(menu, text="Add meal", highlightbackground="#f8f8f8",
                                 command=lambda x=rows + 1, y=columns + 2: add_meal(x, y))
                buttons.grid(row=rows + 1, column=columns + 2)
                locationTuple = (rows+1, columns+2)
                for key, value in menuDict.items():
                    if locationTuple == value:
                        #dont add a button
                        recipeLabel = Label(menu, text=key, bg="#f8f8f8", padx=1, pady=1)
                        recipeLabel.grid(row=value[0], column=value[1])
                        recipeLabel.bind("<Button-1>", lambda event, x=key: print_recipe(x))
                    else:
                        buttons.grid(row=rows + 1, column=columns + 2)
                        buttons.position = (rows + 1, columns + 2)
                        button_dict[buttons] = buttons.position
                        list_of_buttons.append(buttons)

        def add_meal(rowLocation, columnLocation):
            """Grabs meals from the database to be displayed.

            Keyword arguments:  rowLocation - Row on the grid
                                columnLocation - Column on the grid
            :return: Nothing
            """
            menu.pack_forget()
            view_recipe_frame.forget()
            add_meal_frame = Frame(self, bg="#f8f8f8")
            add_meal_frame.pack()

            recipe_names = []
            ingredient_list = []
            database_file = "meal_planner.db"
            with sqlite3.connect(database_file) as conn:
                cursor = conn.cursor()
                selection = cursor.execute("""SELECT * FROM recipe""")
                for result in [selection]:
                    for row in result.fetchall():
                        name = row[0]
                        ingredients = row[4]
                        recipe_names.append(name)
                        ingredient_list.append(ingredients)
            for i in range(len(recipe_names)):
                Button(add_meal_frame, text=recipe_names[i], highlightbackground="#f8f8f8", command=lambda x=recipe_names[i], y=ingredient_list[i]:add_recipe(x, y, add_meal_frame,
                                                                                     rowLocation, columnLocation)).grid(row=i, column=0)

        def add_recipe(recipe, ingredients, view, row, column):
            """Adds recipe name to the grid for the meal plan.

            Keyword arguments:  recipe - recipe name
            ingredients - ingredients for that recipe
            view - the add meal frame
            rowLocation - Row on the grid
            columnLocation - Column on the grid

            :return: Nothing
            """
            view.pack_forget()
            view_recipe_frame.forget()
            searchIndex = (row, column)
            for key, value in button_dict.items():
                if value == searchIndex:
                    key.destroy()
            save_weeks_recipes(recipe, row, column)
            save_ingredients(ingredients)
            recipe_label = Label(menu, text=recipe, bg="#f8f8f8")
            recipe_label.grid(row = row, column = column)
            recipe_label.bind("<Button-1>", lambda event: print_recipe(recipe))
            menu.pack()

        def print_recipe(recipeName):
            """Prints the recipe info on a new screen.

            Keyword arguments:  recipe - recipe name

            :return: Nothing
            """
            menu.pack_forget()
            view_recipe_frame.pack(expand=True, fill='both')
            grocery_button.grid_forget()
            database_file = "meal_planner.db"
            with sqlite3.connect(database_file) as conn:
                cursor = conn.cursor()
                selection = cursor.execute("""SELECT * FROM recipe WHERE name = ?;""", (recipeName, ))
                for result in [selection]:
                    for row in result.fetchall():
                        name = row[0]
                        time = row[1]
                        servings = row[2]
                        ingredients = row[4]
                        directions = row[5]
                        string = ("Name: {} \n Cook time: {} \n Number of Servings: {} \n ".format(name, time, servings))
                        second_string = ("Ingredients: {}".format(ingredients))
                        third_string = ("Directions: {}".format(directions))
            Label(view_recipe_frame, text=string, font=MEDIUM_FONT, bg="#f8f8f8", fg="#000000").grid(row=1, column=0, sticky="nsew", padx=400)
            Label(view_recipe_frame, text=second_string, font=MEDIUM_FONT, bg="#f8f8f8", fg="#000000").grid(row=2, column=0, sticky="nsew")
            Label(view_recipe_frame, text=third_string, font=MEDIUM_FONT, bg="#f8f8f8", fg="#000000").grid(row=3, column=0, sticky="nsew")

            return_button = Button(menu_frame, text = "Return to Menu", highlightbackground="#e7e7e7", command=lambda: [view_recipe_frame.pack_forget(),
                                                                                                                        return_button.grid_forget(),
                                                                                     menu.pack(), label.configure(text="Meal Planer"), grocery_button.grid(row=0, column=2, sticky="nsew")])
            # returnButton.pack(side=RIGHT)
            return_button.grid(row=0, column=4, sticky="nsew")

        def view_grocery_list():
            """Prints the grocery list for the week.

            Keyword arguments:  None

            :return: Nothing
            """

            grocery_list_frame = Frame(self,  bg="#f8f8f8")
            grocery_list_frame.pack()

            menu.pack_forget()
            grocery_button.grid_forget()
            label.configure(text="Grocery List")

            i = 0
            database_file = "meal_planner.db"
            item_array = []
            with sqlite3.connect(database_file) as conn:
                cursor = conn.cursor()
                tableName = "ingredients_" + str(week_number)
                selection = cursor.execute("""SELECT * FROM """ + tableName)
                for result in [selection]:
                    for row in result.fetchall():
                        print(row)
                        for ingredient in row:
                            print(ingredient)
                            item_array.append(str(ingredient).split())
                        i = i +1
                        Label(grocery_list_frame, text=ingredient, bg="#f8f8f8", font=MEDIUM_FONT, justify=LEFT).grid(row=i, column=0, sticky="w")
            return_button = Button(menu_frame, text = "Return to Menu", highlightbackground="#e7e7e7", command=lambda: [grocery_list_frame.pack_forget(),
                                                                                                                        return_button.grid_forget(),
                                                                                     menu.pack(), label.configure(text="Meal Planer"), grocery_button.grid(row=0, column=2, sticky="nsew")])
            # returnButton.pack(side=RIGHT)
            return_button.grid(row=0, column=4, sticky="nsew")

        def save_ingredients(ingredients):
            """Save the ingredients to the database so we can get them later for the grocery list.

            Keyword arguments:  ingredients - ingredients to be saved to db

            :return: Nothing
            """
            database_file = "meal_planner.db"
            with sqlite3.connect(database_file) as conn:
                # create the table if it hasn't been created yet
                tableName = "ingredients_" + str(week_number)
                conn.execute('''CREATE TABLE IF NOT EXISTS ''' + tableName + ''' (ingredients text)''')
                conn.execute("""INSERT INTO """ + tableName + """ VALUES (?);""", (ingredients,))
            
        def save_weeks_recipes(recipeName, row, column):
            """Save the week's recipe so we can keep them between app sessions.

            Keyword arguments:  recipeName - the name of the recipe
            row - the row the recipe belongs to in the menu grid
            column - the column the recipe belongs to in the menu grid

            :return: Nothing
            """
            print("save weeks")
            database_file = "meal_planner.db"
            with sqlite3.connect(database_file) as conn:
                # create the table if it hasn't been created yet
                tableName = "recipes_" + str(week_number)
                conn.execute('''CREATE TABLE IF NOT EXISTS ''' + tableName + ''' (recipe text, row int, column int)''')
                conn.execute("""INSERT INTO """ + tableName + """ VALUES (?, ?, ?);""", (recipeName, row, column))
示例#32
0
    def plan_to_xml(self):

        dateiname = "E" + str(self.__JG) + "_SG" + str(self.__SG) + "_KW_" + str(self.__KW) + ".xml"
        try:
            os.remove(dateiname)
        except:
            pass

        woche = Week(2015, self.__KW)
        print(woche)
        self.daten[1] = woche.monday().strftime("%d.%m.%Y")
        self.daten[2] = woche.tuesday().strftime("%d.%m.%Y")
        self.daten[3] = woche.wednesday().strftime("%d.%m.%Y")
        self.daten[4] = woche.thursday().strftime("%d.%m.%Y")
        self.daten[5] = woche.friday().strftime("%d.%m.%Y")

        implement = xml.dom.getDOMImplementation()
        doc = implement.createDocument(None, "Stundenplan", None)


        info_elem = doc.createElement("INFO")
        info_elem.setAttribute("KW", str(self.__KW))
        info_elem.setAttribute("JG", str(self.__JG))
        info_elem.setAttribute("SG", str(self.__SG))


        doc.documentElement.appendChild(info_elem)



        
        for i in range(5):

            i += 1

            tag_plan = self.__PLAN.get_tag(i)
            tag_elem = doc.createElement("Tag")
            tag_elem.setAttribute("Datum", self.daten[i])

            for i in range(10):
                i += 1
                stunde_elem = doc.createElement("Stunde")
                stunde_elem.setAttribute("stunde", str(i))
                stunde_elem.setAttribute("START", self.uhrzeiten_start[i])
                stunde_elem.setAttribute("END", self.uhrzeiten_ende[i])
                stunde_elem.setAttribute("AEND", str(tag_plan.get_unterricht(i)[3]))

                thema_elem = doc.createElement("Thema")
                thema_text = doc.createTextNode(tag_plan.get_unterricht(i)[0])
                thema_elem.appendChild(thema_text)

                dozent_elem = doc.createElement("Dozent")
                dozent_text = doc.createTextNode(tag_plan.get_unterricht(i)[1])
                dozent_elem.appendChild(dozent_text)

                raum_elem = doc.createElement("Raum")
                raum_text = doc.createTextNode(tag_plan.get_unterricht(i)[2])
                raum_elem.appendChild(raum_text)

                stunde_elem.appendChild(thema_elem)
                stunde_elem.appendChild(dozent_elem)
                stunde_elem.appendChild(raum_elem)
                tag_elem.appendChild(stunde_elem)
            doc.documentElement.appendChild(tag_elem)

        stri = doc.toprettyxml()
        datei = open(dateiname, "w")
        doc.writexml(datei, "\n", "  ")
        datei.close()

        root = etree.fromstring(stri)

        HTML(tree=root).write_pdf('weasyprint-website.pdf')
示例#33
0
    def insertNewWeek(self, weekString):

        print(
            time.strftime("%d/%m/%Y %H:%M:%S"),
            "Début calculs préalables à l'insertion d'une nouvelle semaine c2s_week_stkb",
            weekString)
        annee = int(weekString[:4])
        # on récupère le numéro de la semaine
        sem = int(weekString[-2:])

        # Etant donné un numéro de semaine il faut retourner le numéro de semaine qui
        # le précède
        # prevWeek =
        #

        week = Week(annee, sem)
        lundi = week.monday()

        #on récupère le dimanche
        #
        dimanchePrecedent = lundi + timedelta(days=-1)
        previousYear = dimanchePrecedent.strftime("%Y")

        if (int(previousYear) == annee):
            if (sem - 1) <= 9:
                prevWeekString = previousYear + "0" + str(sem - 1)
            else:
                prevWeekString = previousYear + str(sem - 1)

        else:
            prevWeekNum = dimanchePrecedent.isocalendar()[1]

            if prevWeekNum <= 9:
                prevWeekString = previousYear + "0" + str(prevWeekNum)
            else:
                prevWeekString = previousYear + str(prevWeekNum)

        print(
            time.strftime("%d/%m/%Y %H:%M:%S"),
            "Fin des calculs préalable à l'insertion d'une nouvelle semaine c2s_week_stkb",
            weekString)

        print(time.strftime("%d/%m/%Y %H:%M:%S"),
              "Chargement des données pour la semaine précédente ",
              prevWeekString)

        stkpsPreviousWeek = self.getC2CWeek(prevWeekString)

        print(time.strftime("%d/%m/%Y %H:%M:%S"),
              "Chargement des données pour la semaine en cours ", weekString)
        stkpsWeek = self.getAllStkpForWeek(weekString)

        print(time.strftime("%d/%m/%Y %H:%M:%S"),
              "Début de la complétion des lignes")

        for tmp, val in stkpsWeek.items():
            print(val)

        toAdd = []
        for stkp in stkpsWeek:
            if len(stkpsPreviousWeek) > 0:
                if (stkpsPreviousWeek.get(stkp) != None):
                    stkpsWeek[stkp].c2cMoins1 = stkpsPreviousWeek[stkp].c2c
                    stkpsWeek[stkp].evolutionS1 = stkpsWeek[
                        stkp].c2c - stkpsPreviousWeek[stkp].c2c
            toAdd.append(stkpsWeek[stkp])

        print(time.strftime("%d/%m/%Y %H:%M:%S"),
              "Fin de la complétion des lignes")
        # à ce niveau ont a toutes les données sur l'évolution et on peut donce enregistrer la nouvelle semaine

        sessionFactory = SessionFactory()
        session = sessionFactory.Session()

        try:
            session.add_all(toAdd)
            session.commit()
            print(time.strftime("%d/%m/%Y %H:%M:%S"),
                  "Fin insertion avec succès")
        except Exception as ex:
            self.view_traceback()
            print(time.strftime("%d/%m/%Y %H:%M:%S"),
                  "Echec de l'insertion, annulation des modifications")
            session.rollback()
        finally:
            session.close()
            print(time.strftime("%d/%m/%Y %H:%M:%S"), "Session close")
示例#34
0
文件: views.py 项目: gitavk/fclub
def timetable(request, year=0, week=0, act=None):
    employees = Employee.objects.all()
    ldate = Shift.objects.all().aggregate(Max('date'))
    shifts = Shift.objects.filter(date=ldate['date__max'])
    (year, week) = (int(year), int(week))
    w = Week(year, week)
    # last week of current year
    lastw = w.last_week_of_year(year)[1]
    # last week of year before
    lastw_b = w.last_week_of_year(year - 1)[1]
    dates = [w.monday() + timedelta(days=i) for i in range(0, 7)]
    if act == 'copy':
        for d in dates:
            Timetable.objects.filter(date=d).delete()
            for s in shifts:
                try:
                    e = Timetable.objects.get(date=d - timedelta(7),
                                              shift=s.pk).employee
                    tt = Timetable(date=d, shift=s, employee=e)
                    tt.save()
                except Timetable.DoesNotExist:
                    pass
        url = reverse('e_timetable',
                      kwargs={
                          'year': year,
                          'week': week,
                          'act': 0
                      })
        return HttpResponseRedirect(url)

    if request.method == 'POST':
        post_values = {}
        i = 0
        employees = request.POST.getlist('employees')
        for j in range(0, 7):
            for s in shifts:
                post_values['date'] = dates[j]
                post_values['shift'] = s.pk
                try:
                    ttable = Timetable.objects.get(date=post_values['date'],
                                                   shift=s.pk)
                    ttable.delete()
                except Timetable.DoesNotExist:
                    pass
                post_values['employee'] = employees[i]
                if employees[i] != '0':
                    f = FormTimetable(post_values)
                    if f.is_valid():
                        f.save()
                    else:
                        return HttpResponse(f.errors, mimetype='text/html')
                i += 1

    context_dict = dict(
        request=request,
        week=week,
        dates=dates,
        shifts=shifts,
        year=year,
        lastw=lastw,
        lastw_b=lastw_b,
        employees=employees,
        act=act,
    )
    if act == 'edit':
        context_dict.update(csrf(request))
    return render_to_response('timetable.html', context_dict)
示例#35
0
    sys.exit(0)

if infoboks.has_param(commonargs['year']) and infoboks.has_param(commonargs['week']):
    year = int(re.sub(ur'<\!--.+?-->', ur'', unicode(infoboks.parameters[commonargs['year']])).strip())
    startweek = int(re.sub(ur'<\!--.+?-->', ur'', unicode(infoboks.parameters[commonargs['week']])).strip())
    if infoboks.has_param(commonargs['week2']):
        endweek = re.sub(ur'<\!--.+?-->', ur'', unicode(infoboks.parameters[commonargs['week2']])).strip()
        if endweek == '':
            endweek = startweek
    else:
        endweek = startweek
    endweek = int(endweek)

    startweek = Week(year, startweek)
    endweek = Week(year, endweek)
    start = wiki_tz.localize(datetime.combine(startweek.monday(), dt_time(0, 0, 0)))
    end = wiki_tz.localize(datetime.combine(endweek.sunday(), dt_time(23, 59, 59)))
elif infoboks.has_param(ibcfg['start']) and infoboks.has_param(ibcfg['end']):
    startdt = infoboks.parameters[ibcfg['start']].value
    enddt = infoboks.parameters[ibcfg['end']].value
    start = wiki_tz.localize(datetime.strptime(startdt + ' 00 00 00', '%Y-%m-%d %H %M %S'))
    end = wiki_tz.localize(datetime.strptime(enddt + ' 23 59 59', '%Y-%m-%d %H %M %S'))
else:
    log('!! fant ikke datoer')
    sys.exit(0)

year = start.isocalendar()[0]
startweek = start.isocalendar()[1]
endweek = end.isocalendar()[1]

figname = config['plot']['figname'] % {'year': year, 'week': startweek}
示例#36
0
def weekly_str(value, year):
    isoweek = Week(year, value)
    monday = isoweek.monday()
    sunday = isoweek.sunday()

    return monday.strftime(DATE_FORMAT) + ' - ' + sunday.strftime(DATE_FORMAT)