def document_basic_form_delete(request, document_id): if request.method == "DELETE": try: document_basic_form = DocumentBasicForm.objects.get(id=document_id) document_basic_form.delete() return make_response(status=200, content=json.dumps({'success': True, 'msg': "양식을 삭제하는데 성공하였습니다."})) except DocumentBasicForm.DoesNotExist: return make_response(status=400, content=json.dumps({'success': False, 'msg': '문서가 서버에 존재하지 않습니다.\n관리자에게 문의하세요.'})) except: return make_response(status=400, content=json.dumps({'success': False, 'msg': '문서를 삭제하는데 실패하였습니다.\n다시 시도해주세요.'}))
def document_basic_form(request, document_id): if request.method == "GET": attach_info = DocumentBasicForm.objects.get(id=document_id) filename = os.path.join(settings.MEDIA_ROOT, attach_info.attach.name) if not os.path.exists(settings.MEDIA_ROOT): return make_response(status=400, content=json.dumps({'success': False, 'msg': "NAS서버와 연결이 해제되어 파일 업로드가 불가능합니다.\n관리자에게 문의 바랍니다."})) elif not os.path.exists(filename): return make_response(status=400, content=json.dumps({'success': False, 'msg': "해당 문서가 서버에 존재하지 않아 다운로드 할 수 없습니다.\n관리자에게 문의 바랍니다."})) else: return make_response(status=200, content=json.dumps({'success': True}))
def document_form_upload_apply(request): title = request.POST['title'] attach_name = request.POST['qqfilename'] check_code = request.POST['checkCode'] description = request.POST['desc'] attach=request.FILES['qqfile'] content_size=request.FILES['qqfile'].size content_type=request.FILES['qqfile'].content_type try: document_basic_form = DocumentBasicForm(title=title, attach_name=attach_name, attach=attach, check_code=check_code, description=description, content_size=content_size, content_type=content_type, creator_id=request.session['id']) document_basic_form.save() return make_response(status=200, content=json.dumps({'success': True, 'msg': "양식 등록에 성공 하였습니다."})) except: return make_response(status=400, content=json.dumps({'success': False, 'msg': "양식 등록에 실패하였습니다.\n다시 시도해주시기 바랍니다."}))
def get_mnfacture_id(request, mnfacture): try: mnfacture_id = Mnfacture.objects.get(manafacture=mnfacture).id return make_response(status=200, content=json.dumps({ 'success': True, 'mnfacture_id': mnfacture_id })) except: return make_response(status=400, content=json.dumps({ 'success': False, 'msg': "제조사 정보를 정확히 가지고 오지 못하였습니다.\n다시 시도해주시기 바랍니다." }))
def document_attach_lists(request, client_id): documents = Document.objects.filter(client_id=client_id).order_by('-id') if documents.exists(): data = [] for document in documents: if document.project != 0: project = str(Project.objects.get(id=document.project)) else: project = 0 created_at = (document.created_at).strftime('%Y-%m-%d') product = str(document.product) result = {'id': document.id, 'category':document.get_category_display(), 'creator': str(document.creator), 'attach_name': document.attach_name, 'created_at': created_at, 'project': project, 'product': product, 'login_member_name': request.session['member_name']} data.append(result) return make_response(status=200, content=json.dumps({'success': True, 'data': data})) else: return make_response(status=400, content=json.dumps({'success': False, 'msg': "해당 고객사의 프로젝트가 존재하지 않습니다."}))
def document_download(request, document_id): attach_info = Document.objects.get(id=document_id) filename = os.path.join(settings.MEDIA_ROOT, attach_info.attach.name) response = "" if not os.path.exists(settings.MEDIA_ROOT): return make_response(status=400, content=json.dumps({'success': False, 'msg': "NAS서버와 연결이 해제되어 파일 업로드가 불가능합니다.\n관리자에게 문의 바랍니다."})) if not os.path.exists(filename): return make_response(status=400, content=json.dumps({'success': False, 'msg': "해당 문서가 서버에 존재하지 않아 다운로드 할 수 없습니다.\n관리자에게 문의 바랍니다."})) else: with open(filename, 'rb') as f: response = HttpResponse(FileWrapper( f), content_type=attach_info.attach) response['Content-Disposition'] = 'attachment; filename*=UTF-8\'\'%s' % urllib.parse.quote( attach_info.attach_name.encode('utf-8')) return response
def client_project_lists(request, client_id): reports = Project.objects.filter(client_id=client_id).values('id', 'title') if reports.exists(): reports = list(reports) return make_response(status=200, content=json.dumps({ 'success': True, 'reports': reports })) else: return make_response(status=400, content=json.dumps({ 'success': False, 'msg': "해당 고객사의 프로젝트가 존재하지 않습니다." }))
def document_default_auth(request): member_info = member_info_all(request) selected = {"selected": "true"} for item in member_info: group_data = item['groupData'] for item in group_data: if item['value'] == request.session['id']: item.update(selected) return make_response(content=json.dumps({'success': True, 'member_info': member_info, 'permission': REPORT_PERMISSION_DEFAULT}))
def get_model_id(request, model): try: model = ProductModel.objects.get(name=model) model_id = model.id mnfacture_id = Product.objects.get(pk=model.product_id.id).mnfacture.id return make_response(status=200, content=json.dumps({ 'success': True, 'model_id': model_id, 'mnfacture_id': mnfacture_id })) except: return make_response(status=400, content=json.dumps({ 'success': False, 'msg': "모델명 상세페이지로 이동에 실패 하였습니다." }))
def document_permission_check(request, document_id): attach_info = Document.objects.get(id=document_id) creator = attach_info.creator_id permissioners = attach_info.auth login_id = request.session['id'] if request.method == "GET": if login_id == creator: return make_response(status=200, content=json.dumps({'success': True})) else: permissioners_array = [] for permissioner in permissioners: permissioners_array.append(int(permissioner['value'])) if login_id in permissioners_array: return make_response(status=200, content=json.dumps({'success': True})) else: return make_response(status=400, content=json.dumps({'success': False, 'msg': "해당 문서에 대한 다운로드 권한이 없습니다."}))
def client_add_apply(request): try: new_client_name = request.POST['clientName'] new_client = Client(name=new_client_name, similar_word=SIMILAR_WORD_DEFAULT) new_client.save() return make_response(status=200, content=json.dumps({ 'success': True, 'msg': "고객사 신규 등록에 성공하였습니다." })) except: return make_response(status=400, content=json.dumps({ 'success': False, 'msg': "고객사 신규 등록에 실패하였습니다.\n다시 시도해주세요." }))
def client_dup_check(request): try: clients = Client.objects.all() client_name = request.POST['clientName'] client = clients.get(name=client_name) similar_client_list = [] similar = clients.values('similar_word', 'name') for item in similar: if client_name in item['similar_word']['similar']: similar_client_list.append(item['name']) if client_name in item['name']: similar_client_list.append(item['name']) return make_response(status=400, content=json.dumps({ 'success': False, 'client_name': client.name, "similar_client_list": similar_client_list })) except Client.DoesNotExist: similar_client_list = [] similar = clients.values('similar_word', 'name') for item in similar: if client_name in item['similar_word']['similar']: similar_client_list.append(item['name']) if client_name in item['name']: similar_client_list.append(item['name']) return make_response(status=200, content=json.dumps({ 'success': True, "similar_client_list": similar_client_list }))
def document_upload_apply(request): attach=request.FILES['qqfile'] attach_name = request.POST['qqfilename'] category = request.POST['category'] check_code = request.POST['checkCode'] client = request.POST['client'] content_size=request.FILES['qqfile'].size content_type=request.FILES['qqfile'].content_type mnfacture = request.POST['mnfacture'] project = int(request.POST['project']) product = request.POST['product'] permissions = json.loads(request.POST['permissions']) try: document = Document(client_id=client, project=project, category=category, auth=permissions, creator_id=request.session['id'], mnfacture_id=mnfacture, product_id=product, attach_name=attach_name, content_size=content_size, content_type=content_type, attach=attach, check_code=check_code) document.save() return make_response(status=200, content=json.dumps({'success': True, 'msg': '파일 업로드에 성공하였습니다.'})) except: return make_response(status=400, content=json.dumps({'success': False, 'msg': "문서 등록에 실패하였습니다.\n다시 시도해주시기 바랍니다."}))
def document_attach_auth(request, document_id): document = Document.objects.get(id=document_id) selected = {"selected": "true"} document_auth = document.auth member_info = member_info_all(request) for item in document_auth: auth_name = item['name'] for item in member_info: group_data = item['groupData'] for item in group_data: if auth_name == item['name']: item.update(selected) return make_response(content=json.dumps({'success': True, 'auth_info': member_info}))
def get_product_model_lists(request, mnfacture_id): products = Product.objects.filter(mnfacture_id=mnfacture_id).order_by('id') product_models = [] for product in products: product_model_lists = ProductModel.objects.filter( product_id=product.id).values("id", "name") ordered_product_models = product_model_lists.order_by("name") for ordered_product_model in ordered_product_models: product_models.append(ordered_product_model) return make_response(status=200, content=json.dumps({ 'success': True, 'product_models': product_models }))
def member_info(request): members = Member.objects.all() depts = members.values('dept').distinct().order_by('dept') members_data = [] for dept in depts: classify_member = members.filter(dept=dept['dept']) data_format = {'groupName': dept['dept'], 'groupData': []} for member in classify_member: data_format['groupData'].append({ 'name': member.name + " " + member.rank, 'value': member.id }) members_data.append(data_format) return make_response(status=200, content=json.dumps({'members_data': members_data}))
def document(request, document_id): if request.method == "DELETE": try: document = Document.objects.get(id=document_id) creator = document.creator_id login_id = request.session['id'] if creator == login_id: document.delete() return make_response(status=200, content=json.dumps({'success': True, 'msg': '문서가 삭제 되었습니다.'})) else: return make_response(status=400, content=json.dumps({'success': False, 'msg': '해당 문서를 삭제할 수 있는 권한이 없습니다.'})) except Document.DoesNotExist: return make_response(status=400, content=json.dumps({'success': False, 'msg': '문서가 서버에 존재하지 않습니다.\n관리자에게 문의하세요.'})) except: return make_response(status=400, content=json.dumps({'success': False, 'msg': '문서를 삭제하는데 실패하였습니다.\n다시 시도해주세요.'})) if request.method == "PATCH": data = QueryDict(request.body) modify_object = data['modifyObject'] try: document = Document.objects.get(id=document_id) if modify_object == "product": document.product_id = data['productId'] document.save() msg = "제품명 수정이 완료 되었습니다." elif modify_object == "category": document.category = data['category'] document.save() msg = "구분 수정이 완료 되었습니다." return make_response(status=200, content=json.dumps({'success': True, 'msg': msg, 'client_id': document.client_id, 'modify_object': modify_object})) except Document.DoesNotExist: return make_response(status=400, content=json.dumps({'success': False, 'msg': '문서가 존재하지 않습니다.\n관리자에게 문의하세요.', 'modify_object': modify_object})) except: return make_response(status=400, content=json.dumps({'success': False, 'msg': '정보를 수정하는데 실패하였습니다.\n다시 시도해 주세요', 'modify_object': modify_object}))
def login_process(request): if request.method == "POST": username = request.POST['memberId'] password = request.POST['memberPw'] password = parse.quote(password) url = settings.AUTH_URL cond = f"username={username}&password={password}" auth_url = f"{url}?{cond}" response = requests.get(auth_url) response_status_code = response.status_code if response_status_code != 200: return make_response(status=400, content=json.dumps({ 'success': False, 'msg': "사용자 정보를 가지고 올 수 없습니다.\n관리자에게 문의하세요." })) else: response_objects = json.loads(response.content)['objects'] if not response_objects: return make_response(status=400, content=json.dumps({ 'success': False, 'msg': "존재하지 않는 ID입니다.\n확인 후 다시 시도해주세요." })) else: valid = response_objects[0]['valid'] username = response_objects[0]['username'] if valid == True: member_info = Member.objects.get(member_id=username) request.session['id'] = member_info.id request.session['member_id'] = member_info.member_id request.session['member_name'] = member_info.name request.session['member_dept'] = member_info.dept request.session['member_rank'] = member_info.rank user = authenticate(request, username=username) login(request, user) if request.session[ 'member_dept'] in REPORT_PERMISSION_DEFAULT: redirect_url = "/weekly/" else: redirect_url = "/assets/" return make_response(status=200, content=json.dumps({ 'success': True, 'redirect_url': redirect_url })) else: return make_response( status=400, content=json.dumps({ 'success': False, 'msg': "패스워드가 정확하지 않습니다.\n확인 후 다시 시도하여주세요." }))