def uninstall(self): print('uninstall') print('miao') event = Event.objects( identifier="SHU_calendar_%s" % year).first() Activity.objects(event=event).delete() event.delete()
def post(self): now = datetime.datetime.now() args = request.get_json() event = Event( user=current_user.id, title=args.get('title', ''), remark=args.get('remark', ''), ) event.save() start_text = args.get( 'start', '{}-{}-{}-{}-{}'.format(now.year, now.month, now.day, 0, 0)) end_text = args.get( 'end', '{}-{}-{}-{}-{}'.format(now.year, now.month, now.day + 1, 0, 0)) start = datetime.datetime(*(start_text.split('-'))) end = datetime.datetime(*(end_text.split('-'))) sub_event = Activity(category=args.get('category', ''), event=event, title=args.get('title', ''), place=args.get('place', ''), start=start, end=end) sub_event.save() return jsonify(activity=sub_event)
def install_acdemic_year(self): if self.year == 2017: sub_event = Activity(title='上海大学%s-%s学年' % (self.year, self.year + 1), key='year', args=str(self.year), category='school_calendar', start=datetime.datetime(2017, 9, 4), end=datetime.datetime(2018, 8, 27), event=self.event) sub_event.save()
def install_school_week(self): if self.year == 2017: weeks = self.weeks() for week in weeks: schedule_event = Activity( start=week['start'], end=week['end'], title=week['title'], key=week['key'], category='school_calendar', args=week['args'], event=self.event) schedule_event.save()
def term(self): term_event = Activity.objects( start__gte=self.date, end__lte=self.date, key='term').first() if term_event is not None: return int(term_event.args.split('_')[-1]) else: return 0
def week(self): week_event = Activity.objects( start__gte=self.date, end__lte=self.date, key='week').first() if week_event is not None: return int(week_event.args.split('_')[-1]) else: return 0
def year(self): year_event = Activity.objects( start__gte=self.date, end__lte=self.date, key='year').first() if year_event is not None: return int(year_event.args.split('_')[-1]) else: return 0
def this_year(date=datetime.datetime.now()): year_event = Activity.objects(start__gte=date, end__lte=date, key='year').first() if year_event is not None: return int(year_event.args.split('_')[-1]) else: return 0
def this_week(date=datetime.datetime.now()): week_event = Activity.objects(start__gte=date, end__lte=date, key='week').first() if week_event is not None: return int(week_event.args.split('_')[-1]) else: return 0
def this_term(date=datetime.datetime.now()): term_event = Activity.objects(start__gte=date, end__lte=date, key='term').first() if term_event is not None: return int(term_event.args.split('_')[-1]) else: return 0
def course(self): course_event = Activity.objects( start__gte=self.date, end__lte=self.date, key='course_basic').first() if course_event is not None: return int(course_event.args.split('_')[-1]) else: return 0
def this_course(date=datetime.datetime.now()): course_event = Activity.objects(start__gte=date, end__lte=date, key='course_basic').first() if course_event is not None: return int(course_event.args.split('_')[-1]) else: return 0
def this_year(self): year_event = Activity.objects(start__gte=date, end__lte=date, key='year').first() if year_event is not None: return int(year_event.args) else: return 0
def main_install(self): self.event = Event.objects( identifier="SHU_calendar_%s" % self.year).first() if self.event is None: self.event = Event(identifier='SHU_calendar_%s' % self.year, title='上海大学%s-%s学年校历' % (self.year, self.year + 1)) self.event.save() print('install school_term_%s start' % self.year) if self.event.need_update: print('update school_term_%s start' % self.year) Activity.objects(event=self.event).delete() print('delete old school_term_%s start' % self.year) self.install_acdemic_year() self.install_school_term() self.install_school_week() self.install_basic_schedule_course() self.event.need_update = False self.event.save()
def install_school_term(self): if self.year == 2017: terms = (((2017, 9, 4), (2017, 12, 11)), ((2017, 12, 11), (2018, 3, 26)), ((2018, 3, 26), (2018, 6, 18)), ((2018, 6, 18), (2018, 8, 27))) term_names = ('秋季学期', '冬季学期', '春季学期', '夏季学期') for i in range(4): Activity(title='上海大学{}-{}学年{}'.format(self.year, self.year + 1, term_names[i]), key='term', args='{}_{}'.format(self.year, i + 1), category='school_calendar', start=datetime.datetime( terms[i][0][0], terms[i][0][1], terms[i][0][2]), end=datetime.datetime( terms[i][1][0], terms[i][1][1], terms[i][1][2]), event=self.event).save()
def get(self, event_id=None, page=1): if not event_id: now = datetime.datetime.now() start_text = request.args.get('start', now.timestamp()) end_text = request.args.get('end', now.timestamp()) start = datetime.datetime.utcfromtimestamp(int(start_text)) end = datetime.datetime.utcfromtimestamp(int(end_text)) activities = Activity.objects( Q(visible='public') & ((Q(start__lte=end) & Q(end__gte=end)) | (Q(start__gte=start) & Q(end__lte=end)))).paginate( page=page, per_page=100) return jsonify( [activity.to_dict() for activity in activities.items]) else: event = Event.objects.get_or_404(id=event_id) return jsonify(event)
def course_subevent(self, day, weekday, title, args): times = [(8, 0), (8, 55), (10, 0), (10, 55), (12, 10), (13, 5), (14, 10), (15, 5), (16, 0), (16, 55), (18, 0), (18, 55), (19, 50)] for i in range(12): start_delta = delta(hours=times[i][0], minutes=times[i][1]) end_delta = delta( hours=times[i][0], minutes=times[i][1]) + delta(minutes=45) course_event = { 'start': day + start_delta, 'end': day + end_delta, 'title': title, 'key': 'course_basic', 'args': '{}_{}_{}'.format(args, weekday + 1, i + 1), 'event': self.event, 'category': 'school_calendar', 'visible': 'private' } Activity(**course_event).save()