def login(request): if request.method == 'POST': try: username = request.POST.get("username") password = request.POST.get("password") users = models.User.objects.filter(username=username) if len(username) == 0 or len(users) == 0: res = {"error": "no such a user"} return HttpResponse(json.dumps(res)) if users[0].password != password: res = {"error": "password is wrong"} return HttpResponse(json.dumps(res)) if users[0].session_id != "0": res = {"error": "has logged in"} return HttpResponse(json.dumps(res)) session = ''.join( random.sample(string.ascii_letters + string.digits, 16)) models.User.objects.filter(username=username).update( session_id=session) res = {"user": username} response = HttpResponseRedirect('homepage') response["Set-Cookie"] = "session_id=" + session response.write(json.dumps(res)) return response #, render_to_response('homepage.html') except: res = {"error": "wrong"} return HttpResponse(content=json.dumps(res), status=200) else: res = {"error": "wrong"} return HttpResponse(content=json.dumps(res), status=200)
def drawGroup(request, adjlist, format='png'): """ Returns an image of the provided adjacency list `adjlist` for a molecular group. urllib is used to quote/unquote the adjacency list. """ from rmgpy.molecule.group import Group from rmgpy.molecule.adjlist import InvalidAdjacencyListError adjlist = str(urllib.unquote(adjlist)) try: group = Group().fromAdjacencyList(adjlist) except (InvalidAdjacencyListError, ValueError): response = HttpResponseRedirect(static('img/invalid_icon.png')) else: if format == 'png': response = HttpResponse(content_type="image/png") response.write(group.draw('png')) elif format == 'svg': response = HttpResponse(content_type="image/svg+xml") svgdata = group.draw('svg') # Remove the scale and rotate transformations applied by pydot svgdata = re.sub(r'scale\(0\.722222 0\.722222\) rotate\(0\) ', '', svgdata) response.write(svgdata) else: response = HttpResponse('Image format not implemented.', status=501) return response
def logout(req): #response = HttpResponse('退出成功!!') response = HttpResponseRedirect('/login/') #清理cookie里保存username response.delete_cookie('username') response.write("<script>window.location='/login/'</script>") return response
def drawGroup(request, adjlist, format='png'): """ Returns an image of the provided adjacency list `adjlist` for a molecular group. urllib is used to quote/unquote the adjacency list. """ from rmgpy.molecule.group import Group from rmgpy.molecule.adjlist import InvalidAdjacencyListError adjlist = urllib.parse.unquote(adjlist) try: group = Group().from_adjacency_list(adjlist) except (InvalidAdjacencyListError, ValueError): response = HttpResponseRedirect(static('img/invalid_icon.png')) else: if format == 'png': response = HttpResponse(content_type="image/png") response.write(group.draw('png')) elif format == 'svg': response = HttpResponse(content_type="image/svg+xml") svg_data = group.draw('svg') # Remove the scale and rotate transformations applied by pydot svg_data = re.sub(r'scale\(0\.722222 0\.722222\) rotate\(0\) ', '', svg_data) response.write(svg_data) else: response = HttpResponse('Image format not implemented.', status=501) return response
def drawMolecule(request, adjlist, format='png'): """ Returns an image of the provided adjacency list `adjlist` for a molecule. urllib is used to quote/unquote the adjacency list. """ import io from rmgpy.molecule import Molecule from rmgpy.molecule.draw import MoleculeDrawer from rmgpy.molecule.adjlist import InvalidAdjacencyListError adjlist = urllib.parse.unquote(adjlist) try: molecule = Molecule().from_adjacency_list(adjlist) except (InvalidAdjacencyListError, ValueError): response = HttpResponseRedirect(static('img/invalid_icon.png')) else: if format == 'png': response = HttpResponse(content_type="image/png") surface, _, _ = MoleculeDrawer().draw(molecule, file_format='png') response.write(surface.write_to_png()) elif format == 'svg': response = HttpResponse(content_type="image/svg+xml") svg_data = io.BytesIO() MoleculeDrawer().draw(molecule, file_format='svg', target=svg_data) response.write(svg_data.getvalue()) else: response = HttpResponse('Image format not implemented.', status=501) return response
class LogoutView(PutView): http_method_names = [ 'post', ] def __init__(self): self.res = HttpResponse(content_type='application/javascript') def post(self, request): logout(request) if 'application/json' in request.META['CONTENT_TYPE']: self.res.write(json.dumps({ 'logged_out': True, })) else: self.res = HttpResponseRedirect(reverse('home')) self.res.delete_cookie('sessionid') return self.res
class LogoutView(PutView): http_method_names = ['post',] def __init__(self): self.res = HttpResponse(content_type='application/javascript') def post(self, request): logout(request) if 'application/json' in request.META['CONTENT_TYPE']: self.res.write(json.dumps( { 'logged_out' : True, } )) else: self.res = HttpResponseRedirect(reverse('home')) self.res.delete_cookie('sessionid') return self.res
def ShortUrlHandler(request, ident, usuario=None): if request.method == 'GET': miId = int(ident, BASE_CONVERSION) llave = ndb.Key('ShortUrlM', miId) modelo = llave.get() urlredireccion = '/' if (modelo is not None): urlredireccion = modelo.theurl response = HttpResponseRedirect(urlredireccion) #response = HttpResponse("", content_type='application/json', status=200) #response.write(simplejson.dumps(comun.to_dict(modelo))) return response elif request.method == 'POST': response = HttpResponse("", content_type='application/json', status=200) peticion = simplejson.loads(request.raw_post_data) theurl = peticion['theurl'] ans = {} ans['error'] = 0 ans['theurl'] = theurl #Primero toca hacer la prueba de si existe previamente la url larga temporal = ndb.gql('SELECT * FROM ShortUrlM WHERE theurl = :1', theurl) datos, next_cursor, more = temporal.fetch_page(1) if (len(datos) > 0): #Ya existe y no lo debo crear ans['id'] = str_base(datos[0].key.id(), BASE_CONVERSION) else: #Se debe crear unaurl = ShortUrlM(theurl=theurl) unaurl.put() ans['id'] = str_base(unaurl.key.id(), BASE_CONVERSION) response.write(simplejson.dumps(ans)) return response
class PageResource(PageLikeResource): def load(self): if self.req.user and not self.req.user.is_anonymous(): caching.add_recent_email(self.req.user.email) page = WikiPage.get_by_path(self.path) page.set_cur_user(self.req.user) return page def get(self, head): page = self.load() if not page.can_read(self.req.user): self._403(page, head) return self.res if get_restype(self.req, 'html') == 'html' and self.req.GET.get('view', self.default_view) == 'default': redirect = page.metadata.get('redirect', None) if redirect is not None: self.res.location = '/' + WikiPage.title_to_path(redirect) self.res.status_code = 303 return self.res representation = self.get_representation(page) return representation.respond(self.res, head) def post(self): page = self.load() if not page.can_write(self.req.user): self._403(page) return new_body = self.req.POST['body'] comment = self.req.POST.get('comment', '') view = self.req.GET.get('view', self.default_view) restype = get_restype(self.req, 'html') # POST to edit form, not content if restype == 'html' and view == 'edit': if page.revision == 0: page.body = new_body representation = self.get_representation(page) representation.respond(self.res, head=False) return # POST to content try: page.update_content(page.body + new_body, page.revision, comment, self.req.user) quoted_path = urllib2.quote(self.path.replace(' ', '_')) if restype == 'html': self.res.location = str('/' + quoted_path) else: self.res.location = str('/%s?_type=%s' % (quoted_path, restype)) self.res.status = 303 self.res['X-Message'] = 'Successfully updated.' except ValueError as e: html = template(self.req, 'error.html', { 'page': page, 'description': 'Cannot accept the data for following reasons', 'errors': [e.message], 'suggest_link': ('javascript:history.back();', 'Go back'), }) self.res.status = 406 self.res['Content-Type'] = 'text/html; charset=utf-8' self.res.write(html) return self.res def put(self): page = self.load() revision = int(self.req.POST['revision']) new_body = self.req.POST['body'] comment = self.req.POST.get('comment', '') preview = self.req.POST.get('preview', '0') partial = self.req.GET.get('partial', 'all') if preview == '1': self.res['Content-Type'] = 'text/html; charset=utf-8' page = page.get_preview_instance(new_body) html = template(self.req, 'wikipage_bodyonly.html', { 'page': page, }) self.res.write(html) return self.res try: page.update_content(new_body, revision, comment, self.req.user, partial=partial) self.res['X-Message'] = 'Successfully updated.' if partial == 'all': quoted_path = urllib2.quote(self.path.encode('utf8').replace(' ', '_')) restype = get_restype(self.req, 'html') if restype == 'html': self.res = HttpResponseRedirect(str('/' + quoted_path)) else: self.res = HttpResponseRedirect(str('/%s?_type=%s' % (quoted_path, restype))) self.res.status_code = 303 else: self.res.status_code = 200 self.res['Content-Type'] = 'application/json; charset=utf-8' self.res.write(json.dumps({'revision': page.revision})) return self.res except ConflictError as e: html = template(self.req, 'wikipage.edit.html', {'page': page, 'conflict': e}) self.res.status = 409 self.res['Content-Type'] = 'text/html; charset=utf-8' self.res.write(html) return self.res except ValueError as e: html = template(self.req, 'error.html', { 'page': page, 'description': 'Cannot accept the data for following reasons', 'errors': [e.message], 'suggest_link': ('javascript:history.back();', 'Go back'), }) self.res.status = 406 self.res['Content-Type'] = 'text/html; charset=utf-8' self.res.write(html) return self.res def delete(self): page = self.load() try: page.delete(self.req.user) self.res.status_code = 204 except RuntimeError as e: self.res.status_code = 403 return self.res def represent_html_edit(self, page): if page.revision == 0 and self.req.GET.get('body'): page.body = self.req.GET.get('body') return TemplateRepresentation({'page': page}, self.req, 'wikipage.edit.html')