def project_create(request):
  if request.method == 'POST':
    ln_user_id = str(request.user)[3:]
    ln_user = LinkedInUserProfile.objects.get(linkedin_uid = ln_user_id)
    name = request.POST['name']
    skills = extract_skills_from_user_string(request.POST['skills'])
    project = Project(name=name, skills_set=skills, creator = ln_user)
    project.save()

    """ prepare object with connections and skills """
    li = LinkedIn(settings.LINKEDIN_CONSUMER_KEY,\
      settings.LINKEDIN_CONSUMER_SECRET)
    access_token = request.session['access_token']
    connections = li.connections_api.getMyConnections(access_token)
    members = []

    for conn in connections:
      member = Member()
      member.proj = project
      member.linkedin_url = conn.profile_url
      member.pic = conn.picture_url
      member.first_name = conn.firstname
      member.last_name = conn.lastname
      member.info = {}
      member.info['summary'] = conn.summary.lower()
      member.info['specialties'] = conn.specialties.lower()
      members.append(member)
      
    request.session['members_' + str(project.id)] = members

    return redirect('web.views.project', project.id)
  return render_to_response('project/create.html', {}, RequestContext(request))
Exemple #2
0
def import_member():
    from web.dropbox import dropbox_setup_member

    member = Member(
        email="*****@*****.**",
        first_name="Daniel",
        initials="G.",
        last_name="Gonzalez Cunningham",
        class_year=2020,
    )

    major_1 = Major.query.filter_by(
        name="Electrical Engineering and Computer Science").first()
    major_2 = Major.query.filter_by(
        name="Earth, Atmospheric, and Planetary Sciences").first()
    member.major.extend([major_1, major_2])

    minor_1 = Minor.query.filter_by(name="Finance").first()
    minor_2 = Minor.query.filter_by(name="French").first()
    minor_3 = Minor.query.filter_by(name="German").first()
    minor_4 = Minor.query.filter_by(name="History").first()
    member.minor.extend([minor_1, minor_2, minor_3, minor_4])

    dropbox_setup_member(member)

    db.session.add(member)
    db.session.commit()
def build_member_data(project, access_token):
    li = LinkedIn(settings.LINKEDIN_CONSUMER_KEY,\
        settings.LINKEDIN_CONSUMER_SECRET)
    connections = li.connections_api.getMyConnections(access_token)
    members = []

    for conn in connections:
        member = Member()
        member.proj = project
        member.linkedin_url = conn.profile_url
        member.pic = conn.picture_url
        member.first_name = conn.firstname
        member.last_name = conn.lastname
        member.info = {}
        member.info['summary'] = conn.summary.lower()
        member.info['specialties'] = conn.specialties.lower()
        members.append(member)

    return members
def build_member_data(project, access_token):
  li = LinkedIn(settings.LINKEDIN_CONSUMER_KEY,\
      settings.LINKEDIN_CONSUMER_SECRET)
  connections = li.connections_api.getMyConnections(access_token)
  members = []

  for conn in connections:
    member = Member()
    member.proj = project
    member.linkedin_url = conn.profile_url
    member.pic = conn.picture_url
    member.first_name = conn.firstname
    member.last_name = conn.lastname
    member.info = {}
    member.info['summary'] = conn.summary.lower()
    member.info['specialties'] = conn.specialties.lower()
    members.append(member)

  return members
def member_add(request):
    # get member info from session
    idem_member = Member()
    project = Project.objects.get(pk=request.GET['project_id'])
    all_members = request.session['members_' + str(project.id)]
    for member in all_members:
        if member.linkedin_url == request.GET['url']:
            # add member to database
            idem_member.proj = project
            idem_member.linkedin_url = member.linkedin_url
            idem_member.first_name = member.first_name
            idem_member.last_name = member.last_name
            idem_member.pic = member.pic
            idem_member.info = member.info
            update_skills_for_member(project, idem_member)
            idem_member.save()
            break

    # update project score
    score = compute_score(project)
    project.score = score
    project.nr_members = project.nr_members + 1
    project.save()
    return HttpResponse('')
def member_add(request):
  # get member info from session
  idem_member = Member()
  project = Project.objects.get(pk = request.GET['project_id'])
  all_members = request.session['members_' + str(project.id)]
  for member in all_members:
    if member.linkedin_url == request.GET['url']:
      # add member to database
      idem_member.proj = project
      idem_member.linkedin_url = member.linkedin_url
      idem_member.first_name = member.first_name
      idem_member.last_name = member.last_name
      idem_member.pic = member.pic
      idem_member.info = member.info
      update_skills_for_member(project, idem_member)
      idem_member.save()
      break

  # update project score
  score = compute_score(project)
  project.score = score
  project.nr_members = project.nr_members + 1
  project.save()
  return HttpResponse('')
Exemple #7
0
def sign_up_view():
    if current_user.is_authenticated:
        flash(message=f"Hi {current_user.first_name}, you are already signed in, so we sent you to the profile page. If you are trying to sign up on behalf of someone else, please log out.", category="info")
        return redirect("/profile")

    form = MemberForm()

    csrf.protect()

    if form.validate_on_submit():
        email = form.data["email"]

        existing_member = Member.query.filter_by(email=email).first()

        if existing_member is not None:
            form.email.errors.append(
                f"A contributor with email {email} is already registered in our system. If you believe this to be an error, please let us know."
            )
        else:
            try:
                member_data = form.data
                member_data["affiliation"] = AffiliationEnum(member_data["affiliation"])

                del member_data["csrf_token"]
                del member_data["major"]
                del member_data["minor"]

                member = Member(**member_data)

                # process major(s)
                for major in form.data["major"]:
                    major_object = Major.query.filter_by(name=major).first()
                    member.major.append(major_object)

                # process minor(s)
                for minor in form.data["minor"]:
                    minor_object = Minor.query.filter_by(name=minor).first()
                    member.minor.append(minor_object)

                dropbox_setup_member(member)

                db.session.add(member)
                db.session.commit()

                member.generate_magic_link_token()

                send_registration_confirmation(member=member)

                login_user(member)

                return redirect(url_for("main.profile_view"))
            except Exception as e:
                app.logger.error(type(e), str(e))

                # TODO make this more robust...
                # Cancel the created FIle Request with Dropbox and commit the changes
                # to the database session
                cancel_request(member, commit=False)
                app.logger.debug(f"Dropbox requests created for {member.email} deleted")
                app.logger.debug(
                    f"User {member.email} deleted due to errors with creation"
                )

    return render_template("signup.html", form=form)