def get_event(eid): event = Event.by_guid(eid) host = list(event.host(nodes=True))[0][1] return { 'id': event.guid, 'host': host.guid, 'invitees': [node.guid for rel, node in event.invitees(nodes=True)] }
def process_event(self, req): req.perm.assert_permission('CAL_VIEW') add_stylesheet (req, 'hw/css/azcalendar.css') if req.method == 'GET' and req.args.has_key('id'): evt = Event.get_event(self.env,req.args['id']) req.hdf['azcalendar.evid'] = req.args['id'] req.hdf['azcalendar.title'] = evt.get_title() req.hdf['azcalendar.author'] = evt.get_author() req.hdf['azcalendar.time_begin'] = time.strftime("%Y/%m/%d %H:%M",time.localtime(evt.get_time_begin())) req.hdf['azcalendar.time_end'] = time.strftime("%Y/%m/%d %H:%M",time.localtime(evt.get_time_end())) req.hdf['azcalendar.event.'+str(EventType[evt.get_type()])] = 1 req.hdf['azcalendar.priority.'+str(EventPriority[evt.get_priority()])] = 1 req.hdf['azcalendar.last_update'] = time.strftime("%Y/%m/%d %H:%M:%S",time.localtime(evt.get_time_update())) return 'azevent.cs', None elif req.method == 'GET' and req.args.has_key('update_event'): req.perm.assert_permission('CAL_EDIT') begin_time, end_time, begin_stamp, end_stamp \ = caltools.parse_time_begin_end(req.args['time_begin'], req.args['time_end']) evt = Event.get_event(self.env,req.args['evid']) #evt.set_author(req.authname) evt.set_type(req.args['type']) evt.set_priority(req.args['priority']) evt.set_time_update(int(time.time())) evt.set_time_begin(begin_stamp) evt.set_time_end(end_stamp) evt.set_title(req.args['title']) date = time.strftime("%Y%m%d", begin_time) req.hdf['redir_url'] = str(self.env.href.azcalendar()) + "?date=%s" % date return evt.update(self.env, req) elif req.method == 'GET' and req.args.has_key('delete_event'): req.perm.assert_permission('CAL_ADMIN') begin_time, end_time, begin_stamp, end_stamp \ = caltools.parse_time_begin_end(req.args['time_begin'], req.args['time_end']) evt = Event.get_event(self.env,req.args['evid']) date = time.strftime("%Y%m%d", begin_time) req.hdf['redir_url'] = str(self.env.href.azcalendar()) + "?date=%s" % date return evt.delete(self.env)
def process_delete(self, req): req.perm.assert_permission('CAL_ADMIN') if req.args.has_key('id'): import re xid = req.args['id'] if not re.match (r"[0-9]+", xid): return self.process_invalid(req) evt = Event.get_event(self.env,req.args['id']) evt.delete(self.env) return self.process_show(req)
def process_add(self, req): req.perm.assert_permission('CAL_EDIT') add_stylesheet (req, 'hw/css/azcalendar.css') if req.method == 'GET' and req.args.has_key('date'): req.hdf['azcalendar.time_begin'] = time.strftime("%Y/%m/%d",(time.strptime(req.args['date'],"%Y%m%d"))) req.hdf['azcalendar.time_end'] = time.strftime("%Y/%m/%d",(time.strptime(req.args['date'],"%Y%m%d"))) return 'add_event.cs', None elif req.method == 'GET' and req.args.has_key('new_event'): begin_time, end_time, begin_stamp, end_stamp \ = caltools.parse_time_begin_end(req.args['time_begin'], req.args['time_end']) date = time.strftime("%Y%m%d", begin_time) req.hdf['redir_url'] = str(self.env.href.azcalendar()) + "?date=%s" % date current_stamp = int(time.time()) # Events with id 0 are created automatically by a DB layer. author = req.authname evt = Event(0, author, current_stamp, current_stamp, begin_stamp, end_stamp, req.args['type'], req.args['priority'], req.args['title']) return evt.save(self.env, req)
def create_event(session, game_id, message_id, type, created_by, description='{}', completed=0): event = Event(game_id=game_id, message_id=message_id, type=type, description=description, created_by=created_by, completed=completed) session.add(event) session.commit() return event
def update_event( eid, add_invitees=None, rm_invitees=None, title=None, event=None): if not event: event = Event.by_guid(eid) if title: event.value = title event.save() for uid in (add_invitees or []): event.invitees.add(guid=uid) entry = FeedEntry() entry.value = '%s invited you to %s' % (req.user.value, event.value) entry.save() User(dh={'id': uid}).feed.add(entry) for uid in (rm_invitees or []): event.invitees.remove(guid=uid)
def onMessageEvent(self, message, topics, data): if topics[1] == "add": # Try grab the sensor from the DB try: sensor = Sensor.objects.get(sensor=topics[-1]) except Exception as e: sensor = None if sensor is None: # Create sensor in event db and add event sensor = Sensor() sensor.sensor = topics[-1] event = Event() event.event_type = data['event-type'] if data.get('target') is not None: event.target = data['target'] event.logic = data['logic'] event.logic_value = data['logic-value'] if data.get('warning-message') is not None: event.warning_message = data['warning-message'] if data.get('actuation-type') is not None: event.actuation_type = data['actuation-type'] if data.get('actuation-state') is not None: event.actuation_state = data['actuation-state'] if data.get('time') is not None: event.time = data['time'] sensor.events.append(event) try: sensor.save() except Exception as e: return print("Couldn't save to event db: " + str(e)) return print("Event saved to db") elif topics[1] == "delete": try: sensor = Sensor.objects.get(sensor=topics[-1]) except Exception as e: sensor = None if sensor is None: # Create sensor in event db and add event return print("Sensor not found") notfound = True # Index the wanted event for idx, eventidx in enumerate(sensor.events): if str(eventidx['uuid']) == data['uuid']: notfound = False sensor.events.pop(idx) if notfound is True: return print("Event couldn't be deleted, not found") try: sensor.save() except Exception as e: return print("Error saving deletion to db" + str(e)) return print("Event " + data['uuid'] + " deleted") else: return print("Channel " + message.topic + " not handled")
def process_show(self, req): req.perm.assert_permission('CAL_VIEW') def stamp_dow (stamp): return time.localtime(stamp)[6] def stamp_floattime (stamp): t = time.localtime(stamp) return t[3] + t[4]/60.0 DIV = 4 def round_begin (x): import math return math.floor (x * DIV) / float (DIV) def round_end (x): import math return math.ceil (x * DIV) / float (DIV) try: date = time.strptime(req.args['date'],"%Y%m%d") except: date = time.localtime () cweek = [[] for _ in xrange(7)] week_range = caltools.get_week_range(date) bg, en = time.mktime(week_range[0]), time.mktime(week_range[1]) for ev in Event.events_between (self.env, bg, en,req.authname): begin = max (bg, ev.get_time_begin ()) end = min (en, ev.get_time_end ()) - 1 for d in xrange(stamp_dow(begin), stamp_dow(end)+1): cweek[d].append(ev) week_start = week_range[0] day_layouts = [cal_layout.layout (evts, round_begin, round_end) for evts in cweek] for d in xrange (len (day_layouts)): today = caltools.relative_day(week_start, d) today_stamp = time.mktime (today) tomorrow_stamp = today_stamp + 24 * 60 * 60 req.hdf['azcalendar.events.%d.date.year' % d] = today[0] req.hdf['azcalendar.events.%d.date.month' % d] = today[1] req.hdf['azcalendar.events.%d.date.day' % d] = today[2] for l in xrange (len (day_layouts[d])): for ev in day_layouts[d][l]: begin = ev.get_time_begin () if begin < today_stamp: begin = 0.0 else: begin = round_begin (stamp_floattime (begin)) end = ev.get_time_end () if end >= tomorrow_stamp: end = 24.0 else: end = round_end (stamp_floattime (end)) base = 'azcalendar.events.%d.events.%d.%d' % (d, l, ev.get_id ()) req.hdf[base + '.id'] = ev.get_id () req.hdf[base + '.title'] = ev.get_title () req.hdf[base + '.priority'] = str(EventPriority[ev.get_priority ()]) req.hdf[base + '.brd_begin'] = int (round (begin * DIV)) req.hdf[base + '.brd_end'] = int (round (end * DIV)) if ev.get_time_begin () < today_stamp or ev.get_time_end () > tomorrow_stamp: fmt = "%d.%m.%Y %H:%M" else: fmt = "%H:%M" req.hdf[base + '.time_begin'] = time.strftime (fmt, time.localtime (ev.get_time_begin())) req.hdf[base + '.time_end'] = time.strftime (fmt, time.localtime (ev.get_time_end())) display_months = [] dm_year, dm_month = caltools.get_month_range (week_start)[0][:2] prev_year, prev_month, prev_day = date[:3] prev_month -= 1 if prev_month < 1: prev_month += 12 prev_year -= 1 prev_day = min (calendar.monthrange (prev_year, prev_month)[1], prev_day) next_year, next_month, next_day = date[:3] next_month += 1 if next_month > 12: next_month -= 12 next_year += 1 next_day = min (calendar.monthrange (next_year, next_month)[1], next_day) for i in range(3): month_range = caltools.get_month_range (tuple([dm_year, dm_month, 1] + [0 for i in range(6)])) interesting_days = {} bg, en = time.mktime(month_range[0]), time.mktime(month_range[1]) evts = Event.events_between (self.env, bg, en, req.authname) for ev in evts: begin = ev.get_time_begin() if begin < bg: begin = 1 else: begin = time.localtime(begin)[2] end = ev.get_time_end() if end > en: end = calendar.monthrange(dm_year, dm_month)[1] else: end = time.localtime(end)[2] priority = ev.get_priority() # Mark interesting days. for day in range (begin, end + 1): if day not in interesting_days or interesting_days[day] < priority: interesting_days[day] = priority interesting_days_l = [(day, str(EventPriority[interesting_days[day]])) for day in interesting_days.keys()] display_months.append ((dm_month - 1, dm_year, interesting_days_l)) dm_month += 1 if dm_month > 12: dm_year += 1 dm_month = 1 req.hdf['azcalendar.prev_date'] = "%04d%02d%02d" % (prev_year, prev_month, prev_day) req.hdf['azcalendar.today_date'] = time.strftime ("%Y%m%d") req.hdf['azcalendar.next_date'] = "%04d%02d%02d" % (next_year, next_month, next_day) for m in xrange (len (display_months)): month, year, impdays = display_months[m] _, numdays = calendar.monthrange (year, month + 1) firstday = calendar.weekday(year, month + 1, 1) req.hdf['azcalendar.months.%d.month' % m] = month req.hdf['azcalendar.months.%d.year' % m] = year req.hdf['azcalendar.months.%d.firstday' % m] = firstday req.hdf['azcalendar.months.%d.numdays' % m] = numdays for d in xrange (len (impdays)): day, priority = impdays[d] req.hdf['azcalendar.months.%d.impdays.%d' % (m, day)] = priority req.hdf['azcalendar.div'] = str(DIV) req.hdf['title'] = "Calendar" add_stylesheet (req, 'hw/css/azcalendar.css') return 'azcalendar.cs', None