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
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))
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()
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)
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), })
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))
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
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), })
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, })
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), })
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), })
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)
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)
def test_valid_clean(self): event = Event(**self.data) self.assertIsNone(event.clean())