def handle_insert(self, action, data): session = Session() sitting = domain.GroupSitting() trusted = removeSecurityProxy(ISchedulingContext(self.context)) group = session.query(domain.Group).get(trusted.group_id) if ("rec_type" not in data.keys()) or (data["rec_type"] == ""): sitting.start_date = datetime.datetime.strptime(data["start_date"], '%Y-%m-%d %H:%M') sitting.end_date = datetime.datetime.strptime(data["end_date"], '%Y-%m-%d %H:%M') sitting.group_id = trusted.group_id if "language" in data.keys(): sitting.language = data["language"] if "venue" in data.keys(): sitting.venue_id = data["venue"] session.add(sitting) notify(ObjectCreatedEvent(sitting)) session.commit() self.request.response.setHeader('Content-type', 'text/xml') return '<data><action type="inserted" sid="'+str(data["ids"])+'" tid="'+str(sitting.sitting_id)+'" /></data>' else: try: recurrence_start_date = datetime.datetime.strptime(data["start_date"], '%Y-%m-%d %H:%M') recurrence_end_date = datetime.datetime.strptime(data["end_date"], '%Y-%m-%d %H:%M') except: print "Date is not in the correct format" year = timedelta(days=365) #max end date is one year from now or end_date of the group whichever is sooner if (group is not None) and (group.end_date is not None): if (datetime.datetime.now() + year) < group.end_date: end = datetime.datetime.now() + year else: end = group.end_date if recurrence_end_date > end: recurrence_end_date = end else: if recurrence_end_date > (datetime.datetime.now() + year): recurrence_end_date = datetime.datetime.now() + year recurrence_type = data["rec_type"] length = data["event_length"] sitting_length = timedelta(seconds=int(length)) dates = self.generate_recurrence_dates(recurrence_start_date, recurrence_end_date, recurrence_type) output = '<data>' for date in dates: sitting = domain.GroupSitting() sitting.group_id = trusted.group_id sitting.start_date = date sitting.end_date = date + sitting_length sitting.status = None if "language" in data.keys(): sitting.language = data["language"] if "venue" in data.keys(): sitting.venue_id = data["venue"] session.add(sitting) notify(ObjectCreatedEvent(sitting)) output = output+'<action type="inserted" sid="'+str(data["ids"])+'" tid="'+str(sitting.sitting_id)+'" />' session.commit() output = output + '</data>' self.request.response.setHeader('Content-type', 'text/xml') return output
def handle_update(self, action, data): session = Session() self.template_data = [] sitting = domain.GroupSitting() sitting = session.query(domain.GroupSitting).get(data["ids"]) sitting.start_date = data["start_date"].replace(tzinfo=None) sitting.end_date = data["end_date"].replace(tzinfo=None) if "language" in data.keys(): sitting.language = data["language"] if "venue" in data.keys(): sitting.venue_id = data["venue"] sitting.short_name = data.get("short_name", None) sitting.activity_type = data.get("activity_type", None) sitting.meeting_type = data.get("meeting_type", None) sitting.convocation_type = data.get("convocation_type", None) # set extra data needed by template session.flush() notify(ObjectModifiedEvent(sitting)) self.template_data.append({ "group_sitting_id": sitting.group_sitting_id, "action": "inserted", "ids": data["ids"] }) session.flush() self.request.response.setHeader('Content-type', 'text/xml') return self.xml_template()
def handle_update(self, action, data): session = Session() sitting = domain.GroupSitting() sitting = session.query(domain.GroupSitting).get(data["ids"]) sitting.start_date = data["start_date"] sitting.end_date = data["end_date"] if "language" in data.keys(): sitting.language = data["language"] if "venue" in data.keys(): sitting.venue_id = data["venue"] session.update(sitting) session.commit() self.request.response.setHeader('Content-type', 'text/xml') return '<data><action type="updated" sid="'+str(data["ids"])+'" tid="'+str(sitting.sitting_id)+'" /></data>'
def handle_update(self, action, data): session = Session() sitting = domain.GroupSitting() sitting = session.query(domain.GroupSitting).get(data["ids"]) sitting.start_date = data["start_date"] sitting.end_date = data["end_date"] if "language" in data.keys(): sitting.language = data["language"] if "venue" in data.keys(): sitting.venue_id = data["venue"] # set extra data needed by template session.update(sitting) self.template_data.append({"sitting_id": sitting.sitting_id, "action": "inserted", "ids": data["ids"]}) session.commit() self.request.response.setHeader('Content-type', 'text/xml') return self.template()
def __call__(self): ids = self.request.form['ids'] action = self.request.form[ids + "_!nativeeditor_status"] session = Session() sitting = domain.GroupSitting() trusted = removeSecurityProxy(self.context) sitting.group_id = trusted.group_id if action == "inserted": sitting.start_date = self.request.form[ids + "_start_date"] sitting.end_date = self.request.form[ids + "_end_date"] sitting.sitting_type_id = self.request.form[ids + "_type"] sitting.status = None if ids + "_type" in self.request.form.keys(): sitting.sitting_type_id = self.request.form[ids + "_type"] if ids + "_language" in self.request.form.keys(): sitting.language = self.request.form[ids + "_language"] if ids + "_venue" in self.request.form.keys(): sitting.venue_id = self.request.form[ids + "_venue"] session.add(sitting) notify(ObjectCreatedEvent(sitting)) session.commit() elif action == "updated": sitting = session.query(domain.GroupSitting).get(ids) sitting.start_date = self.request.form[ids + "_start_date"] sitting.end_date = self.request.form[ids + "_end_date"] if ids + "_type" in self.request.form.keys(): sitting.sitting_type_id = self.request.form[ids + "_type"] if ids + "_language" in self.request.form.keys(): sitting.language = self.request.form[ids + "_language"] if ids + "_venue" in self.request.form.keys(): sitting.venue_id = self.request.form[ids + "_venue"] session.update(sitting) session.commit() elif action == "deleted": sitting = session.query(domain.GroupSitting).get(ids) session.delete(sitting) session.commit() self.request.response.setHeader('Content-type', 'text/xml') return '<data><action type="' + action + '" sid="' + str( ids) + '" tid="' + str(sitting.sitting_id) + '" /></data>'
def create_sitting(group_id=1, language="en"): """Sitting to schedule content.""" session = Session() st = domain.GroupSittingType() st.group_sitting_type = u"morning" st.start_time = datetime.time(8,30) st.end_time = datetime.time(12,30) st.language = language session.add(st) session.flush() sitting = domain.GroupSitting() sitting.start_date = datetime.datetime.now() sitting.end_date = datetime.datetime.now() sitting.group_sitting_type_id = st.group_sitting_type_id sitting.group_id = group_id sitting.language = language session.add(sitting) session.flush() return sitting
def handle_insert(self, action, data): session = Session() self.template_data = [] trusted = removeSecurityProxy(ISchedulingContext(self.context)) if ("rec_type" in data.keys()) and (data["rec_type"] is not None): # !+ DATETIME(miano, dec-2010) the datetime widget above returns # aware datetime objects while the current database setup only # supports naive objects. The lines below(and in subsequent actions) # convert them to naive datetimes recurrence_start_date = data["start_date"].replace(tzinfo=None) recurrence_end_date = data["end_date"].replace(tzinfo=None) length = data["event_length"] sitting_length = timedelta(seconds=int(length)) # # Check the end date of the recurrence # The end date is set to be the end date of the current group # or one year from the present date whichever is sooner. group = trusted.get_group() # If group is none then there is a big problem assert group is not None year = timedelta(days=365) now = datetime.datetime.now() if ((group.end_date is not None) and ((now + year) < group.end_date)) or (group.end_date is None): end = now + year else: end = group.end_date if recurrence_end_date > end: recurrence_end_date = end dates = utils.generate_recurrence_dates(recurrence_start_date, recurrence_end_date, data["rec_type"]) recurrent_sittings = [] for date in dates: sitting = domain.GroupSitting() sitting.group_id = trusted.group_id sitting.start_date = date sitting.end_date = date + sitting_length sitting.language = data["language"] sitting.venue_id = data["venue"] session.add(sitting) recurrent_sittings.append(sitting) session.flush() for s in recurrent_sittings: notify(ObjectCreatedEvent(s)) self.template_data.append({ "group_sitting_id": s.group_sitting_id, "action": "inserted", "ids": data["ids"] }) self.request.response.setHeader('Content-type', 'text/xml') return self.xml_template() else: sitting = domain.GroupSitting() sitting.start_date = data["start_date"].replace(tzinfo=None) sitting.end_date = data["end_date"].replace(tzinfo=None) sitting.group_id = trusted.group_id sitting.language = data["language"] sitting.venue_id = data["venue"] session.add(sitting) session.flush() notify(ObjectCreatedEvent(sitting)) self.template_data.append({ "group_sitting_id": sitting.group_sitting_id, "action": "inserted", "ids": data["ids"] }) self.request.response.setHeader('Content-type', 'text/xml') return self.xml_template()
def handle_insert(self, action, data): self.template_data = [] session = Session() trusted = removeSecurityProxy(ISchedulingContext(self.context)) if ("rec_type" in data.keys()) and (data["rec_type"] is not None): try: recurrence_start_date = datetime.datetime \ .strptime(data["start_date"], '%Y-%m-%d %H:%M') except: log.error("The start date of the recurrence \ is not in the correct format") try: recurrence_end_date = datetime.datetime.strptime( data["end_date"], '%Y-%m-%d %H:%M') except: log.error("The start date of the recurrence is not in \ the correct format") length = data["event_length"] sitting_length = timedelta(seconds=int(length)) # Check the end date of the recurrence # The end date is set to be the end date of the current group # or one year from the present date whichever is sooner. group = trusted.get_group() # If group is none then there is a big problem assert group is not None year = timedelta(days=365) now = datetime.datetime.now() if ((group.end_date is not None) and ((now + year) < group.end_date)) or (group.end_date is None): end = now + year else: end = group.end_date if recurrence_end_date > end: recurrence_end_date = end dates = utils.generate_recurrence_dates(recurrence_start_date, recurrence_end_date, data["rec_type"]) for date in dates: sitting = domain.GroupSitting() sitting.group_id = trusted.group_id sitting.start_date = date sitting.end_date = date + sitting_length sitting.status = None if "language" in data.keys(): sitting.language = data["language"] if "venue" in data.keys(): sitting.venue_id = data["venue"] # set extra data needed by template sitting.ids = data["ids"] sitting.action = 'inserted' session.add(sitting) # commiting after adding a sitting is incredibly inefficient # but thats the only way to get the sitting id. # Adding recurrring sittings is not a recurrent activity (see, # what I did there :)) so we can live with it. session.commit(sitting) notify(ObjectCreatedEvent(sitting)) self.template_data.append({"sitting_id": sitting.sitting_id, "action": "inserted", "ids": data["ids"]}) self.request.response.setHeader('Content-type', 'text/xml') return self.template() else: sitting = domain.GroupSitting() try: sitting.start_date = datetime.datetime.strptime( data["start_date"], '%Y-%m-%d %H:%M') except: log.error("The start date of the sitting \ is not in the correct format") try: sitting.end_date = datetime.datetime.strptime(data["end_date"], '%Y-%m-%d %H:%M') except: log.error("The end date of the sitting is not in the correct format") sitting.group_id = trusted.group_id if "language" in data.keys(): sitting.language = data["language"] if "venue" in data.keys(): sitting.venue_id = data["venue"] # set extra data needed by template sitting.ids = data["ids"] sitting.action = 'inserted' session.add(sitting) session.commit() notify(ObjectCreatedEvent(sitting)) self.template_data.append({"sitting_id": sitting.sitting_id, "action": "inserted", "ids": data["ids"]}) self.request.response.setHeader('Content-type', 'text/xml') return self.template()