Esempio n. 1
0
 def uninstall(self):
     print('uninstall')
     print('miao')
     event = Event.objects(
         identifier="SHU_calendar_%s" % year).first()
     Activity.objects(event=event).delete()
     event.delete()
Esempio n. 2
0
 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)
Esempio n. 3
0
 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()
Esempio n. 4
0
 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()
Esempio n. 5
0
 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
Esempio n. 6
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
Esempio n. 7
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
Esempio n. 8
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
Esempio n. 9
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
Esempio n. 10
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
Esempio n. 11
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
Esempio n. 12
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
Esempio n. 13
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
Esempio n. 14
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()
Esempio n. 15
0
 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()
Esempio n. 16
0
 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)
Esempio n. 17
0
 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()