Beispiel #1
0
def create_group():
    if request.method == 'POST':
        handle = request.form.get("handle")
        name = request.form.get("name")
        description = request.form.get("description")
        privacy = request.form.get("privacy")
        location_is_fixed = int(request.form.get("location_is_fixed"))
        address = request.form.get("address")
        members = eval(request.form.get("members"))

        file = request.files.get("image")

        if not handle:
            return json.dumps({'status': 'Handle must be filled in', 'box_id': 'handle'})

        if not name:
            return json.dumps({'status': 'Name must be filled in', 'box_id': 'name'})

        if not address and location_is_fixed:
            return json.dumps({'status': 'Location must be filled in if fixed', 'box_id': 'location'})

        if not Group.query.filter_by(handle=handle).first() is None:
            return json.dumps({'status': 'Handle taken', 'box_ids': ['handle']})

        location = geocode(address)
        if not location:
            return json.dumps({'status': 'Non-valid location', 'box_id': 'location'})

        group = Group(handle=handle, name=name, description=description, privacy=privacy, location_is_fixed=location_is_fixed)
        group.add_members([User.query.filter_by(username=username).first() for username in members] + [current_user])
        if location_is_fixed:
            group.set_location(location, prelocated=True)

        if file:
            image = Image.open(file)
            new_image = image.resize((256, 256), Image.ANTIALIAS)
            new_image.format = image.format
            group.profile_pic.save(image=new_image)
        db.session.commit()
        return json.dumps({'status': 'Successfully saved'})

    connections = current_user.connections.all()
    return render_template('connections.html', profile=current_user, connections=connections, create_group=True)