コード例 #1
0
ファイル: mf_meals.py プロジェクト: marvcode/Mealz
def list_my_events(user_id):
    # this page should list all of this user's events
    # Option : Open or contribute to any of the events
    # Option: Edit an event from the list
    # Option: Create a new event... redirects to '/createevent'
    # Option: Delete one of their own events... redirects to '/deleteevent'
    # Gather important details on user from Stormpath
    usr_id = get_pure_id(user.get_id())
    usr_first_name = user.given_name
    usr_last_name = user.surname
    usr_username = user.username
    usr_email = user.email
    print "\nThe current User is :", usr_id, "\n"
    # Gather details on the user's own events
    usr_events = session.query(Event).filter_by(org_id=usr_id).all()
    # Determine the number of events originated by this user
    num_evts = len(usr_events)
    response_dict = {'0': 0}
    print "\nNumber of events for this user", num_evts
    
    # Determine the number of responses for each of these events
    for i in range(0, num_evts):
        print "\nQuery for number of committed items for this event"
        num_resp = session.query(Committed).\
                           filter_by(evt_id=(usr_events[i].id)).all()
        response_dict.update({ (usr_events[i].id) : len(num_resp) })
    
    return render_template('listmyevents.html',
                            webuserid = usr_id,
                            webfname = usr_first_name,
                            weblname = usr_last_name,
                            webusername = usr_username,
                            webevents = usr_events,
                            webrespdict = response_dict)
コード例 #2
0
ファイル: mf_meals.py プロジェクト: marvcode/Mealz
def search():
    # User has the ability to search for an event based on Originator last name
    #  and event ID.
    # gather details about searching user
    usr_id = get_pure_id(user.get_id())
    usr_first_name = user.given_name
    usr_last_name = user.surname
    usr_username = user.username
    usr_email = user.email
    print "The current User is :", usr_id, "\n"

    if request.method == 'POST':
        form = SearchForm(formdata = MultiDict(request.form))
        if form.validate():
            # Gather details about this event
            event = session.query(Event).filter_by(id=form.evt_id.data).one()
            flash('Event Found!')
            return redirect(url_for('contribute', 
                            org_id = event.org_id,
                            event_id = event.id))
        else:
            # got to this point since form data was missing
            flash('Enter both required fields!')
            return render_template('searchevents.html', webform = form)
    else:
        return render_template('searchevents.html', webform = SearchForm())
コード例 #3
0
def edit_book(book_id):
    user_id = user.get_id()
    app_user = AppUser.query.get(stormpathUserHash(user_id))
    book = Book.query.get(book_id)

    if book in app_user.author.books:
        if request.method == 'GET':
            return render_template('edit_book.html', book=book)

        genres = []
        for g in request.form.get('genres').split(','):
            genre_name = g.strip().title()
            if not genre_name.isspace():
                genre = Genre.query.filter_by(name=genre_name).first()
                if not genre:
                    genre = Genre(genre_name)
                    db.session.add(genre)
                genres.append(genre)

        book.genres = genres
        book.title = request.form.get('title')
        book.isbn = request.form.get('isbn')
        book.publisher = request.form.get('publisher')
        book.description = request.form.get('description')
        db.session.add(book)

        db.session.commit()

        return redirect(url_for('author_routes.author_dashboard'))

    return redirect(url_for('index'))
コード例 #4
0
ファイル: author_routes.py プロジェクト: AJRenold/futurepress
def add_book():
    user_id = user.get_id()
    app_user = AppUser.query.get(stormpathUserHash(user_id))

    if app_user.is_author:
        if request.method == 'GET':
            return render_template('add_book.html', author=app_user.author)

        book_file = request.files.get('epub_file', None)
        # POST is a epub file upload
        if book_file.content_type == 'application/epub+zip' or book_file.content_type == 'application/octet-stream':
            book_upload = BookUploader(book_file.filename, book_file)
            book_location = book_upload.file_dir[:-1]

        # fetch genres too!
        book_data = {
            'author': app_user.author,
            'title': request.form.get('title'),
            'publisher': request.form.get('publisher'),
            'epub_url': book_location
        }

        book = Book.book_from_dict(**book_data)
        db.session.add(book)
        db.session.commit()

        print book
        return render_template('add_book.html', author=app_user.author)

    return redirect(url_for('index'))
コード例 #5
0
def purchase(book_id):
    user_href = user.get_id()
    app_user = AppUser.query.get(stormpathUserHash(user_href))

    book = Book.query.get(book_id)
    app_user.purchase_book(book)

    return redirect(url_for('user_routes.library'))
コード例 #6
0
def purchase(book_id):
    user_href = user.get_id()
    app_user = AppUser.query.get(stormpathUserHash(user_href))

    book = Book.query.get(book_id)
    app_user.purchase_book(book)

    return redirect(url_for('user_routes.library'))
コード例 #7
0
ファイル: mf_meals.py プロジェクト: marvcode/Mealz
def showLoggedin():
    # 3 options on this page
    # 1. Create a new event
    # 2. list my events
    # 3. Search for an event (that user has been invited to)
    usr_email = user.email
    usr_first_name = user.given_name
    usr_last_name = user.surname
    usr_username = user.username
    usr_id = get_pure_id(user.get_id())
    
    print "\nCurrent user ID =" , get_pure_id(user.get_id()), user
    return render_template('loggedin.html', 
                            webemail = usr_email,
                            webfname = usr_first_name,
                            weblname = usr_last_name,
                            webusername = usr_username,
                            webuserid = usr_id)
コード例 #8
0
    def test_user_can_login(self):
        _user = User.from_login(
                TestConfig.USER_EMAIL,
                TestConfig.USER_PASSWORD,
            )
        login_user(_user)

        user_id = user.get_id()
        app_user = AppUser.query.get(stormpathUserHash(user_id))
        assert app_user.user_href == user_id
コード例 #9
0
ファイル: basic_tests.py プロジェクト: geekswagg/futurepress
    def test_user_can_login(self):
        _user = User.from_login(
            TestConfig.USER_EMAIL,
            TestConfig.USER_PASSWORD,
        )
        login_user(_user)

        user_id = user.get_id()
        app_user = AppUser.query.get(stormpathUserHash(user_id))
        assert app_user.user_href == user_id
コード例 #10
0
ファイル: app.py プロジェクト: jeremyrcoyle/SUMSarizer
def upload(id):
    study = Studies.query.get(id)
    if study.owner != user.get_id():
        abort(401)

    file = request.files['file']
    dataset = Datasets.from_file(file, study)
    db.session.add(dataset)
    db.session.commit()

    return jsonify({'success': True})
コード例 #11
0
ファイル: app.py プロジェクト: jeremyrcoyle/SUMSarizer
def upload(id):
    study = Studies.query.get(id)
    if study.owner != user.get_id():
        abort(401)
    
    file = request.files['file']
    dataset = Datasets.from_file(file, study)
    db.session.add(dataset)
    db.session.commit()

    return jsonify({
    'success': True
    })
コード例 #12
0
ファイル: views.py プロジェクト: shahab3/photog
def new_contact():
    form = AddContactForm()

    if form.validate_on_submit():
        new_contact = Contact(form.name.data, form.email.data, form.phone.data,
                              form.comment.data, form.lead_source.data,
                              user.get_id(), user.custom_data['tenant_id'])
        db.session.add(new_contact)
        db.session.commit()
        return redirect(url_for('dashboard.dashboard_home'))
    return render_template('dashboard/add_contact.html',
                           action='Add',
                           form=form)
コード例 #13
0
ファイル: views.py プロジェクト: caseydm/photog
def contact_detail(contact_id):
    form = AddNoteForm()

    contact = Contact.query.filter_by(id=contact_id, tenant_id=user.custom_data["tenant_id"]).first_or_404()
    notes = contact.notes

    if form.validate_on_submit():
        new_note = Note(form.content.data, user.get_id(), user.custom_data["tenant_id"], contact.id)
        db.session.add(new_note)
        db.session.commit()
        return redirect(url_for("dashboard.contact_detail", contact_id=contact.id))

    return render_template("dashboard/contact_detail.html", contact=contact, notes=notes, form=form)
コード例 #14
0
ファイル: app.py プロジェクト: jeremyrcoyle/SUMSarizer
def study(id):
    study = Studies.query.get(id)
    if study.owner != user.get_id():
        abort(401)

    page = int(request.args.get('page') or 1)

    datasets = study.datasets\
      .order_by(Datasets.created_at.desc())\
      .paginate(page, per_page=15)

    return render_template('study.html',
                           study=study,
                           datasets=datasets.items,
                           pagination=datasets)
コード例 #15
0
ファイル: app.py プロジェクト: jeremyrcoyle/SUMSarizer
def point():
    json = request.get_json()
    point = DataPoints.query.get(json['id'])
    if point.dataset.study.owner != user.get_id():
        abort(401)

    point.selected = json['selected'] == 1

    print point
    print point.timestamp

    db.session.add(point)
    db.session.commit()

    return jsonify({"success": True})
コード例 #16
0
ファイル: app.py プロジェクト: jeremyrcoyle/SUMSarizer
def study(id):
    study = Studies.query.get(id)
    if study.owner != user.get_id():
        abort(401)
    
    page = int(request.args.get('page') or 1)
    
    datasets = study.datasets\
      .order_by(Datasets.created_at.desc())\
      .paginate(page, per_page=15)
    
    return render_template('study.html', 
      study=study,
      datasets=datasets.items,
      pagination=datasets)
コード例 #17
0
def add_book():
    user_id = user.get_id()
    app_user = AppUser.query.get(stormpathUserHash(user_id))

    if app_user.is_author:
        if request.method == 'GET':
            return render_template('add_book.html', author=app_user.author)

        book_file = request.files.get('epub_file', None)
        cover_file = request.files.get('cover_file', None)

        # POST is a epub file upload
        if book_file.content_type == 'application/epub+zip' or book_file.content_type == 'application/octet-stream':
            book_upload = BookUploader(book_file.filename, book_file,
                                       cover_file)
            epub_url = S3URL + 'epubs/' + book_upload.epub_key
            cover_url = CLOUDFRONTURL + book_upload.cover_key

        genres = []
        for g in request.form.get('genres').split(','):
            genre_name = g.strip().title()
            if not genre_name.isspace():
                genre = Genre.query.filter_by(name=genre_name).first()
                if not genre:
                    genre = Genre(genre_name)
                    db.session.add(genre)
                genres.append(genre)

        book_data = {
            'author': app_user.author,
            'isbn': request.form.get('isbn'),
            'title': request.form.get('title'),
            'publisher': request.form.get('publisher'),
            'description': request.form.get('description'),
            'genres': genres,
            'epub_url': epub_url,
            'cover_large': cover_url
        }

        book = Book.book_from_dict(**book_data)
        db.session.add(book)
        db.session.commit()

        return redirect(url_for('author_routes.author_dashboard'))

    return redirect(url_for('index'))
コード例 #18
0
ファイル: views.py プロジェクト: caseydm/photog
def new_contact():
    form = AddContactForm()

    if form.validate_on_submit():
        new_contact = Contact(
            form.name.data,
            form.email.data,
            form.phone.data,
            form.comment.data,
            form.lead_source.data,
            user.get_id(),
            user.custom_data["tenant_id"],
        )
        db.session.add(new_contact)
        db.session.commit()
        return redirect(url_for("dashboard.dashboard_home"))
    return render_template("dashboard/add_contact.html", action="Add", form=form)
コード例 #19
0
ファイル: app.py プロジェクト: jeremyrcoyle/SUMSarizer
def point():
    json = request.get_json()
    point = DataPoints.query.get(json['id'])
    if point.dataset.study.owner != user.get_id():
        abort(401)
    
    point.selected = json['selected'] == 1
    
    print point
    print point.timestamp
    
    db.session.add(point)
    db.session.commit()
    
    return jsonify({
        "success": True
    })
コード例 #20
0
ファイル: views.py プロジェクト: shahab3/photog
def contact_detail(contact_id):
    form = AddNoteForm()

    contact = Contact.query.filter_by(
        id=contact_id, tenant_id=user.custom_data['tenant_id']).first_or_404()
    notes = contact.notes

    if form.validate_on_submit():
        new_note = Note(form.content.data, user.get_id(),
                        user.custom_data['tenant_id'], contact.id)
        db.session.add(new_note)
        db.session.commit()
        return redirect(
            url_for('dashboard.contact_detail', contact_id=contact.id))

    return render_template('dashboard/contact_detail.html',
                           contact=contact,
                           notes=notes,
                           form=form)
コード例 #21
0
def settings():

    user_id = user.get_id()
    app_user = AppUser.query.get(stormpathUserHash(user_id))

    if request.method == 'GET':
        return render_template('author_settings.html', author=app_user.author)

    if not app_user.is_author:
        author = Author.author_from_dict(**request.form.to_dict())
        db.session.add(author)
        db.session.commit()
        app_user.become_author(author)

    ## TODO Handle edit author attributes
    """
    if app_user.is_author:
        author_name = request.form.get('author_name')
        if author_name != app_user.author.name:
            app_user.author.update_name(author_name)
    """

    return render_template('author_settings.html', author=app_user.author)
コード例 #22
0
ファイル: app.py プロジェクト: jeremyrcoyle/SUMSarizer
def dataset(id):
    import time

    dataset = Datasets.query.get(id)
    if dataset.study.owner != user.get_id():
        abort(401)
    
    # Grab the list of datasets in this study
    # What page is this dataset?
    # has_next?
    # has_prev?
    prev_ds = dataset.prev()
    next_ds = dataset.next()
    
    def clean_selected(sel):
        if not sel:
            return 0
        if sel:
            return 1
        return 0
    
    graph_points = [{
        "id": x.id,
        "selected": 0,
        "temp_c": x.value,
        "time": x.timestamp.strftime("%Y-%m-%d %H:%M:%S"),
        "selected": clean_selected(x.selected)
    } for x in dataset.data_points]

    return render_template('dataset.html', 
      dataset=dataset,
      notes=dataset.notes,
      points=dataset.data_points,
      points_json=json.dumps(graph_points),
      next_ds=next_ds,
      prev_ds=prev_ds)
コード例 #23
0
ファイル: app.py プロジェクト: jeremyrcoyle/SUMSarizer
def dataset(id):
    import time

    dataset = Datasets.query.get(id)
    if dataset.study.owner != user.get_id():
        abort(401)

    # Grab the list of datasets in this study
    # What page is this dataset?
    # has_next?
    # has_prev?
    prev_ds = dataset.prev()
    next_ds = dataset.next()

    def clean_selected(sel):
        if not sel:
            return 0
        if sel:
            return 1
        return 0

    graph_points = [{
        "id": x.id,
        "selected": 0,
        "temp_c": x.value,
        "time": x.timestamp.strftime("%Y-%m-%d %H:%M:%S"),
        "selected": clean_selected(x.selected)
    } for x in dataset.data_points]

    return render_template('dataset.html',
                           dataset=dataset,
                           notes=dataset.notes,
                           points=dataset.data_points,
                           points_json=json.dumps(graph_points),
                           next_ds=next_ds,
                           prev_ds=prev_ds)
コード例 #24
0
ファイル: auth_routes.py プロジェクト: geekswagg/futurepress
@auth_routes.route('/authorize_ios', methods=['POST'])
def authorize_iOS():
    """ User login/auth/session management """

    username = request.form.get('username', '')
    password = request.form.get('password', '')
    user = None

    try:
        user = User.from_login(username, password)
    except StormpathError, err:
        pass

    if user:
        app_user = AppUser.query.get(stormpathUserHash(user.get_id()))
        t = make_secure_token(username + password)
        if app_user.ios_token != t:
            app_user.set_ios_token(t)
        return jsonify({
            'username': user.username,
            'user_id': app_user.user_id,
            'authenticated': True,
            'ios_token': t
        })
    else:
        return jsonify({
            'username': username,
            'authenticated': False,
            'ios_token': None
        })
コード例 #25
0
@auth_routes.route('/authorize_ios', methods=['POST'])
def authorize_iOS():
    """ User login/auth/session management """

    username = request.form.get('username', '')
    password = request.form.get('password', '')
    user = None

    try:
        user = User.from_login(username, password)
    except StormpathError, err:
        pass

    if user:
        app_user = AppUser.query.get(stormpathUserHash(user.get_id()))
        t = make_secure_token(username + password)
        if app_user.ios_token != t:
            app_user.set_ios_token(t)
        return jsonify({ 'username': user.username,
                         'user_id': app_user.user_id,
                         'authenticated': True,
                         'ios_token': t
                })
    else:
        return jsonify({ 'username': username,
                 'authenticated': False,
                 'ios_token': None
                })

@auth_routes.route('/logout')
コード例 #26
0
ファイル: mf_meals.py プロジェクト: marvcode/Mealz
def create_event(user_id):
    # User should be able to create a new event & add details about event
    # Gather important details on user from Stormpath
    usr_id = get_pure_id(user.get_id())
    usr_first_name = user.given_name
    usr_last_name = user.surname
    usr_username = user.username
    usr_email = user.email
    print "The current User is :", usr_id, "\n"

    if request.method == 'POST':
        # Gather posted data of details about this event
        form = CreateForm(formdata = MultiDict(request.form))
        if form.validate():
            # Gather details about this event
            # prepare items to be posted into event table
            date1 = datetime.date(int(form.evt_year.data),
                                  int(form.evt_month.data),
                                  int(form.evt_day.data))
            time1 = str(form.evt_hour.data + ":" +\
                        form.evt_minute.data + form.evt_tz.data)
            Event1 = Event(org_id = usr_id,
               org_username = usr_username,
               org_fname = usr_first_name,
               org_lname = usr_last_name,
               evt_num = form.evt_num.data,
               evt_date = date1,
               evt_time = time1,
               evt_name = form.evt_name.data,
               evt_location = form.evt_location.data,
               evt_address = form.evt_address.data,
               evt_city = form.evt_city.data,
               evt_state = form.evt_state.data,
               evt_zip = form.evt_zip.data,
               evt_notes = form.evt_notes.data,
               evt_image = 'party01.jpg')
            session.add(Event1)
            session.flush()
            session.refresh(Event1) # get the id of the last added event
            new_event_id = int(Event1.id)
            
            # prepare items to be posted into Requested table
            for x in categories:
                # create a reference string for current category
                field1 = "req_%s_qty" % x
                field2 = "req_%s_note" % x
                # use reference string to retrieve form data for QTY & Note 
                current_req_qty = getattr(form, field1).data
                current_req_note = getattr(form, field2).data
                # if requested QTY > 0 then persist requested data to db
                if int(current_req_qty) > 0:
                    Req1 = Requested(evt_id = new_event_id,
                             category = get_real_cat(x),
                             qty_rqst = current_req_qty,
                             rqst_note = current_req_note)
                    session.add(Req1)
                    session.flush()
           
            session.commit()
            # if data persisted correctly redirect to "List my Events"
            return redirect(url_for('list_my_events', 
                            user_id = user_id))
        else:
            # got to this point since form data was missing
            print "CreateForm did not validate!"
            flash('Enter required fields!')
            return render_template('createevent.html',
                        webform = form,
                        webevent_org_id = usr_id)
    
    else:
        # GET Method 
        return render_template('createevent.html',
                             webform = CreateForm(),
                             webevent_org_id = usr_id,
                             webuser_email = usr_email,
                             webuser_fname = usr_first_name,
                             webuser_lname = usr_last_name,
                             webuserid = usr_id)
コード例 #27
0
ファイル: author_routes.py プロジェクト: AJRenold/futurepress
def author_dashboard():
    user_id = user.get_id()
    app_user = AppUser.query.get(stormpathUserHash(user_id))

    if app_user.is_author:
        return render_template('author_dashboard.html', author=app_user.author)
コード例 #28
0
def get_user():
    url = user.get_id()
    return url.split('/')[-1]
コード例 #29
0
ファイル: mf_meals.py プロジェクト: marvcode/Mealz
def edit_event(user_id, evt_id):
    # User has the ability to edit an event that they created.
    # Gather important details on user from Stormpath
    usr_id = get_pure_id(user.get_id())
    usr_first_name = user.given_name
    usr_last_name = user.surname
    usr_username = user.username
    usr_email = user.email
    print "\nThe current User is :", usr_id, "\n"
    # Gather details on this event to be edited
    print "\nQuery for Event"
    event = session.query(Event).filter_by(id=evt_id).one()
    print "\nQuery for Requested Items for this event"
    req = session.query(Requested).filter_by(evt_id=evt_id).all()
    # Initialize request qty variables Dictionary to integer
    req_qty_dct = {'req_app_qty' : 0, 'req_main_qty' : 0, 'req_side_qty' : 0,
                   'req_bread_qty' : 0, 'req_dessert_qty' : 0,
                   'req_bev_qty' : 0, 'req_uten_qty' : 0, 'req_cups_qty' : 0,
                   'req_misc_qty' :0}
    # Initialize request note variables Dictionary
    req_note_dct = {'req_app_note' : "", 'req_main_note' : "",
                    'req_side_note' : "", 'req_bread_note' : "",
                    'req_dessert_note' : "", 'req_bev_note' : "",
                    'req_uten_note' : "", 'req_cups_note' : "",
                    'req_misc_note' : ""}

    # iterate thru all categories and store requested items from db into
    #  local variable dictionaries
    for x in categories:
        # create a reference string for current category
        field1 = "req_%s_qty" % x
        field2 = "req_%s_note" % x
        # use reference string to store requested items QTY & Note
        # storing db values into dictionaries
        for item in req:
            if item.category == get_real_cat(x):
                req_qty_dct[field1] = item.qty_rqst
                req_note_dct[field2] = item.rqst_note

    # handle Posted Form Data  #########################################
    if request.method == 'POST':
        # create a dict that translates form names to database field names
        event_fields = ['evt_num', 'evt_name', 'evt_location', 'evt_address',
                        'evt_city', 'evt_state', 'evt_zip', 'evt_notes']
        # Initialize database changed trigger
        db_change = False
        # define the form, same as create event form
        form = CreateForm(formdata = MultiDict(request.form))
        # Note: I did not check for form validation in this case
        #    since form fields do not require changed data
        # ###############################################################
        # Determine which Event details need to be updated
        #   then update the database entry for Event Details that changed.
        for aa in event_fields:
            # get posted form data for current field
            form_data = getattr(form, aa).data
            # get db data for current field
            db_data = getattr(event,aa)
            if form_data != db_data:
                # db update will be required in this path
                setattr(event, aa, form_data)
                db_change = True
                session.flush()      
        # #################################################################
        # Next check for any posted changes in Date fields
        date_changed = False
        if form.evt_month.data != "--":
            date_changed = True
        if form.evt_day.data != "--":
            date_changed = True
        if form.evt_year.data != "--":
            date_changed = True
        if date_changed:
            date1 = datetime.date(int(form.evt_year.data),
                                  int(form.evt_month.data),
                                  int(form.evt_day.data))
            # persist the date change to database
            event.evt_date = date1
            db_change = True
            session.flush()
        # check for any posted changes in Time fields
        time_changed = False
        if form.evt_hour.data != "--":
            time_changed = True
        if form.evt_minute.data != "--":
            time_changed = True
        if form.evt_tz.data != "--":
            time_changed = True
        if time_changed:
            time1 = str(form.evt_hour.data + ":" +
                        form.evt_minute.data + form.evt_tz.data)
            # persist the time change to database
            event.evt_time = time1
            db_change = True
            session.flush()
        # ##################################################################
        # above are all changes to the Event table so COMMIT any changes
        if db_change:
            flash('Event Updated!')
            session.commit()
            db_change = False # reset db change trigger
        
        # ############  'REQUESTED' table updates ###########################   
        # Determine which requested amounts or notes need to be updated
        # Note: Since all the requested quantity and note fields are optional,
        #       we CANT assume that the item/category previously existed in db.
        #       So, we must first check if an item for each requested category
        #       exists in the database.  This will in turn dictate whether any 
        #       detected changes need to be Updated or Inserted. Updates and
        #       Inserts are handled differently in code.  Be AWARE. 
        #       Updated (for database items that existed in database) or 
        #       Inserted (for new form items that didnt exist in database)
        #        
        # iterate thru all categories
        for thiscat in categories:
            keyq = 'req_%s_qty' % thiscat
            keyn = 'req_%s_note' % thiscat
            form_qty = getattr(form, keyq).data
            form_note = getattr(form, keyn).data
            if form_qty or form_note:
                # form data was posted path
                if int(form_qty) == 0:
                    # POSTED form qty is 0,
                    qty_in_db = check_req_db(evt_id, thiscat)
                    if qty_in_db:
                        # in this case we want to delete the db row for this 
                        #    category in the requested table since now 0 is
                        #    requested.
                        try:
                            del_cat_req = session.query(Requested).\
                                     filter_by(evt_id = evt_id,\
                                     category = get_real_cat(thiscat)).one()
                            session.delete(del_cat_req)
                            db_change = True
                            session.flush()
                        except:
                            print "error in requested table update"    
                elif int(form_qty) > 0:
                    # POSTED form qty is > 0
                    # check does db qty exist
                    qty_in_db = check_req_db(evt_id, thiscat)
                    if qty_in_db:
                        # db qty exists, then UPDATE db qty & note
                        # check for change in form data
                        if int(form_qty) != req_qty_dct[keyq]:
                            # UPDATE db with form qty
                            qty_req = session.query(Requested).\
                                  filter_by(evt_id = evt_id,\
                                  category = get_real_cat(thiscat)).one()
                            setattr(qty_req, 'qty_rqst', form_qty)
                            db_change = True
                            session.flush()
                        if form_note != req_note_dct[keyn]:
                            # UPDATE db with form note
                            note_req = session.query(Requested).\
                                  filter_by(evt_id = evt_id,\
                                  category = get_real_cat(thiscat)).one()
                            setattr(note_req, 'rqst_note', form_note)
                            db_change = True
                            session.flush()
                    else:
                        # db qty does NOT exist, then INSERT new qty & note
                        try:
                            Req1 = Requested(evt_id = evt_id,
                                   category = get_real_cat(thiscat),
                                  qty_rqst = form_qty,
                                  rqst_note = form_note)
                            session.add(Req1)
                            db_change = True
                            session.flush()
                        except:
                            print "error: insrt new Req data not complete! "
        # all changes to Requested table are complete, so commit
        if db_change:
            flash('Event Updated!')
            session.commit()
            db_change = False # reset db_change trigger
        return redirect(url_for('list_my_events',
                        user_id = usr_id))

    else:
        # Initial GET path, no posted path
        return render_template('editevent.html',
					webform = CreateForm(),
					webuserid = usr_id,
					webuser_fname = usr_first_name,
					webuser_lname = usr_last_name,
					webuser_email =usr_email,
					webevent = event,
					webreq = req,
					web_req_app_qty = req_qty_dct['req_app_qty'],
					web_req_app_note = req_note_dct['req_app_note'],
					web_req_main_qty = req_qty_dct['req_main_qty'],
					web_req_main_note = req_note_dct['req_main_note'],
					web_req_side_qty = req_qty_dct['req_side_qty'],
					web_req_side_note = req_note_dct['req_side_note'],
					web_req_bread_qty = req_qty_dct['req_bread_qty'],
					web_req_bread_note = req_note_dct['req_bread_note'],
					web_req_dessert_qty = req_qty_dct['req_dessert_qty'],
					web_req_dessert_note = req_note_dct['req_dessert_note'],
					web_req_bev_qty = req_qty_dct['req_bev_qty'],
					web_req_bev_note = req_note_dct['req_bev_note'],
					web_req_uten_qty = req_qty_dct['req_uten_qty'],
					web_req_uten_note = req_note_dct['req_uten_note'],
					web_req_cups_qty = req_qty_dct['req_cups_qty'],
					web_req_cups_note = req_note_dct['req_cups_note'],
					web_req_misc_qty = req_qty_dct['req_misc_qty'],
					web_req_misc_note = req_note_dct['req_misc_note'],
					web_evt_id = evt_id)
コード例 #30
0
ファイル: mf_meals.py プロジェクト: marvcode/Mealz
def contribute(org_id, event_id):
    # user has the ability to contribute to an event
    # gather details about contributing user   
    usr_id = get_pure_id(user.get_id())
    usr_first_name = user.given_name
    usr_last_name = user.surname
    usr_username = user.username
    usr_email = user.email
    print "The current User is :", usr_id, "\n"
    # Gather details about this event
    print "\nQuery for Event"
    event = session.query(Event).filter_by(id=event_id).one()
    # Gather details about what has been requested for this event
    print "\nQuery for Requested Items"
    req = session.query(Requested).filter_by(evt_id=event_id).all()
    # Gather details about what is committed for this event
    print "\nQuery for Committed Items"
    cmttd = session.query(Committed).filter_by(evt_id=event_id).all()

    if request.method == 'POST':
        form = ContributeForm(formdata = MultiDict(request.form))
        if form.validate():
            # Form Validated Path
            # add posted data to database at this point
            Com1 = Committed(evt_id = event_id,
                 category = form.category.data,
                 item_name = form.item.data,
                 usr_lname = usr_last_name,
                 usr_fname = usr_first_name,
                 usr_username = usr_username,
                 usr_email = usr_email,
                 usr_qty = "1",
                 usr_note = form.note.data)
            session.add(Com1)
            session.commit()
            flash('New Item committed for this event!')
            # once data is posted & persisted to database,
            #   then reload Contribute page
            return redirect(url_for('contribute', 
                            org_id = event.org_id,
                            event_id = event.id))
            
        else:
            # form did NOT validate path
            flash('Enter required fields!')
            return render_template('contribute.html',
                            webform = form,
                            webevent_org_id = event.org_id,
                            webevent_org_fname = event.org_fname,
                            webevent_org_lname = event.org_lname,          
                            webevent_name = event.evt_name,
                            webevent_date = event.evt_date,
                            webevent_time = event.evt_time,
                            webevent_location = event.evt_location,
                            webevent_address = event.evt_address,
                            webevent_city = event.evt_city,
                            webevent_state = event.evt_state,
                            webevent_zip = event.evt_zip,
                            webevent_notes = event.evt_notes,
                            webevent_image = event.evt_image,
                            webevent_id = event_id,
                            webrequested = req,
                            webcommitted = cmttd)
            
    else:
        # HTTP method is GET
            
        return render_template('contribute.html',
                            webform = ContributeForm(),
                            webevent_org_id = event.org_id,
                            webevent_org_fname = event.org_fname,
                            webevent_org_lname = event.org_lname,          
                            webevent_name = event.evt_name,
                            webevent_date = event.evt_date,
                            webevent_time = event.evt_time,
                            webevent_location = event.evt_location,
                            webevent_address = event.evt_address,
                            webevent_city = event.evt_city,
                            webevent_state = event.evt_state,
                            webevent_zip = event.evt_zip,
                            webevent_notes = event.evt_notes,
                            webevent_image = event.evt_image,
                            webevent_id = event_id,
                            webrequested = req,
                            webcommitted = cmttd)
コード例 #31
0
ファイル: mf_meals.py プロジェクト: marvcode/Mealz
def delete(org_id, event_id):
    # organizer has ability to delete one of their events
    # gather details about contributing user   
    usr_id = get_pure_id(user.get_id())
    usr_first_name = user.given_name
    usr_last_name = user.surname
    usr_username = user.username
    usr_email = user.email
    print "The current User is :", usr_id, "\n"
    # Gather details about this event
    print "\nQuery for Event"
    event = session.query(Event).filter_by(id=event_id).one()
    # Gather details about what has been requested for this event
    print "\nQuery for Requested Items"
    req = session.query(Requested).filter_by(evt_id=event_id).all()
    # Gather details about what is committed for this event
    print "\nQuery for Committed Items"
    cmttd = session.query(Committed).filter_by(evt_id=event_id).all()

    # verify user Id and org_id match
    if usr_id != org_id:
        flash('Event Mismatch!')
        return redirect(url_for('list_my_events',
                        user_id = usr_id))
    else:
        # user Id and org_id match
        if request.method == 'POST':
            db_change = False
            form = DeleteForm(formdata = MultiDict(request.form))
            if form.validate() and form.confirm.data:
                # Form Validated Path
                # delete this event in 3 tables
                # 1. Committed table
                for each in cmttd:
                    session.delete(each)
                db_change = True
                session.flush()
                # 2. Requested table
                for each in req:
                    session.delete(each)
                db_change = True
                session.flush()
                # 3. Event Table
                session.delete(event)
                db_change = True
                session.flush()
                if db_change:
                    flash('Event Deleted!')
                    session.commit()
                    db_change = False # reset db_change trigger
            return redirect(url_for('list_my_events',
                                       user_id = usr_id))
                        
        return render_template('deleteevent.html',
                            webform = DeleteForm(),
                            webevent_org_id = event.org_id,
                            webevent_org_fname = event.org_fname,
                            webevent_org_lname = event.org_lname,          
                            webevent_name = event.evt_name,
                            webevent_date = event.evt_date,
                            webevent_time = event.evt_time,
                            webevent_location = event.evt_location,
                            webevent_address = event.evt_address,
                            webevent_city = event.evt_city,
                            webevent_state = event.evt_state,
                            webevent_zip = event.evt_zip,
                            webevent_notes = event.evt_notes,
                            webevent_image = event.evt_image,
                            webevent_id = event_id,
                            webrequested = req,
                            webcommitted = cmttd)                
コード例 #32
0
ファイル: user_routes.py プロジェクト: AJRenold/futurepress
def on_load(state):
    stormpath_manager.init_app(state.app)


@login_required
@user_routes.route('/settings', methods=['GET', 'POST'])
def settings():
    if request.method == 'GET':
        return render_template('settings.html')

    is_author = True if request.form.get('is_author') is not None else False

    try:
        user.username = request.form.get('username')
        user.email = request.form.get('email')
        user.given_name = request.form.get('first_name')
        user.surname = request.form.get('last_name')
        user.save()
    except StormpathError, err:
        return render_template('settings.html', error=err.message)

    user_id = user.get_id()
    app_user = AppUser.query.get(stormpathUserHash(user_id))

    if app_user.is_author:
        author_name = request.form.get('author_name')
        if author_name != app_user.author.name:
            app_user.author.update_name(author_name)

    return render_template('settings.html')
コード例 #33
0
 def inject_appuser():
     if user.is_authenticated():
         user_id = user.get_id()
         app_user = AppUser.query.get(stormpathUserHash(user_id))
         return dict(app_user=app_user)
     return dict(app_user=None)
コード例 #34
0
ファイル: app.py プロジェクト: smileEO/SUMSarizer
    If the user is valid, we'll log them in, and store their session for later.
    """
    if request.method == 'GET':
        return render_template('login.html')

    try:
        _user = User.from_login(
            request.form.get('email'),
            request.form.get('password'),
        )
    except StormpathError, err:
        return render_template('login.html', error=err.message['message'])

    login_user(_user, remember=True)
    print stormpath_user.get_id()
    user = Users.from_stormpath(stormpath_user)
    print user.id
    return redirect(request.args.get('next') or url_for('dashboard'))


@app.route('/dashboard', methods=['GET'])
@login_required
def dashboard():
    page = int(request.args.get('page') or 1)
    user = Users.from_stormpath(stormpath_user)
    mystudies = user.studies().filter(StudyUsers.role == "owner").all()
    tolabel = user.studies().filter(StudyUsers.role == "labeller").all()
    return render_template('dashboard.html',
                           mystudies=mystudies,
                           tolabel=tolabel