def get_event(self, name): logger.debug('In Geofon.get_event("%s")' % name) if not name in self.events: url = 'http://geofon.gfz-potsdam.de/db/eqpage.php?id=%s' % name logger.debug('Opening URL: %s' % url) page = urllib2.urlopen(url).read() logger.debug('Received page (%i bytes)' % len(page)) d = self._parse_event_page(page) ev = model.Event(lat=d['epicenter'][0], lon=d['epicenter'][1], time=d['time'], name=name, depth=d['depth'], magnitude=d['magnitude'], region=d['region'], catalog='GEOFON') if d['have_moment_tensor']: ev.moment_tensor = True self.events[name] = ev ev = self.events[name] if ev.moment_tensor is True: ev.moment_tensor = self.get_mt(ev) return ev
def post(self, location): args = event_create_parser.parse_args() import model loc = model.Location.query.filter_by(id=location).first() evt = model.Event() evt.name = args.get('name') evt.start = args.get('start') evt.end = args.get('end') evt.id = uuid.uuid4() evt.location = loc from main import db db.session.add(evt) db.session.commit() return { 'url': evt, 'id': evt.id, 'name': evt.name, 'start': evt.start, 'end': evt.end, 'location': loc, 'groups': [], }
def post(self): date = datetime.datetime.strptime(self.request.get('date')[:16], '%Y-%m-%d %H:%M') title = self.request.get('title').strip() url = self.request.get('url').strip() or None poster = self.request.get('poster').strip() or None video = self.request.get('video').strip() or None discount = self.request.get('discount') and True or False if self.request.get('key'): event = model.get_by_key(self.request.get('key')) else: event = model.Event(user=users.get_current_user()) event.far_sent = False event.soon_sent = False event.url = url event.short_url = util.shorten_url(url) event.date = date event.title = title event.poster = poster event.video = video event.discount = discount event.put() self.redirect('/') """
def post(self): try: json_item = json.loads(self.request.body) converted = ndb_json.ConvertToNdb(model.Event, json_item) activity = converted['activity'].get() start_time = converted['start_time'] user_key = activity.submitted_by_user if not activity: self.abort(httplib.BAD_REQUEST, u'הפעילות לא קיימת') return collides_with = Event.CollidesWith( start_time, activity.duration_minutes, user_key) if collides_with: self.abort(httplib.BAD_REQUEST, collides_with) return converted['crew'].append(activity.submitted_by_user) item = model.Event(**converted) item.put() self.SendJson(ndb_json.AsDict(item)) except Exception as e: raise self.abort(httplib.BAD_REQUEST, u'Invalid request')
def _parse_events_page(self, page): events = [] for line in page.splitlines(): toks = line.strip().split(',') if len(toks) != 9: continue try: int(toks[0]) except: continue t = util.str_to_time(','.join(toks[:4]).strip(), format='%Y,%m,%d,%H%M%S.OPTFRAC') lat = float(toks[4]) lon = float(toks[5]) mag = float(toks[6]) depth = float(toks[7]) catalog = toks[8] name = 'USGS-%s-' % catalog + util.time_to_str( t, format='%Y-%m-%d_%H-%M-%S.3FRAC') ev = model.Event(lat=lat, lon=lon, time=t, name=name, depth=depth * 1000., magnitude=mag, catalog=catalog) events.append(ev) return events
def _get_events_from_file(self): rdseed_event_file = os.path.join(self.tempdir, 'rdseed.events') if not os.path.isfile(rdseed_event_file): return [] f = open(rdseed_event_file, 'r') events = [] for line in f: toks = line.split(', ') if len(toks) == 9: datetime = toks[1].split('.')[0] lat = toks[2] lon = toks[3] format = '%Y/%m/%d %H:%M:%S' secs = calendar.timegm(time.strptime(datetime, format)) e = model.Event(lat=float(toks[2]), lon=float(toks[3]), depth=float(toks[4]) * 1000., magnitude=float(toks[8]), time=secs) events.append(e) else: raise Exception('Event description in unrecognized format') f.close() return events
def complete(data): try: t = calendar.timegm((data.year, data.month, data.day, data.hour, data.minute, data.seconds)) m = num.array([ data.mrr, data.mrt, data.mrp, data.mrt, data.mtt, data.mtp, data.mrp, data.mtp, data.mpp ], dtype=num.float).reshape(3, 3) m *= 10.0**(data.exponent - 7) mt = MomentTensor(m_up_south_east=m) ev = model.Event(lat=data.lat, lon=data.lon, time=t, name=data.eventname, depth=data.depth_km * 1000., magnitude=mt.moment_magnitude(), duration=data.half_duration * 2., region=data.region.rstrip(), catalog=data.catalog) ev.moment_tensor = mt events.append(ev) except AttributeError: pass
def ParseJSONBody(json_body): """Parse a JSON string and return a context and an event list.""" json = simplejson.loads(json_body) # TODO(davidbyttow): Remove this once no longer needed. data = util.CollapseJavaCollections(json) context = ops.CreateContext(data) event_list = [model.Event(event_data) for event_data in data['events']] return context, event_list
def testEvent(self): data = {'type': 'WAVELET_PARTICIPANTS_CHANGED', 'properties': {'blipId': 'blip-1'}, 'timestamp': 123, 'modifiedBy': '*****@*****.**'} event_data = model.Event(data) self.assertEquals(data['type'], event_data.type) self.assertEquals(data['properties'], event_data.properties) self.assertEquals(data['timestamp'], event_data.timestamp) self.assertEquals(data['modifiedBy'], event_data.modifiedBy)
def make_event(event, cal_id): start_week = event["start"].isocalendar()[:2] end_week = event["end"].isocalendar()[:2] return model.Event(cal_id=cal_id, title=event["title"], start=event["start"], end=event["end"], )
def _parse_events_page(self, page): logger.debug('In Geofon._parse_events_page(...)') page = re.sub(' ([^;])', ' \\1', page) # fix broken tags page = re.sub('border=0', 'border="0"', page) doc = self.parse_xml(page) events = [] for tr in doc.getElementsByTagName("tr"): logger.debug('Found <tr> tag') tds = tr.getElementsByTagName("td") if len(tds) != 8: logger.debug('Does not contain 8 <td> tags.') continue elinks = tds[0].getElementsByTagName("a") if len(elinks) != 1 or (not 'href' in elinks[0].attributes.keys()): logger.debug('Could not find link to event details page.') continue link = elinks[0].attributes['href'].value.encode('ascii') m = re.search(r'\?id=(gfz[0-9]+[a-z]+)$', link) if not m: logger.debug('Could not find event id.') continue eid = m.group(1) vals = [getTextR(td).encode('ascii') for td in tds] tevent = calendar.timegm( time.strptime(vals[0][:19], '%Y-%m-%d %H:%M:%S')) mag = float(vals[1]) epicenter = parse_location(vals[2] + ' ' + vals[3]) depth = float(vals[4]) * 1000. region = vals[7] ev = model.Event(lat=epicenter[0], lon=epicenter[1], time=tevent, name=eid, depth=depth, magnitude=mag, region=region, catalog='GEOFON') if vals[6] == 'MT': syear = vals[0][:4] ev.moment_tensor = True logger.debug('Adding event from GEOFON catalog: %s' % ev) events.append(ev) return events
def post(self): # self.response.write('<html><body>You wrote:<pre>') # self.response.write(cgi.escape(self.request.get('comment'))) # self.response.write('</pre></body></html>') activity = self.request.get('activity') value = float(self.request.get('value')) comment = self.request.get('comment') startDateTime = datetime.datetime.strptime( self.request.get('startTime'), "%Y-%m-%dT%H:%M:%S.%fZ" ) #dateutil.parser.parse(self.request.get('startTime')) endDateTime = datetime.datetime.strptime( self.request.get('endTime'), "%Y-%m-%dT%H:%M:%S.%fZ" ) #dateutil.parser.parse(self.request.get('endTime')) event = model.Event( actor = users.get_current_user(), activity = activity, comment = comment, startTime = startDateTime, endTime = endDateTime, value = value) template = JINJA_ENVIRONMENT.get_template('/templates/logEventResult.html') self.response.write(template.render({"event":event}))
def get_event(self, name): if name in self.events: return self.events[name] url = 'http://geofon.gfz-potsdam.de/db/eqpage.php?id=%s' % name page = urllib2.urlopen(url).read() d = self._parse_event_page(page) ev = model.Event( lat=d['epicenter'][0], lon=d['epicenter'][1], time=d['time'], name=name, depth=d['depth'], magnitude=d['magnitude'], region=d['region'], catalog='GEOFON') return ev
def create_event(self, event_type, followers, user, user_to=None, group=None, item=None, thread=None, creation_date=None, response_number=0): event = model.Event(event_type=event_type, followers=followers, user=user, user_nickname=user.nickname, response_number=response_number) if user_to is not None: event.user_to = user_to event.user_to_nickname = user_to.nickname if group is not None: event.group = group event.group_title = group.title event.group_url_path = group.url_path if item is not None: event.item = item event.item_title = item.title event.item_author_nickname = item.author_nickname event.item_url_path = item.url_path if thread is not None: event.thread = thread event.thread_title = thread.title event.thread_url_path = thread.url_path if creation_date is None: event.creation_date = datetime.datetime.now() else: event.creation_date = creation_date event.put()
def create_event(self, event_type, followers, user, user_to=None, community=None, article=None, thread=None, creation_date=None, response_number=0): event = model.Event(event_type=event_type, followers=followers, user=user, user_nickname=user.nickname, response_number=response_number) if user_to is not None: event.user_to = user_to event.user_to_nickname = user_to.nickname if community is not None: event.community = community event.community_title = community.title event.community_url_path = community.url_path if article is not None: event.article = article event.article_title = article.title event.article_author_nickname = article.author_nickname event.article_url_path = article.url_path if thread is not None: event.thread = thread event.thread_title = thread.title event.thread_url_path = thread.url_path if creation_date is None: event.creation_date = datetime.datetime.now() else: event.creation_date = creation_date event.put()
def retrieve(self, **kwargs): import yaml kwargs['format'] = 'yaml' url = 'http://kinherd.org/quakes/KPS' f = ws_request(url, **kwargs) names = [] for eq in yaml.safe_load_all(f): tref_eq = calendar.timegm(eq['reference_time'].timetuple()) pset = eq['parametersets'][0] tref = calendar.timegm(pset['reference_time'].timetuple()) params = pset['parameters'] mt = MomentTensor(strike=params['strike'], dip=params['dip'], rake=params['slip_rake'], scalar_moment=params['moment']) event = model.Event(time=tref + params['time'], lat=params['latitude'], lon=params['longitude'], depth=params['depth'], magnitude=params['magnitude'], name=eq['name'], catalog='KPS', moment_tensor=mt) event.ext_confidence_intervals = {} trans = {'latitude': 'lat', 'longitude': 'lon'} for par in 'latitude longitude depth magnitude'.split(): event.ext_confidence_intervals[trans.get(par, par)] = \ (params[par+'_ci_low'], params[par+'_ci_high']) name = eq['name'] self.events[name] = event names.append(name) return names
def admin(): if request.method == 'POST': venue = request.form['venue'] location = request.form['location'] start_time = datetime.datetime.strptime( '%s %s' % (request.form['date'], request.form['time']), '%Y-%m-%d %H:%M') user = users.get_current_user() event = model.Event(venue=venue, location=location, start_time=start_time, created_by=user) added = event.put() return redirect('/admin') elif request.args.get('delete'): k = ndb.Key(urlsafe=request.args['delete']) k.delete() return redirect('/admin') news = model.News.query().order(model.News.created).fetch() upcoming = model.Event.query().order(model.Event.start_time).fetch() return render_template('admin.html', upcoming=upcoming, news=news)
def crawlpage(page_id): url = "https://www.eventbrite.com/d/indonesia--jakarta-pusat/all-events/?page={}".format(page_id) x = get(url) soup = BeautifulSoup(x.content, 'html.parser') data = json.loads(soup.find('script', type='application/ld+json').text) # add data listevents = [] for event in data: if(float(event["offers"]["lowPrice"]) > 0 or float(event["offers"]["lowPrice"]) > 0): continue newitem = model.Event() newitem.judul = event["name"] newitem.link = event["url"] dateformat = "%Y-%m-%d" newitem.waktu_berlangsung = datetime.datetime.strptime(event["startDate"], dateformat) newitem.waktu_event = datetime.datetime.strptime(event["startDate"], dateformat) newitem.status = 0 listevents.append(newitem) return listevents
def _parse_events_page(self, page): import json doc = json.loads(page) events = [] for feat in doc['features']: props = feat['properties'] geo = feat['geometry'] lon, lat, depth = [float(x) for x in geo['coordinates']] t = util.str_to_time('1970-01-01 00:00:00') + props['time'] * 0.001 if props['mag'] is not None: mag = float(props['mag']) else: mag = None if props['place'] != None: region = str(props['place']) else: region = None catalog = str(props['net'].upper()) name = 'USGS-%s-' % catalog + util.time_to_str( t, format='%Y-%m-%d_%H-%M-%S.3FRAC') ev = model.Event(lat=lat, lon=lon, time=t, name=name, depth=depth * 1000., magnitude=mag, region=region, catalog=catalog) events.append(ev) return events
for row in records: factory.addSequence(model.Sequence(row[0], row[2], row[3], row[1], row[4])) cursor.close() #endregion #region Drug Delivery query = open('./SQL/drug_delivery.sql', 'r').read() cursor = conn.cursor() cursor.execute(query) records = cursor.fetchall() for row in records: factory.addEventDrugDelivery( model.Event(str(row[0]), model.Pharmacy(str(row[5])), model.DrugDelevery(str(row[3]), row[4]), row[1], row[2])) cursor.close() #endregion #region Medical Act query = open('./SQL/medical_act.sql', 'r').read() cursor = conn.cursor() cursor.execute(query) records = cursor.fetchall() for row in records: factory.addEventMedicalAct( model.Event(str(row[0]), model.Doctor(str(row[4]), str(row[5])), model.Acte(row[3]), row[1], row[2]))
def on_mouse_drag(x, y, dx, dy, button, modifiers): scene.handle(model.Event(model.Event.DRAG, model.Vec2(dx, -dy)))
def on_mouse_press(x, y, button, modifiers): scene.handle( model.Event(model.Event.PRESS, model.Vec2(x, window.height - y)))
def on_mouse_release(x, y, button, modifiers): scene.handle( model.Event(model.Event.RELEASE, model.Vec2(x, window.height - y)))
class Geofon(EarthquakeCatalog): def __init__(self): self.events = {} def flush(self): self.events = {} def iter_event_names(self, time_range=None, nmax=1000, magmin=None, latmin=-90., latmax=90., lonmin=-180., lonmax=180.): logger.debug('In Geofon.iter_event_names(...)') dmin = time.strftime('%Y-%m-%d', time.gmtime(time_range[0])) dmax = time.strftime('%Y-%m-%d', time.gmtime(time_range[1] + 24 * 60 * 60)) if magmin is None: magmin = '' else: magmin = '%g' % magmin ipage = 1 while True: url = ('http://geofon.gfz-potsdam.de/db/eqinfo.php?' + '&'.join([ 'page=%i' % ipage, 'datemin=%s' % dmin, 'datemax=%s' % dmax, 'latmin=%g' % latmin, 'latmax=%g' % latmax, 'lonmin=%g' % lonmin, 'lonmax=%g' % lonmax, 'magmin=%s' % magmin, 'fmt=html', 'nmax=%i' % nmax ])) logger.debug('Opening URL: %s' % url) page = urllib2.urlopen(url).read() logger.debug('Received page (%i bytes)' % len(page)) events = self._parse_events_page(page) if not events: break for ev in events: if time_range[0] <= ev.time and ev.time <= time_range[1]: self.events[ev.name] = ev yield ev.name ipage += 1 def get_event(self, name): logger.debug('In Geofon.get_event("%s")' % name) if name in self.events: logger.debug('Already have it.') return self.events[name] url = 'http://geofon.gfz-potsdam.de/db/eqpage.php?id=%s' % name logger.debug('Opening URL: %s' % url) page = urllib2.urlopen(url).read() logger.debug('Received page (%i bytes)' % len(page)) d = self._parse_event_page(page) ev = model.Event(lat=d['epicenter'][0], lon=d['epicenter'][1], time=d['time'], name=name, depth=d['depth'], magnitude=d['magnitude'], region=d['region'], catalog='GEOFON') return ev def _parse_events_page(self, page): logger.debug('In Geofon._parse_events_page(...)') page = re.sub(' ([^;])', ' \\1', page) # fix broken tags page = re.sub('border=0', 'border="0"', page) try: doc = minidom.parseString(page) except ExpatError, e: lines = page.splitlines() r = max(e.lineno - 1 - 2, 0), min(e.lineno - 1 + 3, len(lines)) ilineline = zip(range(r[0] + 1, r[1] + 1), lines[r[0]:r[1]]) logger.error( 'A problem occured while parsing HTML from GEOFON page (line=%i, col=%i):\n\n' % (e.lineno, e.offset) + '\n'.join([ ' line %i: %s' % (iline, line[:e.offset] + '### HERE ###' + line[e.offset:]) for (iline, line) in ilineline ])) logger.error( '... maybe the format of the GEOFON web catalog has changed.') raise events = [] for tr in doc.getElementsByTagName("tr"): logger.debug('Found <tr> tag') tds = tr.getElementsByTagName("td") if len(tds) != 8: logger.debug('Does not contain 8 <td> tags.') continue elinks = tds[0].getElementsByTagName("a") if len(elinks) != 1 or (not 'href' in elinks[0].attributes.keys()): logger.debug('Could not find link to event details page.') continue link = elinks[0].attributes['href'].value.encode('ascii') m = re.search(r'\?id=(gfz[0-9]+[a-z]+)$', link) if not m: logger.debug('Could not find event id.') continue eid = m.group(1) vals = [getTextR(td).encode('ascii') for td in tds] tevent = calendar.timegm( time.strptime(vals[0][:19], '%Y-%m-%d %H:%M:%S')) mag = float(vals[1]) epicenter = parse_location(vals[2] + ' ' + vals[3]) depth = float(vals[4]) * 1000. region = vals[7] ev = model.Event(lat=epicenter[0], lon=epicenter[1], time=tevent, name=eid, depth=depth, magnitude=mag, region=region, catalog='GEOFON') logger.debug('Adding event from GEOFON catalog: %s' % ev) events.append(ev) return events
def __handleEvent(self,line,origin_file_path): '''handle event, for example: ''' '''E1 Marry:T3 Time:T2''' '''the first argu is trigger:''' '''Marry:T3''' words = line.split() event_id = words[0] trigger = words[1] type_and_trigger_id = trigger.split(':') event_type = type_and_trigger_id[0] trigger_id = type_and_trigger_id[1] trigger_entity = self.entity_map[trigger_id] '''record the begin and end index of the event in the origin file''' event_sentence_begin_index = trigger_entity.begin event_sentence_end_index = trigger_entity.end event = model.Event(event_id,event_types.get_event_type(event_type),trigger_entity) for word in words[2:]: entity_type_and_entity_id = word.split(':') argu_entity = self.entity_map[entity_type_and_entity_id[1]] event_sentence_begin_index = min(event_sentence_begin_index,argu_entity.begin) event_sentence_end_index = max(event_sentence_end_index,argu_entity.end) '''set the argu of the event''' event.setArgu(entity_type_and_entity_id[0],argu_entity) '''find the origin sentence in the origin file''' '''find the speaker of the event''' with open(origin_file_path,'r',encoding='utf8') as origin_reader: cursor = 0 '''default speaker is plaintiff''' speaker = parties.PLAINTIFF for line in origin_reader.readlines(): if (line.find('被告')!=-1 and line.find('辩称')!=-1): speaker = parties.DEFENDANT line = line.replace('\n', '\r\n') begin_index_of_the_line = cursor end_index_of_the_line = cursor + len(line) '''smaller than the begin index''' if (end_index_of_the_line <= event_sentence_begin_index): cursor = end_index_of_the_line continue if (begin_index_of_the_line <= event_sentence_begin_index and event_sentence_begin_index <= end_index_of_the_line and begin_index_of_the_line <= event_sentence_end_index and event_sentence_end_index <= end_index_of_the_line): '''整个事件句子在当前句子中''' event.addSent(line.strip()) event.begin_index = begin_index_of_the_line break elif(begin_index_of_the_line <= event_sentence_begin_index and event_sentence_begin_index <= end_index_of_the_line and end_index_of_the_line < event_sentence_end_index): '''只有事件句子的开始在当前句子中''' event.addSent(line.strip()) event.begin_index = begin_index_of_the_line elif (event_sentence_begin_index < begin_index_of_the_line and begin_index_of_the_line <= event_sentence_end_index and event_sentence_end_index<= end_index_of_the_line): '''只有事件句子的结尾在当前句子中''' event.addSent(line) break elif(event_sentence_begin_index<=begin_index_of_the_line and end_index_of_the_line<=event_sentence_end_index): '''当前句子整个都在事件句子中''' event.addSent(line) cursor = end_index_of_the_line event.sentence = event.sentence.replace('\r\n','').replace('\n','') event.speaker = speaker return event
def post(self): event_name = self.request.get('name') if event_name: event = model.Event(name=event_name) event.put() return webapp2.redirect_to('event', event_id=event.key().id())