Пример #1
0
    def post(self):
        user = self.must_get_user()
        event_id = self.get_argument('id')
        _search = {'user.$id':user._id,
                   '_id': ObjectId(event_id)}

        event = self.db.Event.one(_search)
        if not event:
            self.write_json(dict(error="ERROR: Invalid Event"))
            return
        if event.user != user:
            self.write_json(dict(error="ERROR: Not your event"))
            return

        title = self.get_argument('title').strip()
        duration = float(self.get_argument('duration'))
        external_url = self.get_argument('external_url', u'').strip()
        description = self.get_argument('description', u'').strip()

        if event.all_day:
            _before = 1 + (event.end - event.start).days
            if _before != duration:
                event.end += datetime.timedelta(days=duration - _before)
                diff = 1 + (event.end - event.start).days
                if diff < 1:
                    self.write_json(dict(error=\
                      "ERROR. Duration can't be less than 1 day"))
                    return
        else:
            _before = (event['end'] - event['start']).seconds / 60.0 / 60
            if _before != duration:
                event.end += datetime.timedelta(hours=duration - _before)
                if event.start >= event.end:
                    self.write_json(dict(error="ERROR. Duration too short"))
                    return

        # all possible validation and checking done, do the save
        event.title = title
        event.external_url = external_url
        event.description = description
        event.tags = title_to_tags(title)
        event.save()

        log_event(self.db, user, event, actions.ACTION_EDIT,
                  contexts.CONTEXT_SMARTPHONE)

        data = dict(timestamp=mktime(event.modify_date.timetuple()))
        event_data = dict(title=title,
                          external_url=external_url,
                          description=description,
                          id=str(event._id),
                          all_day=event.all_day,
                          )
        if event.all_day:
            event_data['days'] = 1 + (event.end - event.start).days
        else:
            event_data['hours'] = (event.end - event.start).seconds / 60.0 / 60
        event_data['length'] = self.describe_length(event)
        data['event'] = self.serialize_dict(event_data)
        self.write_json(data)
Пример #2
0
    def post(self):
        user = self.must_get_user()
        event_id = self.get_argument('id')
        _search = {'user.$id': user._id, '_id': ObjectId(event_id)}

        event = self.db.Event.one(_search)
        if not event:
            self.write_json(dict(error="ERROR: Invalid Event"))
            return
        if event.user != user:
            self.write_json(dict(error="ERROR: Not your event"))
            return

        title = self.get_argument('title').strip()
        duration = float(self.get_argument('duration'))
        external_url = self.get_argument('external_url', u'').strip()
        description = self.get_argument('description', u'').strip()

        if event.all_day:
            _before = 1 + (event.end - event.start).days
            if _before != duration:
                event.end += datetime.timedelta(days=duration - _before)
                diff = 1 + (event.end - event.start).days
                if diff < 1:
                    self.write_json(dict(error=\
                      "ERROR. Duration can't be less than 1 day"))
                    return
        else:
            _before = (event['end'] - event['start']).seconds / 60.0 / 60
            if _before != duration:
                event.end += datetime.timedelta(hours=duration - _before)
                if event.start >= event.end:
                    self.write_json(dict(error="ERROR. Duration too short"))
                    return

        # all possible validation and checking done, do the save
        event.title = title
        event.external_url = external_url
        event.description = description
        event.tags = title_to_tags(title)
        event.save()

        log_event(self.db, user, event, actions.ACTION_EDIT,
                  contexts.CONTEXT_SMARTPHONE)

        data = dict(timestamp=mktime(event.modify_date.timetuple()))
        event_data = dict(
            title=title,
            external_url=external_url,
            description=description,
            id=str(event._id),
            all_day=event.all_day,
        )
        if event.all_day:
            event_data['days'] = 1 + (event.end - event.start).days
        else:
            event_data['hours'] = (event.end - event.start).seconds / 60.0 / 60
        event_data['length'] = self.describe_length(event)
        data['event'] = self.serialize_dict(event_data)
        self.write_json(data)
Пример #3
0
    def post(self):
        user = self.must_get_user()
        title = self.get_argument('title').strip()
        duration = self.get_argument('duration')
        duration_other = self.get_argument('duration_other', '')

        year = int(self.get_argument('year'))
        month = int(self.get_argument('month'))
        day = int(self.get_argument('day'))

        if duration == 'all_day':
            all_day = True
            start = datetime.datetime(year, month, day, 0, 0, 0)
            end = start
        else:
            all_day = False
            now = datetime.datetime.now()
            start = datetime.datetime(year, month, day, now.hour, now.minute,
                                      now.second)
            try:
                if duration == 'other':
                    duration = float(duration_other)
                else:
                    duration = float(duration)
            except ValueError:
                return self.write_json(
                    dict(error="Error! Not a valid other number"))
            if (duration <= 0):
                return self.write_json(
                    dict(error="Error! Duration must be more than zero"))
            end = start + datetime.timedelta(minutes=float(duration) * 60)
        event, created = self.create_event(user,
                                           all_day=all_day,
                                           start=start,
                                           end=end)

        if created:
            log_event(self.db, user, event, actions.ACTION_ADD,
                      contexts.CONTEXT_SMARTPHONE)

        event_json = dict(title=event['title'],
                          id=str(event['_id']),
                          length=self.describe_length(event))
        self.write_json(dict(event=event_json))
Пример #4
0
    def post(self):
        user = self.must_get_user()
        title = self.get_argument('title').strip()
        duration = self.get_argument('duration')
        duration_other = self.get_argument('duration_other', '')

        year = int(self.get_argument('year'))
        month = int(self.get_argument('month'))
        day = int(self.get_argument('day'))

        if duration == 'all_day':
            all_day = True
            start = datetime.datetime(year, month, day, 0, 0, 0)
            end = start
        else:
            all_day = False
            now = datetime.datetime.now()
            start = datetime.datetime(year, month, day, now.hour, now.minute, now.second)
            try:
                if duration == 'other':
                    duration = float(duration_other)
                else:
                    duration = float(duration)
            except ValueError:
                return self.write_json(dict(error="Error! Not a valid other number"))
            if (duration <= 0):
                return self.write_json(dict(error="Error! Duration must be more than zero"))
            end = start + datetime.timedelta(minutes=float(duration) * 60)
        event, created = self.create_event(user, all_day=all_day, start=start, end=end)

        if created:
            log_event(self.db, user, event, actions.ACTION_ADD, contexts.CONTEXT_SMARTPHONE)

        event_json = dict(title=event['title'],
                          id=str(event['_id']),
                          length=self.describe_length(event))
        self.write_json(dict(event=event_json))