Beispiel #1
0
 def validate(self, attrs: dict) -> dict:
     errors = OrderedDict()
     errors.update(Event.clean_dates(attrs, self.instance))
     errors.update(Event.clean_by_event_type(attrs, self.instance))
     if errors:
         raise ValidationError(errors)
     return attrs
Beispiel #2
0
 def test_invalid_clean_conflict_without_violence(self):
     self.data['event_type'] = Crisis.CRISIS_TYPE.CONFLICT
     errors = Event.clean_by_event_type(self.data)
     self.assertIn('violence', errors)
     violence = Violence(name='abc')
     violence.save()
     self.data['violence'] = violence
     self.assertFalse(Event.clean_by_event_type(self.data))
Beispiel #3
0
def insert_event_bdd(form, user):
    name = form.get("name")
    description = form.get("description")
    date_begin = form.get("date_begin")
    date_end = form.get("date_end")
    event = Event(name=name,
                  description=description,
                  date_begin=date_begin,
                  date_end=date_end,
                  author=user)
    event.save()
Beispiel #4
0
    def test_invalid_clean_end_smaller_than_start_date_during_update(self):
        # event with a start date
        event = EventFactory.create(start_date='2020-10-13')
        # try to update with earlier end date
        self.data['end_date'] = '2020-10-12'
        errors = Event.clean_dates(self.data, event)
        self.assertIn('end_date', errors)

        # event without start date
        event = EventFactory.create()
        self.data['end_date'] = '2020-10-12'
        errors = Event.clean_dates(self.data, event)
        self.assertFalse(errors)
Beispiel #5
0
    def get(self, request, company):
        """
        User is editing profile...
        """

        try:
            company_obj = Company.objects.get(name=company)
        except ObjectDoesNotExist:
            return page_not_found(request,
                                  exception=ObjectDoesNotExist(),
                                  template_name='404.html')

        entity_obj = Entity.objects.get(company=company_obj)
        events = Event.get_entity_events(entity_obj)
        location = Nominatim.geocode(self=Nominatim(),
                                     query=company_obj.address)

        return render(
            request, 'company/profile/profile.html', {
                'company': company_obj,
                'events': events,
                'lat': location.latitude,
                'lon': location.longitude,
                'is_owner': Member.is_owner(request.user, company_obj),
                'is_editor': Member.is_editor(request.user, company_obj),
            })
Beispiel #6
0
    def test_in_progress(self):
        tz = timezone.get_current_timezone()
        event = Event(begins_at=datetime(2015, 1, 13, hour=12, tzinfo=tz),
                      ends_at=datetime(2015, 1, 13, hour=13, tzinfo=tz))

        dt = datetime(2015, 1, 13, hour=11, minute=59, tzinfo=tz)
        self.assertFalse(event.in_progress(dt))

        # From hour=11, minute=59
        #   to hour=12, minute=59
        for i in xrange(60):
            dt = dt + timedelta(minutes=1)
            self.assertTrue(event.in_progress(dt))

        # hour=13, minute=0
        dt = dt + timedelta(minutes=1)
        self.assertFalse(event.in_progress(dt))
Beispiel #7
0
def make_event(group, **kwargs):
    right_now = now()
    defaults = {
        'group': group,
        'title': "The event",
        'contact_email': "*****@*****.**",
        'address': "123 Main St",
        'location': Point(-73.9679007, 40.7764977),
        'max_attendees': 100,
        'begins_at': right_now,
        'ends_at': right_now + timedelta(hours=1),
    }
    defaults.update(kwargs)

    e = Event(**defaults)
    e.clean_and_save()

    return e
Beispiel #8
0
    def get(self, request, group):
        """
        User is viewing a profile
        """

        try:
            group_obj = Group.objects.get(name=group)
        except ObjectDoesNotExist:
            return page_not_found(request, exception=ObjectDoesNotExist(), template_name='404.html')

        entity_obj = Entity.objects.get(group=group_obj)
        events = Event.get_entity_events(entity=entity_obj)

        return render(request, 'group/profile.html', {
            'group': group_obj,
            'events': events,
            'members': Member.get_members(group_obj),
            'is_owner': Member.is_owner(request.user, group_obj),
            'is_editor': Member.is_editor(request.user, group_obj),
        })
Beispiel #9
0
def events(request):
    page = requests.get('https://techevents.nz/pnorth')
    tree = html.fromstring(page.content)
    event = tree.xpath('//div[contains(@class,"event")]')[0]
    event_months = event.xpath('//div[@class="date"]/strong/text()')
    event_days = event.xpath('//div[@class="date"]/big/text()')
    event_times = event.xpath('//div[@class="date"]/text()')
    event_times_new = list(filter(None, [x.strip() for x in event_times]))
    event_head = tree.xpath('//div[@class="body"]/h5/text()')
    event_head_new = list(filter(None, [x.strip() for x in event_head]))
    event_desc = tree.xpath('//div[@class="body"]/p/text()')
    event_urls = tree.xpath('//span[@class="info"]//a/@href')
    all_events = []
    for i in range(0, len(event_months)):
        new_event = {}
        new_event['day'] = event_days[i]
        new_event['month'] = event_months[i]
        new_event['time'] = event_times_new[i]
        new_event['heading'] = event_head_new[i]
        new_event['desc'] = event_desc[i]
        new_event['url'] = event_urls[2 * i]
        all_events.append(new_event)

    # get all events belonging to techpalmy which have not already happened
    techpalmy_events = Event.get_events()

    event_filter = EventSearch(request.GET, queryset=techpalmy_events)
    results = event_filter.qs

    return render(
        request, 'events/rss_feed.html', {
            'show_sidepane':
            Member.is_editor_any(request.user)
            ^ Member.is_owner_any(request.user),
            'tree':
            all_events,
            'events':
            results,
            'filter':
            event_filter,
        })
Beispiel #10
0
    def get(self, request, company):
        """
        User is editing profile...
        """

        try:
            company_obj = Company.objects.get(name=company)
        except ObjectDoesNotExist:
            return page_not_found(request, exception=ObjectDoesNotExist(), template_name='404.html')

        entity_obj = Entity.objects.get(company=company_obj)
        events = Event.get_entity_events(entity_obj)
        location = Nominatim.geocode(self=Nominatim(), query=company_obj.address)

        return render(request, 'company/profile/profile.html', {
            'company': company_obj,
            'events': events,
            'lat': location.latitude,
            'lon': location.longitude,
            'is_owner': Member.is_owner(request.user, company_obj),
            'is_editor': Member.is_editor(request.user, company_obj),
        })
Beispiel #11
0
    def get(self, request, group):
        """
        User is viewing a profile
        """

        try:
            group_obj = Group.objects.get(name=group)
        except ObjectDoesNotExist:
            return page_not_found(request,
                                  exception=ObjectDoesNotExist(),
                                  template_name='404.html')

        entity_obj = Entity.objects.get(group=group_obj)
        events = Event.get_entity_events(entity=entity_obj)

        return render(
            request, 'group/profile.html', {
                'group': group_obj,
                'events': events,
                'members': Member.get_members(group_obj),
                'is_owner': Member.is_owner(request.user, group_obj),
                'is_editor': Member.is_editor(request.user, group_obj),
            })
Beispiel #12
0
 def test_invalid_clean_end_smaller_than_start_date(self):
     self.data['end_date'] = '2020-10-12'
     self.data['start_date'] = '2020-10-13'
     errors = Event.clean_dates(self.data)
     self.assertIn('end_date', errors)
Beispiel #13
0
 def test_invalid_clean_disaster_without_glide_or_disaster_category(self):
     self.data.pop('glide_number')
     self.data.pop('disaster_category')
     errors = Event.clean_by_event_type(self.data)
     self.assertIn('glide_number', errors)
     self.assertIn('disaster_category', errors)
Beispiel #14
0
 def test_valid_clean(self):
     event = Event(**self.data)
     self.assertIsNone(event.clean())