def index2(request): resp = HttpResponse('Здесь будет', content_type='text/plain; charset=utf-8') resp.write(' главная') resp.writelines({' страница', ' сайта'}) resp['keywords'] = 'Python, Django' return resp
def get_dump_json(search_pk, filename): reports, fieldnames = get_serial_reports_by_search(search_pk, False), get_dump_fieldnames() response = HttpResponse(content_type='application/json; charset=utf8') response['Content-Disposition'] = f'attachment; filename="{filename}"' response.writelines(json.dumps(cast_features_results(reports))) return response
def books_list_plaintext(request): response = HttpResponse(content_type='text/plain') response['Content-Disposition'] = 'attachment; filename=books.txt' books = Book.objects.all() for book in books: response.writelines(book.title + '\r\n') return response
def venue_text(request): """ :param name: request- render text file :param type: url :return: text """ response = HttpResponse(content_type='text/plain') response['Content-Disposition'] = 'attachment; filename=venues.txt' # Designate The Model venues = Venue.objects.all() # Create blank list lines = [] # Loop Thu and output for venue in venues: lines.append( f'{venue.name}\n{venue.address}\n{venue.zip_code}\n{venue.phone}\n{venue.web}\n{venue.email_address}\n\n\n' ) #lines = ["This is line 1\n", #"This is line 2\n", #"This is line 3\n\n", #"John Elder Is Awesome!\n"] # Write To TextFile response.writelines(lines) return response
def index3(request): """функция формирует страницу на низком уровне""" resp = HttpResponse("Здесь будет", content_type='text/plain; charset=utf-8') resp.write(' главная') resp.writelines((' страница', ' сайта')) resp['keywords'] = 'Python Django' return resp
def rsp_attr(request): """手动构造响应""" rsp = HttpResponse(content='django 教程', content_type='text/html', charset='utf8') rsp.content = 'web 全栈' rsp.write('django 网站开发') rsp.writelines(['aaa', 'bbb', 'ccc']) rsp.flush() return rsp
def test_stream_interface(self): r = HttpResponse('asdf') self.assertEqual(r.getvalue(), b'asdf') r = HttpResponse() self.assertIs(r.writable(), True) r.writelines(['foo\n', 'bar\n', 'baz\n']) self.assertEqual(r.content, b'foo\nbar\nbaz\n')
def test_stream_interface(self): r = HttpResponse("asdf") self.assertEqual(r.getvalue(), b"asdf") r = HttpResponse() self.assertEqual(r.writable(), True) r.writelines(["foo\n", "bar\n", "baz\n"]) self.assertEqual(r.content, b"foo\nbar\nbaz\n")
def commandLine(request): command = request.GET['command'] response = HttpResponse() if (command == "start"): response.writelines("run") return response else: return HttpResponse("unkown command: " + request.GET['command'])
def test_stream_interface(self): r = HttpResponse('asdf') self.assertEqual(r.getvalue(), b'asdf') r = HttpResponse() self.assertEqual(r.writable(), True) r.writelines(['foo\n', 'bar\n', 'baz\n']) self.assertEqual(r.content, b'foo\nbar\nbaz\n')
def test_stream_interface(self): r = HttpResponse("asdf") self.assertEqual(r.getvalue(), b"asdf") r = HttpResponse() self.assertIs(r.writable(), True) r.writelines(["foo\n", "bar\n", "baz\n"]) self.assertEqual(r.content, b"foo\nbar\nbaz\n")
def index_2(request): """Низкоуровневая отрисовка главной страницы""" resp = HttpResponse('Здесь будет', content_type='text/plain; charset=utf-8') resp.write(' главная') resp.writelines((' страница', ' сайта')) resp['keywords'] = 'Python, Django' return resp
def _post(url, body, headers): """ Send a post request to DataCite. Args: url (str): The URL to call body (str): The data headers (dict): A dictionary of headers to use Return: a HTTPResponse """ _set_timeout() opener = get_opener() auth_string = (base64.encodestring(DATACITE_USER_NAME + ':' + DATACITE_PASSWORD)).rstrip() headers.update({'Authorization':'Basic ' + auth_string}) # If the request body is a string, urllib2 attempts to concatenate the url, # body and headers. If the url is unicode, the request body can get # converted unicode. This has resulted in issues where there are characters # with diacritic marks in the request body. To avoid these issues the url is # UTF-8 encoded. url_encode = url.encode('utf-8') req = urllib2.Request(url_encode, data=body, headers=headers) try: response = opener.open(req) except (urllib2.HTTPError) as ex: msg = ex.readlines() LOGGING.warn('HTTPError error getting %s. %s', url, msg) return get_response(msg, ex.code) except (socket.timeout, urllib2.URLError) as ex: LOGGING.warn('Timeout or URLError error getting %s. %s', url, ex.reason) return get_response(ex.reason, 500) except (SSLError) as ex: LOGGING.warn('SSLError error getting %s. %s', url, ex) return get_response(ex, 500) except UnicodeDecodeError as ex: LOGGING.info('UnicodeDecodeError error getting %s. %s', url, ex) return get_response(ex, 500) finally: _close(opener) if response.headers.has_key('Content-Type'): ret_response = HttpResponse(content_type= response.headers.get('Content-Type')) else: ret_response = HttpResponse() ret_response.status_code = response.code ret_response.reason_phrase = response.msg # pylint: disable=maybe-no-member ret_response.writelines(response.readlines()) if response.headers.has_key('location'): ret_response.setdefault('Location', response.headers.get('location')) return ret_response
def gen_text(request): response = HttpResponse(content_type='text/plain') response['Content-Disposition'] = 'attachment; filename="bart.txt"' lines = [ "I will not expose the ignorance of the faculty.\n", "I will not conduct my own fire drills.\n", "I will not prescribe medication.\n", ] response.writelines(lines) return response
def get_text(request): response = HttpResponse(content_type="text/plain") response["Content-Disposition"] = 'attachment; filename="bart.txt"' lines = [ "green eggs and ham\n", "green eggs and spam\n", "green eggs and flan\n", ] response.writelines(lines) return response
def get(request_method, url, headers): """ Send a get or head request to DataCite. Args: request_method (str): This should be 'GET' or 'HEAD' url (str): The URL to call headers (dict): A dictionary of headers to use Return: a HTTPResponse """ LOGGING.info("get(%s,%s,%s)", request_method, url, headers) _set_timeout() opener = get_opener() auth_string = ((base64.encodebytes( (DATACITE_USER_NAME + ":" + DATACITE_PASSWORD).encode())).decode("utf-8").rstrip()) headers.update({"Authorization": "Basic " + auth_string}) req = urllib.request.Request(url, data=None, headers=headers) if request_method == "HEAD": req.get_method = lambda: "HEAD" try: response = opener.open(req) except urllib.error.HTTPError as ex: msg = ex.readlines() if ex.code in [404, 410]: LOGGING.info("HTTPError error getting %s. %s", url, msg) else: LOGGING.warning("HTTPError error getting %s. %s", url, msg) return get_response(msg, ex.code) except (socket.timeout, urllib.error.URLError) as ex: LOGGING.warning("Timeout or URLError error getting %s. %s", url, ex.reason) if isinstance(ex.reason, Exception): ex = ex.reason LOGGING.warning("Nested exception %s. %s", ex, ex.reason) return get_response(ex.reason, 500) except SSLError as ex: LOGGING.warning("SSLError error getting %s. %s", url, ex) return get_response(ex, 500) finally: _close(opener) if "Content-Type" in response.headers: ret_response = HttpResponse( content_type=response.headers.get("Content-Type")) else: ret_response = HttpResponse() ret_response.status_code = response.code ret_response.reason_phrase = response.msg # pylint: disable=maybe-no-member ret_response.writelines(response.readlines()) return ret_response
def get(self, request, username, *args, **kwargs): """ This request returns the roles of the user. The user must be active. """ user = get_object_or_404(User, username=username) if not user.is_active: raise Http404('User not active') user_info = _UserInfo(user) response = HttpResponse(content_type='application/json') # pylint: disable=maybe-no-member response.writelines(user_info.get_json()) return response
def get(request_method, url, headers): """ Send a get or head request to DataCite. Args: request_method (str): This should be 'GET' or 'HEAD' url (str): The URL to call headers (dict): A dictionary of headers to use Return: a HTTPResponse """ LOGGING.info('get(%s,%s,%s)', request_method, url, headers) _set_timeout() opener = get_opener() auth_string = (base64.encodestring(DATACITE_USER_NAME + ':' + DATACITE_PASSWORD)).rstrip() headers.update({'Authorization': 'Basic ' + auth_string}) req = urllib2.Request(url, data=None, headers=headers) if request_method == "HEAD": req.get_method = lambda: 'HEAD' try: response = opener.open(req) except (urllib2.HTTPError) as ex: msg = ex.readlines() if ex.code in [404, 410]: LOGGING.info('HTTPError error getting %s. %s', url, msg) else: LOGGING.warn('HTTPError error getting %s. %s', url, msg) return get_response(msg, ex.code) except (socket.timeout, urllib2.URLError) as ex: LOGGING.warn('Timeout or URLError error getting %s. %s', url, ex.reason) return get_response(ex.reason, 500) except (SSLError) as ex: LOGGING.warn('SSLError error getting %s. %s', url, ex) return get_response(ex, 500) finally: _close(opener) if response.headers.has_key('Content-Type'): ret_response = HttpResponse( content_type=response.headers.get('Content-Type')) else: ret_response = HttpResponse() ret_response.status_code = response.code ret_response.reason_phrase = response.msg # pylint: disable=maybe-no-member ret_response.writelines(response.readlines()) return ret_response
def get(request_method, url, headers): """ Send a get or head request to DataCite. Args: request_method (str): This should be 'GET' or 'HEAD' url (str): The URL to call headers (dict): A dictionary of headers to use Return: a HTTPResponse """ LOGGING.info('get(%s,%s,%s)', request_method, url, headers) _set_timeout() opener = get_opener() auth_string = (base64.encodestring(DATACITE_USER_NAME + ':' + DATACITE_PASSWORD)).rstrip() headers.update({'Authorization':'Basic ' + auth_string}) req = urllib2.Request(url, data=None, headers=headers) if request_method == "HEAD": req.get_method = lambda: 'HEAD' try: response = opener.open(req) except (urllib2.HTTPError) as ex: msg = ex.readlines() if ex.code in [404, 410]: LOGGING.info('HTTPError error getting %s. %s', url, msg) else: LOGGING.warn('HTTPError error getting %s. %s', url, msg) return get_response(msg, ex.code) except (socket.timeout, urllib2.URLError) as ex: LOGGING.warn('Timeout or URLError error getting %s. %s', url, ex.reason) return get_response(ex.reason, 500) except (SSLError) as ex: LOGGING.warn('SSLError error getting %s. %s', url, ex) return get_response(ex, 500) finally: _close(opener) if response.headers.has_key('Content-Type'): ret_response = HttpResponse(content_type= response.headers.get('Content-Type')) else: ret_response = HttpResponse() ret_response.status_code = response.code ret_response.reason_phrase = response.msg # pylint: disable=maybe-no-member ret_response.writelines(response.readlines()) return ret_response
def generate_text_file(request): response = HttpResponse(content_type="text/plain") response["Content-Disposition"] = "attachment; filename=generated_task_list.txt" lines = [] item_list = TaskModel.objects.filter(user=request.user.id) for item in item_list: if item.complete == True: lines.append(f"Task Name: {item.title}\n Status: Completed!\n\n\n") else: lines.append(f" Task Name: {item.title}\n Status: Not Completed!\n\n\n") response.writelines(lines) return response
def events_to_text(request): response = HttpResponse(content_type='text/plain') response['Content-Disposition'] = 'attachment; filename=events.txt' # Designate the Model events = Event.objects.all() lines = [] for event in events: lines.append(f'Name: {event.name}\nDate: {event.event_date}\nStart Time: {event.start_time}\nEnd Time: {event.end_time}\n' f'Manager: {event.manager}\nContact Phone: {event.man_phone}\nDescription: {event.eve_description}\n' f'Venue: {event.venue}\nAtendees: {event.attendees}\n\n') # Write to text file response.writelines(lines) return response
def venue_to_text(request): response = HttpResponse(content_type='text/plain') response['Content-Disposition'] = 'attachment; filename=venues.txt' # Designate the Model venues = Venue.objects.all() lines = [] for venue in venues: lines.append(f'Name: {venue.name}\nAddress: {venue.address}\nPost Code: {venue.post_code}\nContact phone: {venue.phone}\n' f'WebSite: {venue.web}\nEmail: {venue.email}\nDescription: {venue.ven_description}\nRating: {venue.booking_rates}\n' f'Open hours: {venue.from_hour} - {venue.to_hour}\nSquare(m^2): {venue.flour_size}\n\n') # Write to text file response.writelines(lines) return response
def get_response(message, code): """ Create a response. Args: message (str): The message to include in the response code (str): The return code to include in the response Return: a dict, if present key = 'Accept' """ response = HttpResponse(status=code) # pylint: disable=no-member response.writelines(message) return response
def hello(request): response = HttpResponse() # response 常见方法 response.write("Welcome to Django1!") response.write("Welcome to Django2!") response.writelines( ["Welcome to Django3!", "Welcome to Django4!", "Welcome to Django5!"]) print(response.getvalue()) print(response.writable()) response.__setitem__("age", "30") print(response.has_header("age")) print(response.__getitem__("age")) print(response.get("age")) response.__delitem__("age") response['address'] = "北京" print(response.get("address")) return response
def getMessenger(request, id): comment = Comment.objects.filter(ContributeID_id=id) html = [] for i in comment: if getAuthGroup(i.UserID_id) == "Coordinator": html.append("<span class='you first'>" + i.Comment + " <span class='time'>" + i.DateComment.strftime("%m/%d/%y, %H:%M:%S") + "</span></span>") if getAuthGroup(i.UserID_id) == "Student": html.append("<span class='friend last'>" + i.Comment + "<span class='time'>" + i.DateComment.strftime("%m/%d/%y, %H:%M:%S") + "</span></span>") response = HttpResponse() response.writelines(html) return response
def issue_text(request): response = HttpResponse(content_type='text/plain') response['Content-Disposition'] = 'attachment; filename=issues.txt' #create blank list lines = [] #Designate the issues issues = Issue.objects.all() #loop thro and output for issue in issues: lines.append( f'{issue.issue_id}\n {issue.issue_code}\n{issue.username}\n{issue.cluster_code}\n{issue.center_code}{issue.issue_description}\n{issue.urgent}\n{issue.issue_date}\n\n\n' ) #write to file response.writelines(lines) return response
def _delete(url): """ Send a delete request to DataCite. Args: url (str): The URL to call Return: a HTTPResponse """ _set_timeout() opener = get_opener() auth_string = ((base64.encodebytes( (DATACITE_USER_NAME + ":" + DATACITE_PASSWORD).encode())).decode("utf-8").rstrip()) headers = {"Authorization": "Basic " + auth_string} req = urllib.request.Request(url, data=None, headers=headers) req.get_method = lambda: "DELETE" try: response = opener.open(req) except urllib.error.HTTPError as ex: msg = ex.readlines() LOGGING.warning("HTTPError error getting %s. %s", url, msg) return get_response(msg, ex.code) except (socket.timeout, urllib.error.URLError) as ex: LOGGING.warning("Timeout or URLError error getting %s. %s", url, ex.reason) return get_response(ex.reason, 500) except SSLError as ex: LOGGING.warning("SSLError error getting %s. %s", url, ex) return get_response(ex, 500) finally: _close(opener) if "Content-Type" in response.headers: ret_response = HttpResponse( content_type=response.headers.get("Content-Type")) else: ret_response = HttpResponse() ret_response.status_code = response.code ret_response.reason_phrase = response.msg # pylint: disable=maybe-no-member ret_response.writelines(response.readlines()) return ret_response
def venue_text(request): response = HttpResponse(content_type='text/plain') response['Content-Disposition'] = 'attachment; filename=venues.txt' # Designate the Model venues = Venue.objects.all() # Create blank list lines = [] # Loop through and output for venue in venues: lines.append( f'{venue.name}\n{venue.address}\n{venue.zip_code}\n{venue.phone}\n{venue.web}\n{venue.email_address}\n\n' ) # Write to TextFile response.writelines(lines) return response
def _delete(url): """ Send a delete request to DataCite. Args: url (str): The URL to call Return: a HTTPResponse """ _set_timeout() opener = get_opener() auth_string = (base64.encodestring(DATACITE_USER_NAME + ':' + DATACITE_PASSWORD)).rstrip() headers = {'Authorization': 'Basic ' + auth_string} req = urllib2.Request(url, data=None, headers=headers) req.get_method = lambda: 'DELETE' try: response = opener.open(req) except (urllib2.HTTPError) as ex: msg = ex.readlines() LOGGING.warn('HTTPError error getting %s. %s', url, msg) return get_response(msg, ex.code) except (socket.timeout, urllib2.URLError) as ex: LOGGING.warn('Timeout or URLError error getting %s. %s', url, ex.reason) return get_response(ex.reason, 500) except (SSLError) as ex: LOGGING.warn('SSLError error getting %s. %s', url, ex) return get_response(ex, 500) finally: _close(opener) if response.headers.has_key('Content-Type'): ret_response = HttpResponse( content_type=response.headers.get('Content-Type')) else: ret_response = HttpResponse() ret_response.status_code = response.code ret_response.reason_phrase = response.msg # pylint: disable=maybe-no-member ret_response.writelines(response.readlines()) return ret_response
def _delete(url): """ Send a delete request to DataCite. Args: url (str): The URL to call Return: a HTTPResponse """ _set_timeout() opener = get_opener() auth_string = (base64.encodestring(DATACITE_USER_NAME + ':' + DATACITE_PASSWORD)).rstrip() headers = {'Authorization':'Basic ' + auth_string} req = urllib2.Request(url, data=None, headers=headers) req.get_method = lambda: 'DELETE' try: response = opener.open(req) except (urllib2.HTTPError) as ex: msg = ex.readlines() LOGGING.warn('HTTPError error getting %s. %s', url, msg) return get_response(msg, ex.code) except (socket.timeout, urllib2.URLError) as ex: LOGGING.warn('Timeout or URLError error getting %s. %s', url, ex.reason) return get_response(ex.reason, 500) except (SSLError) as ex: LOGGING.warn('SSLError error getting %s. %s', url, ex) return get_response(ex, 500) finally: _close(opener) if response.headers.has_key('Content-Type'): ret_response = HttpResponse(content_type= response.headers.get('Content-Type')) else: ret_response = HttpResponse() ret_response.status_code = response.code ret_response.reason_phrase = response.msg # pylint: disable=maybe-no-member ret_response.writelines(response.readlines()) return ret_response
def venue_text(request): response = HttpResponse(content_type='text/plain') response['Content-Disposition'] = 'attachment; filename=venues-list.txt' # designate the mode # takes everything from venue object venues = Venue.objects.all() lines = [] # loop through it for venue in venues: # adds everything to lines array lines.append( f'{venue.name}\n{venue.address}\n{venue.phone}\n{venue.zip_code}\n{venue.phone}\n{venue.web}\n{venue.email_address}\n\n') # lines = ["This is line 1\n ", "This is on the line two \n", "this is line three \n"] # write to the text file response.writelines(lines) return response
def index(request): # bam model moi server_hashcode = hashModelH5.hashModel() data = {} if request.method == 'GET': response = HttpResponse() ana_hashcode = request.GET['q'] # so khop voi model vua duoc gui den response.writelines("server:"+server_hashcode) if hashModelH5.compareModel(server_hashcode,ana_hashcode): data = { 'link':'https://raw.githubusercontent.com/ErikHorus1249/Web_Tutorials/master/DjangoTurtorial/turtorial1/home/model/hashModelH5.py' } else: data = { 'link':'invalid' } return JsonResponse(data)
def retrieve(self, request, pk=None): try: obj = ZipRequest.objects.get(token=pk) except ObjectDoesNotExist: return Response(status=status.HTTP_404_NOT_FOUND) response = HttpResponse(content_type='application/zip') date = datetime.now() file_name = 'uc2_dms_download_' + date.strftime("%Y%m%d_%H%M.zip") response['Content-Disposition'] = 'attachment; filename={}'.format(file_name) response['X-Archive-Files'] = "zip" if not obj.check_result: # start with small files to make sending the first bytes faster obs = obj.uc2observations.order_by('file_size') else: obs = obj.uc2observations.all() lines = [] for x in obs: if obj.check_result: if x.check_result_file: display_name = x.file_standard_name[:-3] + "_check_result.txt" file_path = x.check_result_file.name size = x.check_result_size crc = x.check_result_crc32 else: continue else: display_name = x.file_standard_name file_path = x.file.name size = x.file_size crc = x.file_crc32 path = f"/protected/{os.path.basename(file_path)}" s = " ".join([crc, str(size), path, display_name]) + "\r\n" lines.append(s) response.writelines(lines) return response
def get_response(request): """Return information about HttpResponse object.""" a_dict = {} m_dict = {} context = {} response = HttpResponse() # Attributes: response.content = "some content" a_dict["content"] = response.content a_dict["charset"] = response.charset a_dict["status_code"] = response.status_code a_dict["reason_phrese"] = response.reason_phrase a_dict["streaming"] = response.streaming a_dict["closed"] = response.closed # Methods: m_dict["__setitem__(header, value)"] = response.__setitem__("test", "Test") m_dict["__getitem__(header)"] = response.__getitem__("test") m_dict["__delitem__(header)"] = response.__delitem__("test") m_dict["has_header(header)"] = response.has_header("test") m_dict["setdefault(headre, value)"] = response.setdefault("t", "test") m_dict["set_cookie(key, value='', max_age=None,\ expres=None, path='/', domain=None,\ secure=False, httponly=False,\ samesite=None)"] = response.set_cookie("some", "foo") m_dict["set_signed_cookie(key, value='', max_age=None,\ expres=None, path='/', domain=None,\ secure=False, httponly=False,\ samesite=None)"] = response.set_signed_cookie("foo", "foo") m_dict["delete_cookie(key, path='/', domain=None)"] =\ response.delete_cookie("foo") m_dict["close()"] = response.close() m_dict["write(content)"] = response.write("<p>CONTENT</p>") m_dict["flush()"] = response.flush() m_dict["tell()"] = response.tell() m_dict["getvalue()"] = response.getvalue() m_dict["readable()"] = response.readable() m_dict["seekable()"] = response.seekable() m_dict["writable()"] = response.writable() m_dict["writelines(lines)"] = response.writelines([" one", " two", " three"]) m_dict["lines"] = response.getvalue() context["a_dict"] = a_dict context["m_dict"] = m_dict return render(request, "response_object/response.html", context)
def render_add_flut(request): """ This view render function accepts a user name and a text string to add as a flut/tweet for the specifying user. """ assert isinstance(request, HttpRequest) user_name = request.POST['user_name'] if 'user_name' in request.POST else None flut_text = request.POST['flut_text'] if 'flut_text' in request.POST else None if None == user_name or None == flut_text: response = HttpResponse(status = 400) return response.writelines('The save/post request for your user name, and for your flut text both cannot be empty.') else: flut_object = logic.save_submitted_user_flut_post(user_name, flut_text) return render( request, 'flutter_twitterclone/acknowledgement.html', context_instance = RequestContext(request, { 'title':'Your flut was saved', 'user_name':flut_object.user_author, 'flut_text':flut_object.text, 'timestamp':flut_object.timestamp, }) )
def instances(request): """ :param request: :return: """ error_messages = [] all_host_vms = {} all_user_vms = {} computes = Compute.objects.all() if not request.user.is_superuser: user_instances = UserInstance.objects.filter(user_id=request.user.id) for usr_inst in user_instances: if connection_manager.host_is_up(usr_inst.instance.compute.type, usr_inst.instance.compute.hostname): conn = wvmHostDetails(usr_inst.instance.compute, usr_inst.instance.compute.login, usr_inst.instance.compute.password, usr_inst.instance.compute.type) all_user_vms[usr_inst] = conn.get_user_instances(usr_inst.instance.name) all_user_vms[usr_inst].update({'compute_id': usr_inst.instance.compute.id}) else: for comp in computes: if connection_manager.host_is_up(comp.type, comp.hostname): try: conn = wvmHostDetails(comp, comp.login, comp.password, comp.type) if conn.get_host_instances(): all_host_vms[comp.id, comp.name] = conn.get_host_instances() for vm, info in conn.get_host_instances().items(): try: check_uuid = Instance.objects.get(compute_id=comp.id, name=vm) if check_uuid.uuid != info['uuid']: check_uuid.save() all_host_vms[comp.id, comp.name][vm]['is_template'] = check_uuid.is_template except Instance.DoesNotExist: check_uuid = Instance(compute_id=comp.id, name=vm, uuid=info['uuid']) check_uuid.save() conn.close() except libvirtError as lib_err: error_messages.append(lib_err) if request.method == 'POST': name = request.POST.get('name', '') compute_id = request.POST.get('compute_id', '') instance = Instance.objects.get(compute_id=compute_id, name=name) try: conn = wvmInstances(instance.compute.hostname, instance.compute.login, instance.compute.password, instance.compute.type) if 'poweron' in request.POST: msg = _("Power On") addlogmsg(request.user.username, instance.name, msg) conn.start(name) return HttpResponseRedirect(request.get_full_path()) if 'poweroff' in request.POST: msg = _("Power Off") addlogmsg(request.user.username, instance.name, msg) conn.shutdown(name) return HttpResponseRedirect(request.get_full_path()) if 'powercycle' in request.POST: msg = _("Power Cycle") conn.force_shutdown(name) conn.start(name) addlogmsg(request.user.username, instance.name, msg) return HttpResponseRedirect(request.get_full_path()) if 'getvvfile' in request.POST: msg = _("Send console.vv file") addlogmsg(request.user.username, instance.name, msg) response = HttpResponse(content='', content_type='application/x-virt-viewer', status=200, reason=None, charset='utf-8') response.writelines('[virt-viewer]\n') response.writelines('type=' + conn.graphics_type(name) + '\n') response.writelines('host=' + conn.graphics_listen(name) + '\n') response.writelines('port=' + conn.graphics_port(name) + '\n') response.writelines('title=' + conn.domain_name(name) + '\n') response.writelines('password='******'\n') response.writelines('enable-usbredir=1\n') response.writelines('disable-effects=all\n') response.writelines('secure-attention=ctrl+alt+ins\n') response.writelines('release-cursor=ctrl+alt\n') response.writelines('fullscreen=1\n') response.writelines('delete-this-file=1\n') response['Content-Disposition'] = 'attachment; filename="console.vv"' return response if request.user.is_superuser: if 'suspend' in request.POST: msg = _("Suspend") addlogmsg(request.user.username, instance.name, msg) conn.suspend(name) return HttpResponseRedirect(request.get_full_path()) if 'resume' in request.POST: msg = _("Resume") addlogmsg(request.user.username, instance.name, msg) conn.resume(name) return HttpResponseRedirect(request.get_full_path()) except libvirtError as lib_err: error_messages.append(lib_err) addlogmsg(request.user.username, instance.name, lib_err.message) return render(request, 'instances.html', locals())
def instances(request): """ :param request: :return: """ error_messages = [] all_host_vms = {} all_user_vms = {} computes = Compute.objects.all().order_by("name") def get_userinstances_info(instance): info = {} uis = UserInstance.objects.filter(instance=instance) info['count'] = uis.count() if info['count'] > 0: info['first_user'] = uis[0] else: info['first_user'] = None return info def refresh_instance_database(comp, vm, info): instances = Instance.objects.filter(name=vm) if instances.count() > 1: for i in instances: user_instances_count = UserInstance.objects.filter(instance=i).count() if user_instances_count == 0: addlogmsg(request.user.username, i.name, _("Deleting due to multiple records.")) i.delete() try: check_uuid = Instance.objects.get(compute_id=comp["id"], name=vm) if check_uuid.uuid != info['uuid']: check_uuid.save() all_host_vms[comp["id"], comp["name"], comp["status"], comp["cpu"], comp["mem_size"], comp["mem_perc"]][vm]['is_template'] = check_uuid.is_template all_host_vms[comp["id"], comp["name"], comp["status"], comp["cpu"], comp["mem_size"], comp["mem_perc"]][vm]['userinstances'] = get_userinstances_info(check_uuid) except Instance.DoesNotExist: check_uuid = Instance(compute_id=comp["id"], name=vm, uuid=info['uuid']) check_uuid.save() if not request.user.is_superuser: user_instances = UserInstance.objects.filter(user_id=request.user.id) for usr_inst in user_instances: if connection_manager.host_is_up(usr_inst.instance.compute.type, usr_inst.instance.compute.hostname): conn = wvmHostDetails(usr_inst.instance.compute, usr_inst.instance.compute.login, usr_inst.instance.compute.password, usr_inst.instance.compute.type) all_user_vms[usr_inst] = conn.get_user_instances(usr_inst.instance.name) all_user_vms[usr_inst].update({'compute_id': usr_inst.instance.compute.id}) else: for comp in computes: status = connection_manager.host_is_up(comp.type, comp.hostname) if status: try: conn = wvmHostDetails(comp, comp.login, comp.password, comp.type) comp_node_info = conn.get_node_info() comp_mem = conn.get_memory_usage() comp_instances = conn.get_host_instances(True) if comp_instances: comp_info= { "id": comp.id, "name": comp.name, "status": status, "cpu": comp_node_info[3], "mem_size": comp_node_info[2], "mem_perc": comp_mem['percent'] } all_host_vms[comp_info["id"], comp_info["name"], comp_info["status"], comp_info["cpu"], comp_info["mem_size"], comp_info["mem_perc"]] = comp_instances for vm, info in comp_instances.items(): refresh_instance_database(comp_info, vm, info) conn.close() except libvirtError as lib_err: error_messages.append(lib_err) if request.method == 'POST': name = request.POST.get('name', '') compute_id = request.POST.get('compute_id', '') instance = Instance.objects.get(compute_id=compute_id, name=name) try: conn = wvmInstances(instance.compute.hostname, instance.compute.login, instance.compute.password, instance.compute.type) if 'poweron' in request.POST: msg = _("Power On") addlogmsg(request.user.username, instance.name, msg) conn.start(name) return HttpResponseRedirect(request.get_full_path()) if 'poweroff' in request.POST: msg = _("Power Off") addlogmsg(request.user.username, instance.name, msg) conn.shutdown(name) return HttpResponseRedirect(request.get_full_path()) if 'powercycle' in request.POST: msg = _("Power Cycle") conn.force_shutdown(name) conn.start(name) addlogmsg(request.user.username, instance.name, msg) return HttpResponseRedirect(request.get_full_path()) if 'getvvfile' in request.POST: msg = _("Send console.vv file") addlogmsg(request.user.username, instance.name, msg) response = HttpResponse(content='', content_type='application/x-virt-viewer', status=200, reason=None, charset='utf-8') response.writelines('[virt-viewer]\n') response.writelines('type=' + conn.graphics_type(name) + '\n') response.writelines('host=' + conn.graphics_listen(name) + '\n') response.writelines('port=' + conn.graphics_port(name) + '\n') response.writelines('title=' + conn.domain_name(name) + '\n') response.writelines('password='******'\n') response.writelines('enable-usbredir=1\n') response.writelines('disable-effects=all\n') response.writelines('secure-attention=ctrl+alt+ins\n') response.writelines('release-cursor=ctrl+alt\n') response.writelines('fullscreen=1\n') response.writelines('delete-this-file=1\n') response['Content-Disposition'] = 'attachment; filename="console.vv"' return response if request.user.is_superuser: if 'suspend' in request.POST: msg = _("Suspend") addlogmsg(request.user.username, instance.name, msg) conn.suspend(name) return HttpResponseRedirect(request.get_full_path()) if 'resume' in request.POST: msg = _("Resume") addlogmsg(request.user.username, instance.name, msg) conn.resume(name) return HttpResponseRedirect(request.get_full_path()) except libvirtError as lib_err: error_messages.append(lib_err) addlogmsg(request.user.username, instance.name, lib_err.message) view_style = settings.VIEW_INSTANCES_LIST_STYLE return render(request, 'instances.html', locals())