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))
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 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('')
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)