Пример #1
0
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)
Пример #2
0
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)
Пример #3
0
    def get(self):
        """ get port count """

        # get data
        event = Event()
        event_data = event.port_count()

        return event_data
Пример #4
0
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))
Пример #5
0
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))
Пример #6
0
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)
Пример #7
0
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)
Пример #8
0
    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
Пример #9
0
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()
Пример #10
0
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)
Пример #11
0
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)
Пример #12
0
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)
Пример #13
0
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)
Пример #14
0
    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())
Пример #15
0
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)
Пример #16
0
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)
Пример #17
0
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()
Пример #18
0
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()
Пример #19
0
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))
Пример #20
0
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()
Пример #21
0
    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())
Пример #22
0
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)
Пример #23
0
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='请微信关注服务号'))
Пример #24
0
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)
Пример #25
0
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)
Пример #26
0
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())
Пример #27
0
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)
Пример #28
0
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)
Пример #29
0
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())