def ACreateEvent(): #Access to POST/PUT fields using request.form['name'] #Access to file fields using request.files['name'] params = request.form.copy() poster = request.files.get('poster') if poster != None and allowed_file(poster.filename): filename = secure_filename(poster.filename) poster_path = os.path.join(upload_folder(), filename) poster.save(poster_path) params['poster_path'] = poster_path if "actor" in session: params['owner'] = session['actor'] event = Event(params) if event and event.save(): eventid = Event.last_id() res = { 'label' : '/event/'+str(eventid), 'msg':[ur'Evento creado exitosamente'] } else: res = { 'label' : '/events/new', 'msg':[ur'Error al crear evento'] } #Action code ends here if "actor" in res: if res['actor'] is None: session.pop("actor", None) else: session['actor'] = res['actor'] return json.dumps(res)
def ACreateEvent(): #Access to POST/PUT fields using request.form['name'] #Access to file fields using request.files['name'] params = request.form.copy() poster = request.files.get('poster') if poster != None and allowed_file(poster.filename): filename = secure_filename(poster.filename) poster_path = os.path.join(upload_folder(), filename) poster.save(poster_path) params['poster_path'] = poster_path if "actor" in session: params['owner'] = session['actor'] event = Event(params) if event and event.save(): eventid = Event.last_id() res = { 'label': '/event/' + str(eventid), 'msg': [ur'Evento creado exitosamente'] } else: res = {'label': '/events/new', 'msg': [ur'Error al crear evento']} #Action code ends here if "actor" in res: if res['actor'] is None: session.pop("actor", None) else: session['actor'] = res['actor'] return json.dumps(res)
def get(self): """ get port count """ # get data event = Event() event_data = event.port_count() return event_data
def events(): evs = Event.query(fetchone=False, extra={"state <": Event.State.DELETED}, orderby='open_at asc') resp = [] for each in evs: ev = Event(**each) r = ev.to_dict() r['creator'] = ev.get_creator().to_dict() r['num'] = UserEvent.count(event_id=ev.id, state=UserEvent.State.INIT) resp.append(r) return str(Response(data=resp))
def published_events(): evs = Event.query(fetchone=False, creator=request.user.id, extra={"state <": Event.State.DELETED}, orderby='id desc') resp = [] for each in evs: ev = Event(**each) r = ev.to_dict() r['num'] = UserEvent.count(event_id=ev.id, state=UserEvent.State.INIT) resp.append(r) return str(Response(data=resp))
def VListEvents(): res = {} if "actor" in session: res['actor']=session['actor'] #events = map(lambda x: x.__dict__, Event.all_owned_by(session['actor'])) events = map(lambda x: x.__dict__, Event.all()) else: events = map(lambda x: x.__dict__, Event.all()) res['events'] = events #Action code ends here return json.dumps(res)
def VListEvents(): res = {} if "actor" in session: res['actor'] = session['actor'] #events = map(lambda x: x.__dict__, Event.all_owned_by(session['actor'])) events = map(lambda x: x.__dict__, Event.all()) else: events = map(lambda x: x.__dict__, Event.all()) res['events'] = events #Action code ends here return json.dumps(res)
def construct_event(self, title="A+ Event", description="A delightful event destined to create rejoicing", street_address1="123 Some Pl", street_address2="Apt. 45", city="Stauntonville", state="QX", zip="99775", phone="555-555-5555", website="http://stardrive.org", date=datetime.datetime.now() + datetime.timedelta(days=7)): event = Event(title=title, description=description, street_address1=street_address1, street_address2=street_address2, city=city, state=state, zip=zip, phone=phone, website=website, date=date) event.organization_id = self.construct_organization().id db.session.add(event) db_event = db.session.query(Event).filter_by(title=event.title).first() self.assertEqual(db_event.website, event.website) elastic_index.add_document(db_event, 'Event') return db_event
def delete_event(event_id=0): ev = Event.find(event_id) if ev.creator != request.user.id: return Response(code=ResponseCode.OPERATE_ERROR, msg='没有权限').out() ev.state = Event.State.DELETED ev.save() return Response().out()
def VListUsers(): params = request.args print request.args eventid = params.get('requestedUser') print eventid by_event = False owner = None if eventid is None: users = User.all() else: users = User.from_event(eventid) owner = Event.get_owner(eventid) by_event = True res = { 'users' : users } res['actor'] = None res['by_event'] = by_event res['owner'] = owner if "actor" in session: res['actor']=session['actor'] #Action code goes here, res should be a JSON structure #Action code ends here return json.dumps(res)
def AGenerateCredentials(): #POST/PUT parameters results = [{'label':'/VShowEvent', 'msg':[ur'Credenciales exitosamente generadas']}, {'label':'/VShowEvent', 'msg':[ur'Error al generar credenciales']}, ] eventid = request.args.get('eventId') if eventid is None: res = results[1] else: event = Event.get(eventid) user = session.get('actor') if user is None: user = "******" pdf = create_pdf(render_template('credentials.html', event=event, user=user)) if pdf is None: res = results[1] else: res = results[0] res['credentials'] = pdf if "actor" in res: if res['actor'] is None: session.pop("actor", None) else: session['actor'] = res['actor'] return json.dumps(res)
def VListUsers(): params = request.args print request.args eventid = params.get('requestedUser') print eventid by_event = False owner = None if eventid is None: users = User.all() else: users = User.from_event(eventid) owner = Event.get_owner(eventid) by_event = True res = {'users': users} res['actor'] = None res['by_event'] = by_event res['owner'] = owner if "actor" in session: res['actor'] = session['actor'] #Action code goes here, res should be a JSON structure #Action code ends here return json.dumps(res)
def ADeleteEvent(): #POST/PUT parameters eventid = request.args.get('eventId') event = Event.get(eventid) results = [ { 'label': '/VListEvents', 'msg': [ur'Evento eliminado exitosamente'] }, { 'label': '/VListEvents', 'msg': [ur'Error al eliminar evento'] }, ] if event is not None and event.delete(): res = results[0] else: res = results[1] #Action code goes here, res should be a list with a label and a message #Action code ends here if "actor" in res: if res['actor'] is None: session.pop("actor", None) else: session['actor'] = res['actor'] return json.dumps(res)
def load_events(self): items = [] with open(self.event_file, newline='') as csvfile: reader = csv.reader(csvfile, delimiter=csv.excel.delimiter, quotechar=csv.excel.quotechar) next(reader, None) # skip the headers for row in reader: org = self.get_org_by_name(row[5]) if row[5] else None geocode = self.get_geocode( address_dict={'street': row[8], 'city': row[10], 'state': row[11], 'zip': row[12]}, lat_long_dict={'lat': row[15], 'lng': row[16]} ) event = Event(title=row[0], description=row[1], date=row[2], time=row[3], ticket_cost=row[4], organization=org, primary_contact=row[6], location_name=row[7], street_address1=row[8], street_address2=row[9], city=row[10], state=row[11], zip=row[12], website=row[13], phone=row[14], latitude=geocode['lat'], longitude=geocode['lng']) items.append(event) self.__increment_id_sequence(Resource) for i in range(17, len(row)): if row[i] and row[i] is not '': category = self.get_category_by_name(row[i].strip()) event_id = event.id category_id = category.id items.append(ResourceCategory(resource_id=event_id, category_id=category_id, type='event')) db.session.bulk_save_objects(items) db.session.commit() print("Events loaded. There are now %i events in the database." % db.session.query(Event).count()) print("There are now %i links between events and categories in the database." % db.session.query(ResourceCategory).filter(ResourceCategory.type == 'event').count())
def AReserveEvent(): eventid = request.args.get('eventId') if eventid is None: res = {'label':'/VShowEvent', 'msg':[ur'Error al reservar evento']} else: user = session.get('actor') if user is None: user = "******" event = Event.get(eventid) assistance = Assistance.get(user, event.eventid) if assistance is None and event.update({ 'n_participants' : event.n_participants - 1 }): assistance = Assistance(user, event.eventid) if assistance.save(): res = {'label':'/VShowEvent', 'msg':[ur'Evento reservado exitosamente']} else: res = {'label':'/VShowEvent', 'msg':[ur'Error al reservar evento']} else: res = {'label':'/VShowEvent', 'msg':[ur'Error al reservar evento']} res['reserved'] = 1 #Action code ends here if "actor" in res: if res['actor'] is None: session.pop("actor", None) else: session['actor'] = res['actor'] return json.dumps(res)
def create(data, uid): new = Event(uid, data['event_type'], data['title'], data['content'], data['location'], data['organization'], data['begin_time'], data['end_time'], data.get('url'), data.get('cover_image')) db.session.add(new) db.session.commit() return util.obj2dict(new)
def cancel_event(event_id=0): ev = Event.find(event_id) user = request.user user_ev = UserEvent.query(uid=user.id, event_id=ev.id) if not user_ev or user_ev['state'] != UserEvent.State.INIT: return Response(code=ResponseCode.DATA_NOT_EXIST, msg='暂无报名').out() user_ev = UserEvent(**user_ev) user_ev.state = UserEvent.State.CANCELED user_ev.save() return Response().out()
def joined_events(): evs = UserEvent.query(fetchone=False, uid=request.user.id, state=UserEvent.State.INIT, orderby='id desc') resp = [] for each in evs: ev = Event.find(each['event_id']) r = ev.to_dict() r['join_at'] = dt_to_str(each['create_at']) resp.append(r) return Response(data=resp).out()
def event(event_id=0): ev = Event.find(event_id) resp = ev.to_dict() resp['creator'] = ev.get_creator().to_dict() resp['num'] = UserEvent.count(event_id=ev.id, state=UserEvent.State.INIT) resp['member'] = 0 if request.user and UserEvent.query( event_id=ev.id, uid=request.user.id, state=UserEvent.State.INIT): resp['member'] = 1 return str(Response(data=resp))
def user_event(event_id=0): ev = Event.find(event_id) ev_user = UserEvent.query(fetchone=False, event_id=ev.id, state=UserEvent.State.INIT, orderby='id desc') resp = ev.to_dict() users = [] for each in ev_user: user = User.find(each['uid']) r = user.json() r['join_at'] = dt_to_str(each['create_at']) users.append(r) resp['users'] = users resp['num'] = len(users) return Response(data=resp).out()
def load_events(self): items = [] with open(self.event_file, newline='') as csvfile: reader = csv.reader(csvfile, delimiter=csv.excel.delimiter, quotechar=csv.excel.quotechar) next(reader, None) # skip the headers for row in reader: org = row[5] if row[5] else None geocode = self.get_geocode( address_dict={'street': row[8], 'city': row[10], 'state': row[11], 'zip': row[12]}, lat_long_dict={'lat': row[15], 'lng': row[16]} ) event = Event(title=row[0], description=row[1], date=row[2], time=row[3], ticket_cost=row[4], organization_name=org, primary_contact=row[6], location_name=row[7], street_address1=row[8], street_address2=row[9], city=row[10], state=row[11], zip=row[12], website=row[13], phone=row[14], latitude=geocode['lat'], longitude=geocode['lng'], ages=[], languages=[], covid19_categories=[], is_draft=False, is_uva_education_content=True) self.__increment_id_sequence(Resource) for i in range(26, 29): if row[i]: event.ages.extend(AgeRange.get_age_range_for_csv_data(row[i])) for i in range(29, 36): if row[i]: event.languages.append(row[i]) for i in range(36, len(row)): if row[i]: event.covid19_categories.append(row[i]) db.session.add(event) db.session.commit() for i in range(17, 25): if row[i] and row[i] != '': category = self.get_category_by_name(row[i].strip()) event_id = event.id category_id = category.id db.session.add(ResourceCategory(resource_id=event_id, category_id=category_id, type='event')) db.session.commit() print("Events loaded. There are now %i events in the database." % db.session.query(Event).count()) print("There are now %i links between events and categories in the database." % db.session.query(ResourceCategory).filter(ResourceCategory.type == 'event').count())
def AReserveEvent(): eventid = request.args.get('eventId') if eventid is None: res = {'label': '/VShowEvent', 'msg': [ur'Error al reservar evento']} else: user = session.get('actor') if user is None: user = "******" event = Event.get(eventid) assistance = Assistance.get(user, event.eventid) if assistance is None and event.update( {'n_participants': event.n_participants - 1}): assistance = Assistance(user, event.eventid) if assistance.save(): res = { 'label': '/VShowEvent', 'msg': [ur'Evento reservado exitosamente'] } else: res = { 'label': '/VShowEvent', 'msg': [ur'Error al reservar evento'] } else: res = { 'label': '/VShowEvent', 'msg': [ur'Error al reservar evento'] } res['reserved'] = 1 #Action code ends here if "actor" in res: if res['actor'] is None: session.pop("actor", None) else: session['actor'] = res['actor'] return json.dumps(res)
def join_event(event_id=0): ev = Event.find(event_id) user = request.user user_ev = UserEvent.query(uid=user.id, event_id=ev.id) if user_ev and user_ev['state'] == UserEvent.State.INIT: return Response(code=ResponseCode.DUPLICATE_DATA, msg='已经报名成功').out() if ev.fee <= 0: if user_ev: user_ev = UserEvent(**user_ev) user_ev.state = UserEvent.State.INIT user_ev.save() else: UserEvent(uid=user.id, event_id=ev.id).save() return Response().out() elif user.openid: order = Order(uid=user.id, name=ev.title, money=-ev.fee, item_id=ev.id, type=Order.Type.JOIN_EVENT) order.set_order_id() resp = order.save(return_keys=[Order.PKEY]) order = Order.find(resp[Order.PKEY]) wxorder = WXOrder(user, order) tokens = wxorder.get_token() if not tokens: return Response(code=ResponseCode.OPERATE_ERROR, msg='订单生成失败').out() return Response(code=ResponseCode.LOW_BALANCE, msg='余额不足', data={ 'need_money': ev.fee, 'order_id': order.id, 'order': tokens }).out() else: return str(Response(code=ResponseCode.AUTH_REQUIRED, msg='请微信关注服务号'))
def VShowEvent(): eventid = request.args.get('eventId') res = {} if eventid is not None: res['event'] = Event.get(eventid).__dict__ if "actor" in session: res['actor'] = session['actor'] assistance = Assistance.get(res['actor'], eventid) if assistance is None: res['reserved'] = 0 else: res['reserved'] = 1 res['assisted'] = assistance.assisted #Action code goes here, res should be a JSON structure print res #Action code ends here return json.dumps(res)
def edit_event(event_id=0): ev = Event.find(event_id) ev.fee = int(request.form.get('fee', 0)) * 100 if ev.fee < 0: return Response(code=ResponseCode.PARAMETER_ERROR, msg='输入收费错误').out() ev.shop_id = request.form.get('shop_id', 0) ev.show_num = request.form.get('show_num') == 'on' ev.title = request.form.get('title') ev.user_limit = request.form.get('user_limit', 0) ev.description = request.form.get('description') ev.open_at = request.form.get('open_at') ev.close_at = request.form.get('close_at') file = request.files.get('poster') if file and file.filename != "" and allowed_file(file.filename): filename = '%s_%s' % (request.user.id, datetime.now().strftime('%Y%m%d%H%M%S')) QiniuCloud.upload_file(file, filename, conf.qiniu_img_bucket) ev.poster_url = conf.qiniu_img_prefix + filename ev.save() return str(Response())
def ADeleteEvent(): #POST/PUT parameters eventid = request.args.get('eventId') event = Event.get(eventid) results = [{'label':'/VListEvents', 'msg':[ur'Evento eliminado exitosamente']}, {'label':'/VListEvents', 'msg':[ur'Error al eliminar evento']}, ] if event is not None and event.delete(): res = results[0] else: res = results[1] #Action code goes here, res should be a list with a label and a message #Action code ends here if "actor" in res: if res['actor'] is None: session.pop("actor", None) else: session['actor'] = res['actor'] return json.dumps(res)
def AGenerateCredentials(): #POST/PUT parameters results = [ { 'label': '/VShowEvent', 'msg': [ur'Credenciales exitosamente generadas'] }, { 'label': '/VShowEvent', 'msg': [ur'Error al generar credenciales'] }, ] eventid = request.args.get('eventId') if eventid is None: res = results[1] else: event = Event.get(eventid) user = session.get('actor') if user is None: user = "******" pdf = create_pdf( render_template('credentials.html', event=event, user=user)) if pdf is None: res = results[1] else: res = results[0] res['credentials'] = pdf if "actor" in res: if res['actor'] is None: session.pop("actor", None) else: session['actor'] = res['actor'] return json.dumps(res)
def create_event(): ev = Event() ev.fee = int(request.form.get('fee', 0)) * 100 if ev.fee < 0: return Response(code=ResponseCode.PARAMETER_ERROR, msg='输入收费错误').out() ev.shop_id = request.form.get('shop_id', 0) ev.show_num = request.form.get('show_num') == 'on' ev.title = request.form.get('title') ev.user_limit = request.form.get('user_limit', 0) ev.description = request.form.get('description') ev.creator = request.user.id ev.open_at = request.form.get('open_at') ev.close_at = request.form.get('close_at') file = request.files.get('poster') if not file or file.filename == '': return Response(code=ResponseCode.OPERATE_ERROR, msg='请选择上传文件').out() elif allowed_file(file.filename): filename = '%s_%s' % (request.user.id, datetime.now().strftime('%Y%m%d%H%M%S')) QiniuCloud.upload_file(file, filename, conf.qiniu_img_bucket) ev.poster_url = conf.qiniu_img_prefix + filename ev.save() else: return Response(code=ResponseCode.OPERATE_ERROR, msg='请选择正确的上传格式文件').out() return str(Response())