def test_admins_can_create_basic_incidents(mockdata, client, session):
    with current_app.test_request_context():
        login_admin(client)
        date = datetime(2000, 5, 25, 1, 45)
        report_number = '42'

        address_form = LocationForm(street_name='AAAAA',
                                    cross_street1='BBBBB',
                                    city='FFFFF',
                                    state='IA',
                                    zip_code='03435')
        # These have to have a dropdown selected because if not, an empty Unicode string is sent, which does not mach the '' selector.
        link_form = LinkForm(link_type='video')
        license_plates_form = LicensePlateForm(state='AZ')
        form = IncidentForm(date_field=str(date.date()),
                            time_field=str(date.time()),
                            report_number=report_number,
                            description='Something happened',
                            department='1',
                            address=address_form.data,
                            links=[link_form.data],
                            license_plates=[license_plates_form.data],
                            officers=[])
        data = process_form_data(form.data)

        rv = client.post(url_for('main.incident_api') + 'new',
                         data=data,
                         follow_redirects=True)
        assert rv.status_code == 200
        assert 'created' in rv.data

        inc = Incident.query.filter_by(date=date).first()
        assert inc is not None
Exemple #2
0
    def obj_converter(self, data: dict) -> datetime:
        if not data:
            return None

        date = parser.parse(data["dateTime"])
        return datetime.combine(date.date(), date.time(),
                                tz.gettz(data["timeZone"]))
Exemple #3
0
def test_admins_cannot_make_incidents_without_state(mockdata, client, session):
    with current_app.test_request_context():
        login_admin(client)
        date = datetime(2000, 5, 25, 1, 45)
        report_number = '42'

        address_form = LocationForm(street_name='AAAAA',
                                    cross_street1='BBBBB',
                                    city='FFFFF',
                                    state='',
                                    zip_code='03435')
        ooid_forms = [
            OOIdForm(ooid=officer.id) for officer in Officer.query.all()[:5]
        ]

        form = IncidentForm(date_field=str(date.date()),
                            time_field=str(date.time()),
                            report_number=report_number,
                            description='Something happened',
                            department='1',
                            address=address_form.data,
                            officers=ooid_forms)
        data = process_form_data(form.data)

        incident_count_before = Incident.query.count()
        rv = client.post(url_for('main.incident_api') + 'new',
                         data=data,
                         follow_redirects=True)
        assert rv.status_code == 200
        assert 'Must select a state.' in rv.data
        assert incident_count_before == Incident.query.count()
Exemple #4
0
def view_single_binary_signal(request, id):
    binaryuser = binary_accounts.objects.get(user=request.user)
    signals = BinarySignals.objects.get(id=id)
    binaryuser = binary_accounts.objects.get(user=request.user)
    date = dt.datetime.now()
    expired = []
    valid = []
    binarySignals = BinarySignals.objects.filter(posted_on__date=date)
    for signals in binarySignals:
        datenow = date.time()
        date_now_hours = datenow.hour * 60
        date_now_min = datenow.minute
        full_min = date_now_hours + date_now_min

        expire_date = signals.expiration_time.time()
        expire_hour = expire_date.hour * 60
        expire_min = expire_date.minute
        full_expire = expire_hour + expire_min

        if full_expire - full_min <= 1:
            expired.append(signals)
        else:
            valid.append(signals)
    context = {
        'signals': signals,
        'date': date,
        'valid': valid,
        'expired': expired,
        'binaryuser': binaryuser,
    }

    #date difference-------------------------------------------------------------

    return render(request, 'single_binary.html', context)
Exemple #5
0
    def widget(self, date):
        widget = wd.Widget()

        now = date.time()

        hour = wd.Text(
            text=str(now.hour) + "h",
            font=wd.Font("AmericanTypewriter-Bold", 50),
            color=FOREGROUND,
        )

        minutes = wd.DynamicDate(date=time(now.hour, 0, 0),
                                 style=wd.DATE_STYLE_RELATIVE,
                                 font=wd.Font("AmericanTypewriter", 17),
                                 color=FOREGROUND,
                                 padding=wd.PADDING_ALL)

        layouts = [widget.small_layout, widget.medium_layout]
        for layout in layouts:

            layout.add_vertical_spacer()
            layout.add_row([hour])
            layout.add_row([minutes])
            layout.set_background_color(BACKGROUND)

        return widget
Exemple #6
0
def getinfo(request):
    if request.method == 'POST':
        form = CheckForm(request.POST)
        if form.is_valid():
            user_city = form.cleaned_data['cities']
            user_timeinterval = int(form.cleaned_data['times'])
            date = datetime.now()
            transfered_date = date + timedelta(hours=user_timeinterval)
            weekday = transfered_date.isoweekday()
            hour = date.hour + user_timeinterval
            pool_list = Pool.objects.filter(city=user_city)

            if hour >= 24:
                if weekday == 1:
                    time_list = Timetable.objects.filter(
                        pool__in=pool_list,
                        day=7,
                        start_time__gte=date.time(),
                        end_time__lte=time(
                            23, 59, 59)) | Timetable.objects.filter(
                                day=1,
                                start_time__gte=time(0, 0, 0),
                                end_time__lt=transfered_date.time())
                else:
                    time_list = Timetable.objects.filter(
                        Q(pool__in=pool_list,
                          day=weekday - 1,
                          start_time__gte=date.time(),
                          end_time__lte=time(23, 59, 59))
                        | Q(pool__in=pool_list,
                            day=weekday,
                            start_time__gte=time(0, 0, 0),
                            end_time__lt=transfered_date.time()))
            else:
                time_list = Timetable.objects.filter(
                    pool__in=pool_list,
                    day=weekday,
                    start_time__gte=date.time(),
                    end_time__lt=transfered_date.time())

            return render(request, 'swimapp/pool.html', {
                'pool_list': pool_list,
                'time_list': time_list
            })
    else:
        form = CheckForm()
        return render(request, 'swimapp/index.html', {'form': form})
Exemple #7
0
def dateString(date):
    """
    Return a datetime as a nicely formatted string
    """
    if date.time() == time.min:
        return date.strftime('%Y-%m-%d')
    else:
        return date.strftime('%Y-%m-%d %H:%M')
Exemple #8
0
def get_creneau(date):
    """Déterminer si la perm en cours est celle du matin, du midi ou du soir"""
    hour = date.time().hour
    if hour >= 16 :
        return 'S'
    elif hour >= 11:
        return 'D'
    return 'M'
Exemple #9
0
def dateString(date):
    """
    Return a datetime as a nicely formatted string
    """
    if date.time() == time.min:
        return date.strftime('%Y-%m-%d')
    else:
        return date.strftime('%Y-%m-%d %H:%M')
Exemple #10
0
 def end_hour(self):
     """
     start hour + duration
     """
     date = datetime.datetime.combine(
         datetime.date.today(), self.start_hour) + timedelta(
             seconds=self.webclass.duration.as_seconds())
     return date.time()
Exemple #11
0
def get_time_index(freq, start=None, end=None):
    if start is None:
        start = "1/1/2012 9:30AM"
    if end is None:
        end = "1/1/2012 4:00PM"
    ideal = DatetimeIndex(start=start, end=end, freq=freq)
    times = [date.time() for date in ideal]
    return TimeIndex(times)
Exemple #12
0
def is_between_time(date, start_range, end_range):
    """Is date between time range."""
    reference_time = date.time().replace(second=0, microsecond=0)

    for time in time_range(start_range, end_range):
        if reference_time == time:
            return True
    return False
 def _parse_programme(self, element):
     data = self._parse_element(element)
     date = data['start']
     return dict(name=data['title']['text'][:Programme.name.max_length],
                 date=date.date(),
                 time=date.time(),
                 timestart=int(date.timestamp()),
                 timestop=int(data['stop'].timestamp()),
                 channel=data['channel'][:Programme.channel.max_length])
Exemple #14
0
def createLogEntry(place, date, description):
    
    layout = BoxLayout(orientation='vertical')
    placeLabel = Label(text=place, size_hint_y=None, height=40)
    timeLabel = Label(text=date.time().strftime("%H:%M"), size_hint_y=None, height=40)
    trainingLabel = Label(text=description)
    layout.add_widget(placeLabel)
    layout.add_widget(timeLabel)
    layout.add_widget(trainingLabel)
        
    return layout
Exemple #15
0
def from_date(date):
    if type(date) is not datetime:
        raise ValueError('Supplied date must be of type datetime.')

    if date < incept:
        raise ValueError('The calendar begins at 1792-09-22. '
                         'You cannot convert a date earlier than this.')

    # Remove the time from the timestamp
    date_sans_time = datetime.combine(date, datetime.min.time())
    diff = date_sans_time.timestamp() - incept.timestamp()
    return to_wending(int(round(diff / (24 * 60 * 60))), date.time())
    def __get_date(self) -> list:
        """Get date of system

        Returns:
            list: [0]today aaaa-mm-dd, [1]time h:m:s:ms, [2]today_str dd-mm-aaaa
        """
        date = datetime.now()
        today_str = date.strftime('%d-%m-%Y')
        today = date.date()
        time = date.time()

        return [today, time, today_str]
Exemple #17
0
def scheduleHourFromDate(user, date):
    '''
    Returns a date that has times between 8 and 20, depending on user hour preference, using the hour of the date
    passed
    :param user: a user class
    :param date: a date
    :return: the date with the time in the constraint
    '''
    morning = range(8, 12)
    afternoon = range(12, 20)
    minutes = str(rnd.randrange(0, 59))

    if user.hour_preference is None:
        if date.time() > datetime.strptime('20:00', '%H:%M').time():
            return date - timedelta(hours=4)
        elif date.time() < datetime.strptime('8:00', '%H:%M').time():
            return date + timedelta(hours=8)
        else:
            return date

    elif user.hour_preference == "0":
        if date.time() >= datetime.strptime('12:00', '%H:%M').time() or date.time() <= datetime.strptime('8:00',
                                                                                                         '%H:%M').time():
            return datetime.strptime(str(rnd.choice(morning)) + ':' + minutes, '%H:%M')
        else:
            return date

    elif user.hour_preference == "1":
        if date.time() <= datetime.strptime('12:00', '%H:%M').time() or date.time() >= datetime.strptime('20:00',
                                                                                                         '%H:%M').time():
            return datetime.strptime(str(rnd.choice(afternoon)) + ':' + minutes, '%H:%M')
        else:
            return date
Exemple #18
0
    def assign_time(self, start: str, increment: int):
        """
        If a csv file does not include a date section, this method adds it. 
        Accomplished by iterating over all rows and adding the date
        Expected input: 01/23/2021 12:30 (mm/dd/yyyy hh:mm)
        Use regex to extract date information to create a datetime object
        for easy time manipulation
        :param start: The starting date of the time series
        :type start: datetime
        :param increment: the time interval
        :type increment: int
        :return: void
        """

        try:
            month_reg = r"^([0-9]{2})"  # matches the month
            day_reg = r"\/([0-9]{2})\/"  # matches the day
            year_reg = r"\/([0-9]{4})"  # matches the year
            hour_reg = r"( [0-9]{2}):"  # matches the hour
            minute_reg = r":([0-9]{2})"  # matches the minute
            month = re.search(month_reg, start)  # extracted month
            day = re.search(day_reg, start)  # extracted day
            year = re.search(year_reg, start)  # extracted year
            hour = re.search(hour_reg, start)  # extracted hour
            minute = (re.search(minute_reg, start))  # extracted minute

            # datetime object for easy time manipulation over an interval
            date = datetime(year=int(year.group(1)),
                            month=int(month.group(1)),
                            day=int(day.group(1)),
                            hour=int(hour.group(1)),
                            minute=int(minute.group(1)))

            # create the missing columns in the dataframe
            # self.data['DATE (MM/DD/YYYY)'] = None
            # self.data['MST'] = None
            self.data.insert(0, "Date", None)
            self.data.insert(1, "Time", None)
            """
            Assign each row data in the missing time and date columns.
            Increment time time by increment. .date() and .time()
            pull exactly what it sounds like
            """
            for i in range(len(self.data)):
                self.data.at[i, self.data.columns[0]] = date.date()
                self.data.at[i, self.data.columns[1]] = date.time()
                date += timedelta(hours=int(increment))
        except:
            print("Error!")

        print(self.data)
def check_availability(car):
    """ Function that take a car class and 
        modify the availability of the car 
        according to the pico y placa rules"""
    plate_num = int(car.plate[-1])  # Get the last number of the plate
    date = car.date  # Get the date
    weekday = (date.weekday() + 1) * 2  # Get the number of the week day
    time = date.time()  # Get the time
    restricted = [(weekday - 1),
                  weekday % 10]  # Create an interval of restrictions
    check_time = (time <= morning_end.time() and time >= morning_in.time()) or \
                (time <= afternoon_end.time() and time >= afternoon_in.time())
    # Boolean that verify the time
    if check_time and plate_num in restricted:
        car.availability = False
    else:
        car.availability = True
def test_admins_cannot_make_incidents_with_multiple_validation_errors(mockdata, client, session):
    with current_app.test_request_context():
        login_admin(client)
        date = datetime(2000, 5, 25, 1, 45)
        report_number = '42'

        address_form = LocationForm(
            street_name='AAAAA',
            cross_street1='BBBBB',
            # no city given => 'This field is required.'
            city='',
            state='NY',
            # invalid ZIP code => 'Zip codes must have 5 digits.'
            zip_code='0343'
        )

        # license plate number given, but no state selected => 'Must also select a state.'
        license_plate_form = LicensePlateForm(number='ABCDE', state='')
        ooid_forms = [OOIdForm(ooid=officer.id)
                      for officer in Officer.query.all()[:5]]

        form = IncidentForm(
            # no date given => 'This field is required.'
            date_field='',
            time_field=str(date.time()),
            report_number=report_number,
            description='Something happened',
            # invalid department id => 'This field is required.'
            department='-1',
            address=address_form.data,
            license_plates=[license_plate_form.data],
            officers=ooid_forms
        )
        data = process_form_data(form.data)

        incident_count_before = Incident.query.count()
        rv = client.post(
            url_for('main.incident_api') + 'new',
            data=data,
            follow_redirects=True
        )
        assert rv.status_code == 200
        assert 'Must also select a state.' in rv.data.decode('utf-8')
        assert 'Zip codes must have 5 digits.' in rv.data.decode('utf-8')
        assert rv.data.decode('utf-8').count('This field is required.') >= 3
        assert incident_count_before == Incident.query.count()
Exemple #21
0
 def asof(self, date):
     """
         Follows price is right rules. Will return the closest time that is equal or below.
         If time is after the last date, it will just return the date.
     """
     testtime = date.time()
     last = None
     for time in self.times:
         if testtime == time:
             return date
         if testtime < time:
             # found spot
             break
         last = time
     # TODO should I anchor this to the last time?
     if last is None:
         return date
     new_date = datetime.combine(date.date(), last)
     return new_date
Exemple #22
0
def view_today_signal(request):
    if Forex.objects.filter(
            user=request.user) and binary_accounts.objects.filter(
                user=request.user):
        forexuser = Forex.objects.get(user=request.user)
        binaryuser = binary_accounts.objects.get(user=request.user)
        date = dt.date.today()
        forexSignals = ForexSignals.objects.filter(posted_on__date=date)
        expired = []
        valid = []
        binarySignals = BinarySignals.objects.filter(posted_on__date=date)
        for signals in binarySignals:
            datenow = date.time()
            date_now_hours = datenow.hour * 60
            date_now_min = datenow.minute
            full_min = date_now_hours + date_now_min

            expire_date = signals.expiration_time.time()
            expire_hour = expire_date.hour * 60
            expire_min = expire_date.minute
            full_expire = expire_hour + expire_min

            if full_expire - full_min <= 1:
                expired.append(signals)
            else:
                valid.append(signals)

        context = {
            'date': date,
            'valid': binary,
            'expired': binary,
            'forexSignals': forexSignals,
            'forexuser': forexuser,
            'binaryuser': binaryuser,
        }
        return render(request, 'signals.html', context)
    elif Forex.objects.filter(user=request.user):
        date = dt.date.today()
        forexuser = Forex.objects.get(user=request.user)
        forexSignals = ForexSignals.objects.filter(posted_on__date=date)

        context = {
            'forexuser': forexuser,
            'date': date,
            'forexSignals': forexSignals,
        }
        return render(request, 'signals.html', context)
    #error--------------------------------------------
    elif binary_accounts.objects.filter(user=request.user):
        date = dt.datetime.now()
        date2 = datetime.combine(date.today(), datetime.min.time())
        binaryuser = binary_accounts.objects.get(user=request.user)
        expired = []
        valid = []
        binarySignals = BinarySignals.objects.filter(posted_on__date=date)
        for signals in binarySignals:
            datenow = date.time()
            date_now_hours = datenow.hour * 60
            date_now_min = datenow.minute
            full_min = date_now_hours + date_now_min

            expire_date = signals.expiration_time.time()
            expire_hour = expire_date.hour * 60
            expire_min = expire_date.minute
            full_expire = expire_hour + expire_min

            if full_expire - full_min <= 1:
                expired.append(signals)
            else:
                valid.append(signals)
        context = {
            'binaryuser': binaryuser,
            'date': date,
            'expired': expired,
            'valid': valid,
        }
        return render(request, 'signals.html', context)
    else:
        return redirect('home')
Exemple #23
0
POSTTITLE = "blah"

POSTDIR = "_post"

CURRENTDIR = os.getcwd()

POSTPATH = CURRENTDIR + "\\" + POSTDIR + "\\" + POSTTITLE

CONTENT = '''
---
layout: post
title:  "{}"
excerpt: 
date:   {}
categories: post 
author: luke_griffith
---
'''

date = datetime.now()
time = date.time()

datestring = "{}-{}-{} {}:{}:{}".format(date.year, date.month, date.day, time.hour, time.minute, time.second)

Formatted = CONTENT.format(POSTTITLE, datestring)

open(POSTPATH)



Exemple #24
0
def day_start(date):
    t   = date.time().replace(hour=0,minute=1)
    return datetime.combine(date.date(), t)
Exemple #25
0
def day_end(date):
    t   = date.time().replace(hour=23,minute=59)
    return datetime.combine(date.date(), t)
def get_start_end(date_times):
    """ Given a sorted list of datetimes, calculate the start and end times of images"""
    times = sorted(date.time() for date in date_times)
    min, max = times[0], times[-1]
    return min, max
Exemple #27
0
 def time_getter():
     return date.time()