コード例 #1
0
ファイル: plans.py プロジェクト: matrufsc2/matrufsc2
def create_plan(data):
    if "code" not in data or "data" not in data:
        return False
    code = data["code"]
    plan_id = Plan.generate_id_string(code)
    if get_plan(plan_id): # Check in cache AND in database
        return False
    model = Plan(
        key=ndb.Key(Plan, plan_id),
        code=code,
        history=[{
            "id": calendar.timegm(datetime.datetime.now().utctimetuple()),
            "data": data["data"]
        }]
    )
    model.put(use_cache=False, use_memcache=True)
    return model
コード例 #2
0
	def post(self, section, page=None):
	
		reply = {'success': True }

		########################################################
		### Index
		


		########################################################
		### TimeLIne
		if section == 'timeline':
			reply['timeline'] = self.get_timeline()



		########################################################
		### Requests

		elif section == 'requests':
			reply['requests'] = self.get_schedule()
		
		elif section == 'request':

			### Fetch Request
			if page == 'fetch':
				fppID = self.request.get("fppID")
				if not fppID:
					reply['error'] = 'No fppID'

				else:
					if fppID == '0':
						t = time.time()
						d = datetime.datetime.fromtimestamp(t - t % (60 *15) )
						dic = {	'callsign':  self.request.cookies['sessIdent'] , 
								'email': '',
								'dep': '',
								'dep_date': d.strftime(conf.MYSQL_DATETIME),
								'dep_atc': '',
								'arr': '',
								'arr_date': '',
								'arr_atc': '',
								'comment': '',
								'fppID': '0'
						}

					else:
						f = db.get( db.Key(fppID) )
						dic = {	'callsign': f.callsign, 
								'email': 'email',
								'dep': f.dep,
								'dep_date': f.dep_date.strftime(conf.MYSQL_DATETIME),
								'dep_atc': f.dep_atc,
								'arr': f.arr,
								'arr_date': f.arr_date.strftime(conf.MYSQL_DATETIME),
								'arr_atc': f.arr_atc,
								'comment': f.comment,
								'fppID': str(f.key()),
						}
					reply['fpp'] = dic

			###################
			### Edit Request
			elif page == 'edit':
				fppID = self.request.get("fppID")
				if not fppID:
					reply['error'] = 'No fppID'
				else:
					callsign = self.request.get("callsign")
					if fppID == '0':
						fp = FPp(callsign = callsign)
						subject = 'New FP: %s' % callsign
					else:
						subject = 'Edit FP: %s' % callsign
						fp = db.get( db.Key(fppID) )
						fp.cookie = self.request.cookies['sessID'] 
						fp.callsign = callsign
					fp.dep = self.request.get("dep")
					fp.dep_date = self.get_date(self.request.get("dep_date"), self.request.get("dep_time"))
					
					fp.dep_atc = self.request.get("dep_atc")

					fp.arr = self.request.get("arr")
					fp.arr_date = self.get_date(self.request.get("arr_date"), self.request.get("arr_time"))
					fp.arr_atc = self.request.get("arr_atc")

					fp.comment = self.request.get("comment")
					fp.email = self.request.get("email")
					fp.put()
					reply['fppID'] = str(fp.key())
					mail.send_mail(	sender = conf.EMAIL,
										to = "Dev <*****@*****.**>",
										subject = subject,
										body = "Fp edited"
					)	
			###################
			### Delete Request
			elif page == 'delete':
				fppID = self.request.get("fppID")
				if not fppID:
					reply['error'] = 'No fppID'
				fp = db.get( db.Key(fppID) )
				fp.delete()


		########################################################
		### Crew
		elif section == 'crew':
			if 'sessID' in self.request.cookies:
				sessID  = self.request.cookies['sessID'] 
			
			if page == 'edit':
					crew = db.get( db.Key(sessID) )
					crew.name = self.request.get('name')
					crew.email = self.request.get('email')

					crew.callsign = self.request.get('callsign')
					crew.cvs = self.request.get('cvs')
					crew.irc = self.request.get('irc')
					crew.forum = self.request.get('forum')
					crew.wiki = self.request.get('wiki')

					crew.pilot = False if self.request.get('pilot') == '' else True
					crew.atc = False if self.request.get('atc') == '' else True
					crew.fgcom = False if self.request.get('fgcom') == '' else True
					crew.location = self.request.get('location')
					crew.put()
					reply['crew+saved'] = True
					cook_str = 'sessIdent=%s; expires=Fri, 31-Dec-2020 23:59:59 GMT; Path=/;'	% crew.callsign
					self.response.headers.add_header(	'Set-Cookie', 
														cook_str
					)
			else:
				crew = db.get( db.Key(sessID) )
				reply['crew'] = [{'name': crew.name, 'email': crew.email, 'callsign': crew.callsign,
								 'cvs': crew.cvs, 'forum': crew.forum, 'irc': crew.irc, 'wiki': crew.wiki,
								'pilot': crew.pilot, 'atc': crew.atc, 'fgcom': crew.fgcom, 
								'date_created': crew.date_created.strftime(conf.MYSQL_DATETIME),
								'location': crew.location, 'ident': crew.ident
								}]




		########################################################
		### Airpots
		elif section == 'airports':
			
			search = self.request.get("search")
			reply['airports'] = []
			if not search:
				pass
			else:
				search = search.upper()
				reply['search'] = search
				for icao in airports:
					ss = icao + ' ' + airports[icao]
					if ss.upper().find(search) > -1:
						reply['airports'].append({'icao': icao, 'airport': airports[icao]})

		########################################################
		###  Plans
		elif section == 'plans':
			col_len = -1
			q = Plan.all()
			plans = q.fetch(1000)
			ret = []
			for p in plans:
				route = json.loads(p.route)
				ret.append({'dep': p.dep, 'dest': p.dest, 'cruise': p.cruise, 'route': route, 'planID': str(p.key())})
				if len(route) > col_len:
					col_len = len(route)
			reply['plans'] = ret
			reply['col_len'] = col_len

		elif section == 'plan':	
			planID = '0'
			if page == 'edit':
				xml_str = self.request.get("xml")
				if planID == '0':
					
					data = self.parse_plan_xml(xml_str)
					
					plan = Plan()
					plan.xml = xml_str
					plan.dep = data['dep']
					plan.dest = data['dest']
					plan.route = json.dumps(data['route'])
					plan.put()
					reply['planID'] = str(plan.key())
					




		########################################################
		### Return Data
		ret_type =  self.request.get('retDataType')
		if ret_type:
			if ret_type == 'schedule':
				reply['schedule'] = self.get_schedule()
			if ret_type == 'timeline':
				reply['timeline'] = self.get_timeline()


		########################################################
		### Send
		self.response.headers.add_header('Content-Type','text/plain')
		self.response.out.write(json.dumps(reply))