Example #1
0
def reg_host():
    req_json = MultiDict(request.get_json())

    already_host = db_session.query(SessionHost).filter(SessionHost.roundtable_id == req_json.get('roundtable_num'),
                                                        SessionHost.library_id==req_json.get('library_id'),
                                                        SessionHost.session_time==req_json.get('session_time'))

    if already_host.count() == 2:
        return jsonify(success=False, msg='신청하신 도서관은 진행자 모집이 완료되었습니다.')

    session_host_obj = SessionHost()
    session_host_obj.roundtable_id = req_json.get('roundtable_num')
    session_host_obj.library_id = req_json.get('library_id')
    session_host_obj.session_time = 1 if already_host.count() == 0 else 2
    session_host_obj.host_user_id = current_user.id
    session_host_obj.host_name = current_user.name
    session_host_obj.host_belong = req_json.get('organization')
    session_host_obj.host_hp = current_user.phone or req_json.get('phone')
    session_host_obj.host_email = current_user.email or req_json.get('email')
    session_host_obj.host_use_yn = True
    db_session.add(session_host_obj)

    user_record = db_session.query(User).filter(User.id == current_user.id).first()

    if not current_user.phone and req_json.get('phone'):
        user_record.phone = req_json.get('phone')

    if not current_user.email and req_json.get('email'):
        user_record.email = req_json.get('email')

    return jsonify(success=True)
Example #2
0
    def post(self):
        req_json = MultiDict(request.get_json())

        user_record = db_session.query(User).outerjoin(UserSocialAuth).filter(
            UserSocialAuth.uid == req_json.get("lectureID")).first()

        lecturer_obj = Lecture()
        lecturer_obj.roundtable_id = req_json.get('roundtable_id')
        lecturer_obj.library_id = req_json.get('library').get('id')
        lecturer_obj.session_time = req_json.get('lectureTime')
        lecturer_obj.lecture_title = req_json.get('lectureTitle')
        lecturer_obj.lecture_summary = req_json.get('lectureSummary')
        lecturer_obj.lecture_expected_audience = req_json.get(
            'lectureExpectedAudience')
        lecturer_obj.lecture_user_id = (user_record and user_record.id) or None
        lecturer_obj.lecture_name = req_json.get('lectureName')
        lecturer_obj.lecture_belong = req_json.get('lectureBelong')
        lecturer_obj.lecture_hp = req_json.get('lectureHp')
        lecturer_obj.lecture_email = req_json.get('lectureEmail')
        lecturer_obj.lecture_public_yn = req_json.get('lectureUserYn',
                                                      type=bool)

        db_session.add(lecturer_obj)

        return jsonify(success=True)
Example #3
0
def add_votebook():
    req_json = request.get_json()

    # 가장 최근의 회차 정보를 가져온다.
    main_roundtable = db_session.query(Roundtable).filter(Roundtable.is_active == True).first()

    # 강연자가 최근 회차로 신청한 강연 ID를 가져온다.
    lecture_rec = Lecture.query.filter(Lecture.roundtable_id == main_roundtable.id,
                                       Lecture.lecture_user_id == current_user.id).order_by(desc(Lecture.id)).first()

    # 추천 도서 정보 기록
    vote_book = VoteBooks()
    vote_book.roundtable_id = main_roundtable.id
    vote_book.lecture_id = lecture_rec.id
    vote_book.lecture_user_id = current_user.id
    vote_book.book_info = {
        'book1': req_json.get('book1'),
        'book1_desc': req_json.get('book1_desc'),
        'book2': req_json.get('book2'),
        'book3': req_json.get('book3'),
        'etc': req_json.get('etc')
    }
    vote_books.enter_path = req_json.get("enter_path")

    db_session.add(vote_book)
    db_session.flush()

    return jsonify(success=True)
Example #4
0
def tmpl_update():
    record = PageTemplate()
    record.page_name = 'public/boost.html'
    record.page_content = open('nanumlectures/templates/public/boost2.html',
                               'r').read()

    db_session.add(record)
    db_session.commit()

    click.echo("DB에 후원 정보 페이지가 입력 되었습니다")
Example #5
0
    def post(self):
        req_json = request.get_json()

        faq_obj = FAQ()
        faq_obj.classify = req_json.get('faqClassify')
        faq_obj.subject = req_json.get('faqSubject')
        faq_obj.body = req_json.get('faqBody')
        faq_obj.writer_id = current_user.id

        db_session.add(faq_obj)

        return jsonify(success=True)
Example #6
0
def goods_donation():
    req_json = request.get_json()

    record = DonationGoods()
    record.roundtable_id = req_json.get('roundtable_num')
    record.lecture_user_id = current_user.id
    record.donation_type = req_json.get('donation_type')
    record.donation_description = req_json.get('donation_description')
    record.donation_transport = req_json.get('donation_transport_type')

    db_session.add(record)

    return jsonify(success=True, msg='신청되었습니다')
Example #7
0
    def post(self):
        req_json = request.get_json()

        board_obj = BoardModel()
        board_obj.title = req_json.get('title')
        board_obj.content = req_json.get('content')
        board_obj.wdate = func.now()
        board_obj.mdate = func.now()
        board_obj.user_id = current_user.id
        board_obj.hit = 0

        db_session.add(board_obj)

        return jsonify(success=True)
Example #8
0
def reset_complete_password(uuid):

    # 해당된 UUID에 일치하는 아이디 찾기
    uuid_object = db_session.query(FindPasswordToken).filter(FindPasswordToken.uuid == str(uuid)).first()
    reset_complete_user = db_session.query(User).filter(User.id == uuid_object.find_user_id).first()

    # 해당된 패스워드를 SHA256 방식으로 변경
    req_json = request.get_json()
    reset_password = req_json.get('reset_password')

    # 해당된 정보를 통해 USERID 변경
    reset_complete_user.set_password(reset_password)
    db_session.add(reset_complete_user)

    return jsonify(success=True)
Example #9
0
    def post(self):
        req_json = request.get_json()

        news_obj = News()
        news_obj.category = req_json.get('pressCategory')
        news_obj.press_date = req_json.get('pressDate')
        news_obj.news_title = req_json.get('newsTitle')
        news_obj.news_press = req_json.get('newsPress')
        news_obj.news_link = req_json.get('newsLink')
        news_obj.news_body = req_json.get('newsBody')
        news_obj.writer_id = current_user.id

        db_session.add(news_obj)

        return jsonify(success=True)
Example #10
0
    def post(self):
        new_filename = str(uuid.uuid4())

        design_obj = DesignData()
        design_obj.roundtable = db_session.query(Roundtable).filter(
            Roundtable.roundtable_num == request.form.get('roundtable_num')).first()
        design_obj.design_name = request.form.get('design_name')
        design_obj.design_files = {request.files['img'].filename: new_filename}
        design_obj.design_description = request.form.get('description')

        db_session.add(design_obj)

        upload_blob(request.files['img'], new_filename, request.files['img'].mimetype)

        return jsonify(success=True)
Example #11
0
    def post(self):
        req_json = request.get_json()

        goods_donate = DonationGoods()
        goods_donate.roundtable = db_session.query(Roundtable).filter(
            Roundtable.roundtable_num == req_json.get(
                'roundtable_num')).first()
        goods_donate.donation_type = req_json.get('donation_type')
        goods_donate.donation_description = req_json.get(
            'donation_description')
        goods_donate.donation_transport = req_json.get(
            'donation_transport_type')

        db_session.add(goods_donate)

        return jsonify(success=True)
Example #12
0
def find_match_password():
    req_json = request.get_json()
    find_username = req_json.get('find_username')
    find_email = req_json.get('find_email')
    find_name = req_json.get('find_name')
    find_count = db_session.query(User).filter(User.username == find_username,
                                               User.email == find_email,
                                               User.name == find_name).count()
    if find_count == 1:
        # 아이디, 이메일, 이름 동일한 경우
        # 유효기간 : 10분
        uuid_string = uuid.uuid4().__str__()
        expire_date = datetime.datetime.now()
        expire_date_timedelta = datetime.timedelta(seconds=600)
        expire_date += expire_date_timedelta
        find_object = db_session.query(User).filter(
            User.username == find_username,
            User.email == find_email,
            User.name == find_name)

        # 해당되는 uuid Table Insert
        find_password_obj = FindPasswordToken()
        find_password_obj.find_user_id = find_object.first().id
        find_password_obj.find_user_email = find_email
        find_password_obj.uuid = uuid_string
        find_password_obj.find_expired_date = expire_date
        db_session.add(find_password_obj)

        # 해당되는 이름 가져오기
        user_object = db_session.query(User).filter(User.username == find_username,
                                                   User.email == find_email,
                                                   User.name == find_name).first()

        # 해당되는 Email 파일을 오픈 후 메일 주소의 이름과 링크만 수정한다.
        # 해당 HTML 파일을 읽어온다
        content = render_template("public/user/mail_password.html",
                                  user_real_name=user_object.name,
                                  uuid=uuid_string)

        # Amazon SES Mail Send
        ses = SESMail("10월의 하늘 비밀번호 초기화 인증", content, [])
        ses.send({"name": find_name, "addr": find_email})

        return jsonify(success=True)
    else:
        # 아닌 경우
        return jsonify(success=False)
Example #13
0
    def post(self):
        req_json = request.get_json()

        # 도서 관리 추가
        books_obj = Books()
        books_obj.roundtable = db_session.query(Roundtable).filter(
            Roundtable.roundtable_num == req_json.get(
                'roundtable_num')).first()
        books_obj.books_title = req_json.get('booksTitle')
        books_obj.books_link = req_json.get('booksLink')
        books_obj.books_isbn = req_json.get('booksISBN')
        books_obj.books_date = req_json.get('booksDate')
        books_obj.books_company = req_json.get('booksCompany')
        books_obj.books_body = req_json.get('booksBody')
        books_obj.books_bookshop = req_json.get('shopLink')

        db_session.add(books_obj)

        return jsonify(success=True)
Example #14
0
    def post(self, host):
        req_json = request.get_json()

        user_record = db_session.query(User).outerjoin(UserSocialAuth).filter(
            UserSocialAuth.uid == req_json.get("hostId")).first()

        host.host_num = req_json.get('hostNum')
        host.host_library_name = req_json.get('hostLibraryName')
        host.host_time = req_json.get('hostTime')
        host.host_title = req_json.get('hostTitle')
        host.host_user_id = (user_record and user_record.id) or None
        host.host_name = req_json.get('hostName')
        host.host_belong = req_json.get('hostBelong')
        host.host_hp = req_json.get('hostHp')
        host.host_email = req_json.get('hostEmail')
        host.host_use_yn = True

        db_session.add(host)

        return jsonify(success=True)
Example #15
0
    def post(self):
        req_json = request.get_json()

        obj = Roundtable()
        obj.roundtable_num = req_json.get('roundtableNum')
        obj.roundtable_year = req_json.get('roundtableYear')
        obj.roundtable_date = req_json.get('roundtableDate')
        obj.staff = req_json.get('staff')

        for item in req_json.get('library_list'):
            lib_info = RoundtableAndLibrary(
                round_num=item.get('session_time'),
                library_type=item.get('library_type'))
            lib_info.library = db_session.query(Library).filter(
                Library.id == item.get('library').get('id')).first()
            obj.library.append(lib_info)

        db_session.add(obj)

        return jsonify(success=True)
Example #16
0
def ot_and_party_update():
    req_json = request.get_json()

    main_roundtable = db_session.query(Roundtable).filter(Roundtable.is_active == True).first()

    # 현재 유저로 등록된 참석 여부 레코드가 있는지 확인한다.
    ot_party_record = db_session.query(OTandParty).filter(OTandParty.party_user_id == current_user.id).first()
    if not ot_party_record:
        ot_party_record = OTandParty()
        ot_party_record.party_user_id = current_user.id
        ot_party_record.roundtable_id = main_roundtable.id
        db_session.add(ot_party_record)

    if req_json.get('join_type') == 'ot1_join':
        ot_party_record.ot1_join = req_json.get('value')
    elif req_json.get('join_type') == 'ot2_join':
        ot_party_record.ot2_join = req_json.get('value')
    elif req_json.get('join_type') == 'party_join':
        ot_party_record.party_join = req_json.get('value')

    return jsonify(success=True)
Example #17
0
def reg_votebook():
    req_json = request.get_json()

    # 추천 도서 정보 기록
    vote_book = VoteBooks()
    vote_book.roundtable_id = req_json.get('roundtable_num')
    vote_book.lecture_id = req_json.get('lecture_id')
    vote_book.lecture_user_id = current_user.id
    vote_book.book_info = {
        'book1': req_json.get('book1'),
        'book1_desc': req_json.get('book1_desc'),
        'book2': req_json.get('book2'),
        'book3': req_json.get('book3'),
        'etc': req_json.get('etc')
    }
    vote_books.enter_path = req_json.get("enter_path")

    db_session.add(vote_book)
    db_session.flush()

    return jsonify(success=True)
Example #18
0
    def post(self):
        req_json = request.get_json()

        user_record = db_session.query(User).outerjoin(UserSocialAuth).filter(
            UserSocialAuth.uid == req_json.get("hostId")).first()

        session_host_obj = SessionHost()
        session_host_obj.roundtable_id = req_json.get('roundtable_id')
        session_host_obj.library_id = req_json.get('library').get('id')
        session_host_obj.session_time = req_json.get('hostTime')
        session_host_obj.host_user_id = (user_record
                                         and user_record.id) or None
        session_host_obj.host_name = req_json.get('hostName')
        session_host_obj.host_belong = req_json.get('hostBelong')
        session_host_obj.host_hp = req_json.get('hostHp')
        session_host_obj.host_email = req_json.get('hostEmail')
        session_host_obj.host_use_yn = True

        db_session.add(session_host_obj)

        return jsonify(success=True)
Example #19
0
    def post(self):
        req_json = request.get_json()

        library_obj = Library()
        library_obj.library_name = req_json.get('libraryName')
        library_obj.library_addr = req_json.get('libraryAddr')
        library_obj.manager_name = req_json.get('managerName')
        library_obj.manager_email = req_json.get('managerEmail')
        library_obj.manager_description = req_json.get('managerDescription')
        library_obj.library_place = req_json.get('libraryPlace')
        library_obj.place_seats = req_json.get('placeSeats')
        library_obj.pr_production = req_json.get('prProduction')
        library_obj.projector_screen = bool(req_json.get('projector_screen'))
        library_obj.projector_notebook = bool(req_json.get('projector_notebook'))
        library_obj.sound_equipment = bool(req_json.get('sound_equipment'))
        library_obj.camcorder_yn = bool(req_json.get('camcorder_yn'))
        library_obj.lecture_video_recording_yn = bool(req_json.get('lecture_video_recording_yn'))
        library_obj.coordinate_photography_yn = bool(req_json.get('coordinate_photography_yn'))
        library_obj.internet_yn = bool(req_json.get('internet_yn'))
        library_obj.etc_equipment = req_json.get('etc_equipment')
        library_obj.manager_hp = req_json.get('managerHp')
        library_obj.library_tel = req_json.get('libraryTel')
        library_obj.library_fax = req_json.get('libraryFax')
        library_obj.library_homepage = req_json.get('libraryHomepage')
        library_obj.library_description = req_json.get('libraryDescription')
        library_obj.expected_audience = req_json.get('expectedAudience')
        library_obj.expected_listens = req_json.get('expectedListens')
        library_obj.lat = req_json.get('libraryLat')
        library_obj.long = req_json.get('libraryLong')
        if req_json.get('libraryAddr').split(" ")[0] == '제주특별자치도':
            library_obj.area = '제주도'
        elif req_json.get('libraryAddr').split(" ")[0] == '세종특별자치시':
            library_obj.area = '세종시'
        else:
            library_obj.area = req_json.get('libraryAddr').split(" ")[0]

        db_session.add(library_obj)

        return jsonify(success=True)
Example #20
0
    def post(self):
        req_json = request.get_json()

        photo_obj = PhotoAlbum()
        photo_obj.roundtable = db_session.query(Roundtable).filter(
            Roundtable.roundtable_num == req_json.get(
                'roundtable_num')).first()
        photo_obj.album_name = req_json.get('album_name')
        photo_obj.album_link = req_json.get('album_link')
        photo_obj.album_id = req_json.get('album_id')

        tmp_req = requests.get(req_json.get('represent_img'))
        represent_img_uri = DataURI.make(tmp_req.headers['Content-Type'],
                                         None,
                                         base64=True,
                                         data=tmp_req.content)

        photo_obj.representation_image_link = str(represent_img_uri)
        photo_obj.album_description = req_json.get('description')

        db_session.add(photo_obj)

        return jsonify(success=True)
Example #21
0
def reg_lecture():
    req_json = MultiDict(request.get_json())

    already_library = db_session.query(Lecture).filter(Lecture.roundtable_id == req_json.get('roundtable_num'),
                                                       Lecture.library_id==req_json.get('library_id'),
                                                       Lecture.session_time==req_json.get('session_time')).first()

    if already_library:
        return jsonify(success=False, msg='신청하신 도서관의 강연 시간에 다른 분이 신청하셨습니다')

    lecture_obj = Lecture()
    lecture_obj.roundtable_id = req_json.get('roundtable_num')
    lecture_obj.library_id = req_json.get('library_id')
    lecture_obj.session_time = req_json.get('session_time')
    lecture_obj.lecture_title = req_json.get('title')
    lecture_obj.lecture_summary = req_json.get('description')
    lecture_obj.lecture_expected_audience = req_json.get('expectedaudience')
    lecture_obj.lecture_user_id = current_user.id
    lecture_obj.lecture_name = current_user.name
    lecture_obj.lecture_belong = req_json.get('organization')
    lecture_obj.lecture_hp = current_user.phone or req_json.get('phone')
    lecture_obj.lecture_email = current_user.email or req_json.get('email')
    lecture_obj.lecture_public_yn = req_json.get('public_yn', type=bool)

    db_session.add(lecture_obj)
    db_session.flush()

    user_record = db_session.query(User).filter(User.id == current_user.id).first()

    if not current_user.phone and req_json.get('phone'):
        user_record.phone = req_json.get('phone')

    if not current_user.email and req_json.get('email'):
        user_record.email = req_json.get('email')

    return jsonify(success=True, lecture_id=lecture_obj.id)
Example #22
0
    def post(self):
        # 현재 표출 중인 회차의 정보를 가져온다.
        main_roundtable = db_session.query(Roundtable).filter(
            Roundtable.is_active == True).first()

        req_json = request.get_json()

        mail_record = MailSend()
        mail_record.receive_type = req_json.get('receive_type')
        # receive_type에 따라 전송할 메일 주소를 가져온다.
        # area 추가(지역별로 메일을 보낼 수도 있다)
        area = req_json.get('area')

        mail_addr = []
        if req_json.get('receive_type') == 'F':
            # 별도 메일 전송
            mail_addr = []
            for receiver in req_json.get("mail_addr").splitlines():
                if receiver.find("<") > 0:
                    to_addr_split = receiver.split("<")
                    to_addr = dict(name=to_addr_split[0].strip(),
                                   addr=to_addr_split[1].strip("<>"))
                else:
                    to_addr = dict(name='', addr=receiver)
                mail_addr.append(to_addr)
        elif req_json.get('receive_type') == 'E':
            # 도서관 섭외일때
            to_addr = {}
            if req_json.get('mail_addr').find("<") > 0:
                to_addr_split = req_json.get("mail_addr").split("<")
                to_addr["name"] = to_addr_split[0].strip()
                to_addr["addr"] = to_addr_split[1].strip("<>")
            else:
                to_addr["name"] = ""
                to_addr["addr"] = req_json.get('mail_addr')
            mail_addr = [
                to_addr, {
                    "name": "Library Team",
                    "addr": "*****@*****.**"
                }, {
                    "name": "시월의하늘준비모임",
                    "addr": '*****@*****.**'
                }
            ]
            # mail_addr = [req_json.get("mail_addr")]
        elif req_json.get('receive_type') == 'D':
            # 진행자 일 때
            qry = SessionHost.query.filter(
                SessionHost.roundtable_id == main_roundtable.id)

            if area == 'all':
                mail_addr = [{
                    "name": entry.host_name,
                    "addr": entry.host_email
                } for entry in qry]
            else:
                mail_addr = [{
                    "name": entry.host_name,
                    "addr": entry.host_email
                } for entry in qry if entry.library.area == area]

        elif req_json.get('receive_type') == 'C':
            # 강연자 일 때
            qry = Lecture.query.filter(
                Lecture.roundtable_id == main_roundtable.id)

            if area == 'all':
                mail_addr = [{
                    "name": entry.lecture_name,
                    "addr": entry.lecture_email
                } for entry in qry]
            else:
                mail_addr = [{
                    "name": entry.lecture_name,
                    "addr": entry.lecture_email
                } for entry in qry if entry.library.area == area]
        elif req_json.get('receive_type') == 'B':
            # 도서관 일 때
            libraries = RoundtableAndLibrary.query.filter(
                RoundtableAndLibrary.roundtable_id == main_roundtable.id)

            if area == 'all':
                mail_addr = [{
                    "name": entry.library.manager_name,
                    "addr": entry.library.manager_email
                } for entry in libraries]
            else:
                mail_addr = [{
                    "name": entry.library.manager_name,
                    "addr": entry.library.manager_email
                } for entry in libraries if entry.library.area == area]
        elif req_json.get('receive_type') == 'A':
            # 도서관
            libraries = RoundtableAndLibrary.query.filter(
                RoundtableAndLibrary.roundtable_id == main_roundtable.id)
            mail_addr = [{
                "name": entry.library.manager_name,
                "addr": entry.library.manager_email
            } for entry in libraries]

            # 강연자
            mail_addr.extend([{
                "name": entry.lecture_name,
                "addr": entry.lecture_email
            } for entry in Lecture.query.filter(
                Lecture.roundtable_id == main_roundtable.id)])

            # 진행자
            mail_addr.extend([{
                "name": entry.host_name,
                "email": entry.host_email
            } for entry in SessionHost.query.filter(
                SessionHost.roundtable_id == main_roundtable.id)])

        mail_record.receive_addr = mail_addr
        mail_record.mail_subject = req_json.get('mail_subject')
        mail_record.mail_content = req_json.get('mail_content')
        mail_record.uploading_file_cnt = 0
        mail_record.uploaded_file_cnt = req_json.get('uploaded_file_cnt')
        mail_record.mail_attach = []
        mail_record.is_mail_send = False

        db_session.add(mail_record)

        # 첨부한 파일 갯수가 0인 경우는 여기서 메일을 보내고 끝낸다.
        if mail_record.uploaded_file_cnt == 0:
            # 전송 목록 필터링
            receive_addr = filter(lambda x: bool(x), mail_record.receive_addr)
            mail_record.is_mail_send = True
            mail_record.send_time = func.now()

            ses = SESMail(mail_record.mail_subject, mail_record.mail_content,
                          mail_record.mail_attach)
            for item in receive_addr:
                name_replace = mail_record.mail_subject.find("{name}") > -1
                ses.send({
                    "name": item["name"],
                    "addr": item["addr"]
                }, name_replace)

        db_session.flush()

        return jsonify(success=True, mail_id=mail_record.id)