On 14/05/2018 12:11 PM, Alexander Joseph wrote:
Thanks Mike, I will check that out!
I may have found another solution this afternoon too. Since the user puts in the week start date I think I might be able to use datedelta to the week start date so that Tuesday would be the week start date + deltadate (1), Wednesday would be the week start date + deltadate (2) and so on. Still need to check if this does what I'm thinking it will though. I'll check out baklabel too

Now you mention it here is another utility I keep around ...

def when(days=0): """Function to return the current non-naive datetime.""" dd = 
datetime.now() + timedelta(days=days) dday = datetime.now(tz=pytz.utc) if days == 0: return dday ttime = 
datetime.time(dday) tt = timezone.make_aware(datetime.combine( datetime.fromordinal(dday.toordinal() + days), 
ttime), pytz.utc) return tt


What I really meant was ...

def when(days=0):
    """Function to return the current non-naive datetime."""
    dd = datetime.now() + timedelta(days=days)
    dday = datetime.now(tz=pytz.utc)
    if days == 0:
        return dday
    ttime = datetime.time(dday)
    tt = timezone.make_aware(
        datetime.combine(
            datetime.fromordinal(dday.toordinal() + days),
            ttime
        ),
        pytz.utc
    )
    return tt







On Sun, May 13, 2018, 6:47 PM Mike Dewhirst <mi...@dewhirst.com.au <mailto:mi...@dewhirst.com.au>> wrote:

    On 13/05/2018 5:00 AM, Alexander Joseph wrote:
    > I'm building a timesheet app for employees and would like the
    > employees to be able to select a day of the week date based on what
    > the date was on Monday.
    >
    > ie. the user inputs the Monday date of the timesheet, then for each
    > row they need to fill out they can select the Day/Date for each day
    > that week so that those hours they input get assigned to that
    specific
    > day/date. The easiest way I can think of would be to make a list of
    > choices in the Model such as ...
    >
    > |
    > MONDAY = 'MO'
    > TUESDAY = 'TU'
    > WEDNESDAY = 'WE'
    > THURSDAY = 'TH'
    > FRIDAY = 'FR'
    > SATURDAY = 'SA'
    > SUNDAY = 'SU'
    >
    > DAY_CHOICES = (
    >     (MONDAY, 'Monday'),
    >     (TUESDAY, 'Tuesday'),
    >     (WEDNESDAY, 'Wednesday'),
    > (THURSDAY, 'Thursday'),
    > (FRIDAY, 'Friday'),
    > (SATURDAY, 'Saturday'),
    > (SUNDAY, 'Sunday'),
    > )
    > day = models.CharField(
    >     max_length=2,
    > choices=DAY_CHOICES,
    >     default=MONDAY,
    > )
    > |
    >
    > This would work except I also want to include the actual date of
    the
    > day they select, based on the Monday date that they put in in
    another
    > Model
    >
    > Is there a library or package I can use to do this?

    Not sure. Have a look at baklabel, a utility I wrote many years
    ago and
    while I use it every day I haven't looked at it in living memory.
    Source
    is at https://pypi.org/project/baklabel/#files

    It takes a date and returns a string being 'mon', tue' and so on
    except
    'fri1', 'fri2' etc and it also cares about end-of-month and
    end-of-year.
    The string is intended as a path fragment for labelling scripted
    backups.

    The settings/options will allow a much more vanilla return string.
    You
    could stop it counting fridays and omit end-of-month and end-of-year
    detection.

    The date arithmetic in there might be useful and extractable as
    separate
    library.

    >
    > Thanks!
    > --
    > You received this message because you are subscribed to the Google
    > Groups "Django users" group.
    > To unsubscribe from this group and stop receiving emails from
    it, send
    > an email to django-users+unsubscr...@googlegroups.com
    <mailto:django-users%2bunsubscr...@googlegroups.com>
    > <mailto:django-users+unsubscr...@googlegroups.com
    <mailto:django-users%2bunsubscr...@googlegroups.com>>.
    > To post to this group, send email to
    django-users@googlegroups.com <mailto:django-users@googlegroups.com>
    > <mailto:django-users@googlegroups.com
    <mailto:django-users@googlegroups.com>>.
    > Visit this group at https://groups.google.com/group/django-users.
    > To view this discussion on the web visit
    >
    
https://groups.google.com/d/msgid/django-users/6089eafa-7495-4ec4-a539-624cf95014b0%40googlegroups.com

    >
    
<https://groups.google.com/d/msgid/django-users/6089eafa-7495-4ec4-a539-624cf95014b0%40googlegroups.com?utm_medium=email&utm_source=footer>.
    > For more options, visit https://groups.google.com/d/optout.

-- You received this message because you are subscribed to a topic in
    the Google Groups "Django users" group.
    To unsubscribe from this topic, visit
    https://groups.google.com/d/topic/django-users/cK-iY8YW6l8/unsubscribe.
    To unsubscribe from this group and all its topics, send an email
    to django-users+unsubscr...@googlegroups.com
    <mailto:django-users%2bunsubscr...@googlegroups.com>.
    To post to this group, send email to django-users@googlegroups.com
    <mailto:django-users@googlegroups.com>.
    Visit this group at https://groups.google.com/group/django-users.
    To view this discussion on the web visit
    
https://groups.google.com/d/msgid/django-users/74e0e602-858e-85ad-3e87-8c69577d0ba9%40dewhirst.com.au.
    For more options, visit https://groups.google.com/d/optout.

--
You received this message because you are subscribed to the Google Groups "Django users" group. To unsubscribe from this group and stop receiving emails from it, send an email to django-users+unsubscr...@googlegroups.com <mailto:django-users+unsubscr...@googlegroups.com>. To post to this group, send email to django-users@googlegroups.com <mailto:django-users@googlegroups.com>.
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/CAGJrYjYg%2BqT_Xsz%2Ba-QKCy-6Fat88N-fch-E_9F9oovp7yusXw%40mail.gmail.com <https://groups.google.com/d/msgid/django-users/CAGJrYjYg%2BqT_Xsz%2Ba-QKCy-6Fat88N-fch-E_9F9oovp7yusXw%40mail.gmail.com?utm_medium=email&utm_source=footer>.
For more options, visit https://groups.google.com/d/optout.

--
You received this message because you are subscribed to the Google Groups "Django 
users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-users+unsubscr...@googlegroups.com.
To post to this group, send email to django-users@googlegroups.com.
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/abaa9012-7a70-e79c-c29e-ea539dde0cd9%40dewhirst.com.au.
For more options, visit https://groups.google.com/d/optout.

Reply via email to