def _image_bytes_are_valid(self, image_bytes): from google.appengine.api import images try: # Unfortunately the only way to validate image bytes on AppEngine is to # perform a transform. Lame. images.im_feeling_lucky(image_bytes) except images.BadImageError: return False return True
def get(self): i_key = ndb.Key(urlsafe=self.request.get('img_id')) x = self.request.get('size') deg = self.request.get('deg') flip = str(self.request.get('flip')) lucky = str(self.request.get('lucky')) #flipV=self.request.get('flipV') #nothing=self.request.get('nothing') #self.response.out.write(str(x)+"<br>") greeting = i_key.get() if greeting.bomma: if x == '': x = '500' x = int(x) deg = int(deg) self.response.headers['Content-Type'] = 'image/png' greeting.bomma = images.resize(greeting.bomma, x, x) greeting.bomma = images.rotate(greeting.bomma, deg) if flip == "flipH": greeting.bomma = images.horizontal_flip(greeting.bomma) if flip == "flipV": greeting.bomma = images.vertical_flip(greeting.bomma) if lucky == "lucky": greeting.bomma = images.im_feeling_lucky(greeting.bomma) self.response.out.write(greeting.bomma) else: self.response.out.write('No image')
def upload(): form = UploadForm() if form.validate_on_submit(): f = form.file.data filename = f.filename mime_type = mimetypes.guess_type( filename)[0] or "application/octet-stream" doc = Document() doc.filename = filename doc.mime_type = mime_type doc.description = form.description.data if mime_type in image_type: f = f.read() doc.file = images.im_feeling_lucky(f) else: doc.file = f.read() try: doc.put() except RequestTooLargeError: return "Error : 413 - RequestTooLargeError", 413 else: return render_template("index.html", form=form, docs=[]) return redirect("/")
def resize_to_max(file, max_w, max_h): """ rezizes an image in order to fit max dimensions keeping proportions NO crop """ width, height = getImageInfo(file) ratio_w = width/max_w ratio_h = height/max_h ratio_new = ratio_w/ratio_h ratio = width/height new_w = int(width) new_h = int(height) #too large if (ratio_new > 1 and width > max_w): new_w = max_w new_h = int(round(max_h / ratio)) #too heigh elif (ratio_new < 1 and height > max_h): new_w = int(round(max_w * ratio)) new_h = max_h elif (ratio_new == 1 and width > max_w): new_w = max_w new_h = max_h file = images.resize(file, new_w, new_h) file = images.im_feeling_lucky(file, images.JPEG) return file
def resize_to(file, w, h): """ rezizes an image to given dimensions cropping it in order to keep proportions """ width, height = getImageInfo(file) #ratio = width/height #ratio_n = w/h #ratio_new = ratio/ratio_n w_new = height * (w/h) h_new = width / (w/h) #cut width if w_new < width: cropoff = (abs(width - w_new)*.5)/width file = images.crop(file,top_y=0.0, bottom_y=1.0,left_x=cropoff,right_x=1.0 - cropoff) file = images.resize(file, height= h) #cut height elif h_new < height: #print h_new cropoff = (abs(height - h_new)*.5)/height file = images.crop(file,top_y=cropoff, bottom_y=1.0 - cropoff,left_x=0.0,right_x=1.0 ) file = images.resize(file, width= w) else: file = images.resize(file, width = w, height= h) file = images.im_feeling_lucky(file, images.JPEG) return file
def post(self): ''' Processes BlogPost edit request. For the most part just repeating what's done in CreateHandler. We're retrieving an existing entity here, but not above. ''' blog_post = db.get(self.request.get('blog_key')) blog_post_title = cgi.escape(self.request.get('title')) blog_post_uri = slugify(blog_post_title) post_content = cgi.escape(self.request.get('content')) blog_post.uri = blog_post_uri blog_post.title = blog_post_title blog_post.content = post_content blog_post_tags = cgi.escape(self.request.get('tags')).split() blog_post.tags = blog_post_tags if self.request.get("pic"): pic = images.resize(self.request.get("pic"), 300) # no equivalent PIL method so this does nothing on dev server; # in prod it "adjusts the contrast and color levels # of an image according to an algorithm for improving photographs." pic = images.im_feeling_lucky(pic) blog_post.pic = db.Blob(pic) blog_post.htmlify() blog_post.put() self.redirect('/admin')
def post(self): #check login if not users.get_current_user(): self.redirect(users.create_login_url('/')) user = users.get_current_user() query = db.GqlQuery("SELECT * FROM Image WHERE user = :1", user) saved_image = query.get() action = self.request.get("action") if saved_image and action: if action == "resize": width = self.request.get("width") height = self.request.get("height") if width and height: img = images.resize(saved_image.data, int(width), int(height), saved_image.output_encoding) elif action == "rotate": degrees = self.request.get("degrees") if degrees: img = images.rotate(saved_image.data, int(degrees), saved_image.output_encoding) elif action == "im_feeling_lucky": img = images.im_feeling_lucky(saved_image.data, saved_image.output_encoding) elif action == "crop": left_x = self.request.get("left_x") top_y = self.request.get("top_y") right_x = self.request.get("right_x") bottom_y = self.request.get("bottom_y") if left_x and top_y and right_x and bottom_y: img = images.crop(saved_image.data, float(left_x), float(top_y), float(right_x), float(bottom_y), saved_image.output_encoding) if img: # save new settings output_encoding = saved_image.output_encoding content_type, width, height = getImageInfo(img) # delete previous entity for image in query: db.delete(image) image = Image() image.user = user image.data = db.Blob(img) image.output_encoding = output_encoding image.content_type = content_type image.width = width image.height = height image.put()
def create(place, data, **kw): "Create and commit the Image and the subsequent data objects" hash = hashlib.sha1(data).hexdigest() full = ImageFull.get_or_insert(hash, data=images.im_feeling_lucky(data, output_encoding=images.JPEG)) full.put() thumb = ImageThumbnail.get_or_insert(hash, data=images.resize(full.data, THUMBNAIL_WIDTH, THUMBNAIL_HEIGHT, output_encoding=images.JPEG)) thumb.put() img = Image(place=place.key(), hash=hash, image_full=full, image_thumbnail=thumb, **kw) img.put() return img
def post(self): photo = self.request.get('img') image_type = self.request.get('image_type') print(image_type) request_width = self.request.get('width') request_hieght = self.request.get('height') encoding_type = images.JPEG if image_type == "PNG": encoding_type = images.PNG print(str(encoding_type)) photo = images.resize(photo,width=int(request_width),height=int(request_hieght),quality=100,output_encoding=encoding_type) if self.request.get('enhance_color') == "true": photo = images.im_feeling_lucky(photo,output_encoding=encoding_type,quality=100) print("Yes enhancing") #photo = images.execute_transforms(photo,output_encoding=images.JPEG,quality=100) self.response.headers['Content-Type'] = 'image/'+str(image_type).lower() self.response.out.write(photo)
def _post_message(self, place_name, message): place = model.Place.get_or_insert(place_name) place.put() attachments = listify(message.attachments) for attachment in attachments: author = message.sender caption = message.subject if hasattr(message, 'subject') else '' filename = attachment[0] attachment_data = attachment[1].payload.decode(attachment[1].encoding) data = images.im_feeling_lucky(attachment_data, output_encoding=images.JPEG) log.debug("Processing attachment: %s (size: %d -> %d)" % (attachment[0], len(attachment_data), len(data))) img = model.Image.create(place=place, data=db.Blob(data), author=author, filename=filename, caption=caption) place.count += 1 place.put()
def flickr_thumb(file,size): """ returns squared cropped thumbnail """ width,height = getImageInfo(file) if width < height: file = images.resize(file,width=size) width,height = getImageInfo(file) cropoff = ((height - size)*.5)/height file = images.crop(file,top_y=cropoff, bottom_y=1.0 - cropoff,left_x=0.0,right_x=1.0) else: file = images.resize(file,height=size) width,height = getImageInfo(file) cropoff = ((width - size)*.5)/width file = images.crop(file,left_x=cropoff, right_x=1.0 - cropoff,top_y=0.0,bottom_y=1.0) file = images.im_feeling_lucky(file, images.JPEG) return file
def execute(self): method = self.request.method user = self.values['user'] self.values['tab'] = '/admin' if user.rol != 'admin': self.forbidden() return if method == 'GET': app = self.get_application() self.values['m'] = self.get_param('m') if not app: app = model.Application() self.values['app'] = app self.values['theme'] = self.not_none(app.theme) self.values['max_results'] = self.not_none(app.max_results) self.values['max_results_sublist'] = self.not_none( app.max_results_sublist) self.render('templates/module/admin/admin-lookandfeel.html') elif self.auth(): app = self.get_application() if not app: app = model.Application() logo = self.request.get("logo") if logo: app.logo = images.im_feeling_lucky(logo, images.JPEG) memcache.delete('/images/application/logo') app.theme = self.get_param("theme") if self.get_param('max_results'): app.max_results = int(self.get_param('max_results')) if self.get_param('max_results_sublist'): app.max_results_sublist = int( self.get_param('max_results_sublist')) app.put() memcache.delete('app') AppProperties().updateJinjaEnv() self.redirect('/module/admin.lookandfeel?m=' + self.getLocale('Updated'))
def post(self): ''' Processes BlogPost creation request. ''' #L = self.request.get('large_text_list').split() #LTL = [db.Text(i) for i in L] #new = models.LargeTextList() #new.large_text_list = LTL #new.put() ''' mylist = self.request.get('post_content').split() mylist = [db.Text(i) for i in mylist] new = models.MyEntity() new.mylist = mylist new.put() ''' blog_post_title = self.request.get('post_title') blog_post_uri = slugify(blog_post_title) post_content = self.request.get('post_content') blog_post = models.BlogPost() blog_post.uri = blog_post_uri blog_post.title = blog_post_title blog_post.content = post_content blog_post_tags = self.request.get('post_tags').split() blog_post.tags = blog_post_tags # can be a space-delimited list if self.request.get("pic"): pic = images.resize(self.request.get("pic"), 300) # no equivalent PIL method so this does nothing on dev server # it does; however, "adjust the contrast and color levels # of an image according to an algorithm for improving photographs." pic = images.im_feeling_lucky(pic) blog_post.pic = db.Blob(pic) blog_post.htmlify() blog_post.put() self.redirect('/admin')
def post(self): photo = self.request.get('img') image_type = self.request.get('image_type') print(image_type) request_left_x = self.request.get('left_x') request_top_y = self.request.get('top_y') request_right_x = self.request.get('right_x') request_bottom_y = self.request.get('bottom_y') encoding_type = images.JPEG if image_type == "PNG": encoding_type = images.PNG print(str(encoding_type)) photo = images.crop(photo,left_x=float(request_left_x),top_y=float(request_top_y),right_x=float(request_right_x),bottom_y=float(request_bottom_y),quality=100,output_encoding=encoding_type) if self.request.get('enhance_color') == "true": photo = images.im_feeling_lucky(photo,output_encoding=encoding_type,quality=100) print("Yes enhancing") #photo = images.execute_transforms(photo,output_encoding=images.JPEG,quality=100) self.response.headers['Content-Type'] = 'image/'+str(image_type).lower() self.response.out.write(photo)
def execute(self): method = self.request.method user = self.values['user'] self.values['tab'] = '/admin' if user.rol != 'admin': self.forbidden() return if method == 'GET': app = self.get_application() self.values['m'] = self.get_param('m') if not app: app = model.Application() self.values['app'] = app self.values['theme'] = self.not_none(app.theme) self.values['max_results'] = self.not_none(app.max_results) self.values['max_results_sublist'] = self.not_none(app.max_results_sublist) self.render('templates/module/admin/admin-lookandfeel.html') elif self.auth(): app = self.get_application() if not app: app = model.Application() logo = self.request.get("logo") if logo: app.logo = images.im_feeling_lucky(logo, images.JPEG) memcache.delete('/images/application/logo') app.theme = self.get_param("theme") if self.get_param('max_results'): app.max_results = int(self.get_param('max_results')) if self.get_param('max_results_sublist'): app.max_results_sublist = int(self.get_param('max_results_sublist')) app.put() memcache.delete('app') AppProperties().updateJinjaEnv() self.redirect('/module/admin.lookandfeel?m='+self.getLocale('Updated'))
def execute(self): self.values['tab'] = '/group.list' method = self.request.method user = self.values['user'] key = self.get_param('key') if method == 'GET': if key: # show edit form group = model.Group.get(key) if user.nickname != group.owner.nickname and user.rol != 'admin': self.forbidden() return self.values['key'] = key self.values['title'] = group.title self.values['description'] = group.description if group.all_users is not None: self.values['all_users'] = group.all_users else: self.values['all_users'] = True if group.category: self.values['category'] = group.category self.add_categories() self.render('templates/group-edit.html') else: # show an empty form self.values['title'] = 'Grupo...' self.values['all_users'] = True self.add_categories() self.render('templates/group-edit.html') elif self.auth(): if key: # update group group = model.Group.get(key) if user.nickname != group.owner.nickname and user.rol != 'admin': self.forbidden() return # group title is not editable since many-to-many relationships are denormalizated # group.title = self.get_param('title') group.description = self.get_param('description') image = self.request.get("img") if image: image = images.im_feeling_lucky(image, images.JPEG) group.avatar = img.resize(image, 128, 128) group.thumbnail = img.resize(image, 48, 48) if not group.image_version: group.image_version = 1 else: memcache.delete( '/images/group/avatar/%s/%d' % (group.key().id(), group.image_version)) memcache.delete( '/images/group/thumbnail/%s/%d' % (group.key().id(), group.image_version)) group.image_version += 1 memcache.delete('/images/group/avatar/%s' % group.key().id()) memcache.delete('/images/group/thumbnail/%s' % group.key().id()) if self.get_param('all_users'): group.all_users = True else: group.all_users = False category = model.Category.get(self.request.get('category')) prev_category = group.category group.category = category group.put() if prev_category: prev_category.groups -= 1 prev_category.put() category.groups += 1 category.put() memcache.delete('index_groups') self.redirect('/group/%s' % (group.url_path, )) else: # new group title = self.get_param('title') url_path = '-' all_users = False if self.get_param('all_users'): all_users = True group = model.Group(owner=user, owner_nickname=user.nickname, title=title, description=self.get_param('description'), url_path=url_path, members=1, all_users=all_users, items=0, threads=0, responses=0, subscribers=[user.email], activity=1) category = model.Category.get(self.request.get('category')) group.category = category image = self.request.get("img") if image: image = images.im_feeling_lucky(image, images.JPEG) group.avatar = img.resize(image, 128, 128) group.thumbnail = img.resize(image, 48, 48) group.image_version = 1 group.put() self.add_user_subscription(user, 'group', group.key().id()) group.url_path = '%d/%s' % (group.key().id(), self.to_url_path(group.title)) group.put() category.groups += 1 category.put() user.groups += 1 user.put() app = model.Application.all().get() if app: app.groups += 1 app.put() memcache.delete('app') group_user = model.GroupUser(user=user, group=group, user_nickname=user.nickname, group_title=group.title, group_url_path=group.url_path) group_user.put() memcache.delete('index_groups') followers = list(self.get_followers(user=user)) followers.append(user.nickname) self.create_event(event_type='group.new', followers=followers, user=user, group=group) self.add_follower(group=group, nickname=user.nickname) # TODO: update a user counter to know how many groups is owner of? self.redirect('/group/%s' % (group.url_path, ))
def execute(self): method = self.request.method user = self.values['user'] self.values['tab'] = '/admin' if user.rol != 'admin': self.forbidden() return if method == 'GET': app = self.get_application() self.values['m'] = self.get_param('m') if not app: app = model.Application() self.values['app'] = app self.values['appName'] = self.not_none(app.name) self.values['appSubject'] = self.not_none(app.subject) self.values['locale'] = self.not_none(app.locale) self.values['theme'] = self.not_none(app.theme) self.values['url'] = self.not_none(app.url) self.values['mail_contact'] = self.not_none(app.mail_contact) self.values['mail_subject_prefix'] = self.not_none( app.mail_subject_prefix) self.values['mail_sender'] = self.not_none(app.mail_sender) self.values['mail_footer'] = self.not_none(app.mail_footer) self.values['recaptcha_public_key'] = self.not_none( app.recaptcha_public_key) self.values['recaptcha_private_key'] = self.not_none( app.recaptcha_private_key) self.values['google_adsense'] = self.not_none(app.google_adsense) self.values['google_adsense_channel'] = self.not_none( app.google_adsense_channel) self.values['google_analytics'] = self.not_none( app.google_analytics) self.values['max_results'] = self.not_none(app.max_results) self.values['max_results_sublist'] = self.not_none( app.max_results_sublist) self.render('templates/module/admin/admin-modules.html') elif self.auth(): app = self.get_application() if not app: app = model.Application() app.users = model.UserData.all().count() app.communities = model.Community.all().count() app.threads = model.Thread.all().filter('parent_thread', None).count() app.articles = model.Article.all().filter( 'draft =', False).filter('deletion_date', None).count() app.name = self.get_param('appName') app.subject = self.get_param("appSubject") app.locale = self.get_param("locale") logo = self.request.get("logo") if logo: app.logo = images.im_feeling_lucky(logo, images.JPEG) memcache.delete('/images/application/logo') app.theme = self.get_param("theme") app.url = self.get_param('url') app.mail_subject_prefix = self.get_param('mail_subject_prefix') app.mail_contact = self.get_param('mail_contact') app.mail_sender = self.get_param('mail_sender') app.mail_footer = self.get_param('mail_footer') app.recaptcha_public_key = self.get_param('recaptcha_public_key') app.recaptcha_private_key = self.get_param('recaptcha_private_key') app.google_adsense = self.get_param('google_adsense') app.google_adsense_channel = self.get_param( 'google_adsense_channel') app.google_analytics = self.get_param('google_analytics') if self.get_param('max_results'): app.max_results = int(self.get_param('max_results')) if self.get_param('max_results_sublist'): app.max_results_sublist = int( self.get_param('max_results_sublist')) app.put() memcache.delete('app') AppProperties().updateJinjaEnv() self.redirect('/module/admin.application?m=' + self.getLocale('Updated'))
def post(self): userac = self.request.get('username') htmlhead=""" <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta name="generator" content="HTML Tidy for Linux (vers 1 September 2005), see www.w3.org" /> <meta content='Personal website of """ + self.request.get('formuserfullname') + """.' name='description'/> <meta content='"""+ self.request.get('formuserfullname') +""","""+ userac +""",iiser, iiserk, iiserkol, iiserkolkata, """+ self.request.get('formusermajor') +"""' name='keywords'/> <title>"""+self.request.get('formuserfullname')+"""</title> <link rel="stylesheet" href='/css/"""+ userac +"""' type="text/css" /> </head>""" htmlbody1=""" <body> <h1>"""+ self.request.get('formuserfullname') +"""</h1> <div id="designation"> <h3>iiser kolkata</h3> <p>student » """+ self.request.get('formusermajor') +""" major, MS """+ self.request.get('formuseryear') +""" Year<br /> batch » """+self.request.get('formuserbatch')+"""<br /></p> </div> <div id="sidephoto"><img src='/img/"""+ userac +"""' alt='"""+ self.request.get('formuserfullname') +"""' width="250" /></div> """ about=""" <div id="about"> <ul><pre>""" + self.request.get('formuserabout') + """</pre></ul> </div> """ contact_top=""" <div id="contact"> <h3>contact</h3> <p> """ contact_lines ="" if (self.request.get('formuseremail')) != "": contact_lines += """email: <a href='mailto:""" +(self.request.get('formuseremail'))+ """'>"""+ (self.request.get('formuseremail')) +"""</a><br />""" if (self.request.get('formuserweb')) != "": contact_lines += """website: <a href='""" +(self.request.get('formuserweb'))+ """'>"""+ (self.request.get('formuserweb')) +"""</a><br />""" if (self.request.get('formuserblog')) != "": contact_lines += """blog: <a href='""" +self.request.get('formuserblog')+ """'>"""+ self.request.get('formuserblog') +"""</a><br />""" if (self.request.get('formuserorkut')) != "": contact_lines += """orkut: <a href='""" +(self.request.get('formuserorkut'))+ """'>Profile</a><br />""" contact_bottom=""" </p> </div> """ contact = contact_top + contact_lines + contact_bottom htmlbody2="""<div id="footer"></div> </body> </html> """ if self.request.get('formuserhtml') != "": htmlcode = self.request.get('formuserhtml') else: htmlcode = htmlhead + htmlbody1 + about + contact + htmlbody2 if self.request.get('formusercss') !="": csscode = self.request.get('formusercss') else: csscode = template.render(css_path, {}) allusers = db.GqlQuery("SELECT * FROM User ORDER BY username") foundflag=0 for user in allusers: if userac == user.username: foundflag=1 oldavatar = user.useravatar user.delete() newuser = User() newuser.username = userac newuser.userhtml = htmlcode newuser.usercss = csscode newuser.userfullname = (self.request.get('formuserfullname')) newuser.usermajor = (self.request.get('formusermajor')) newuser.userbatch = (self.request.get('formuserbatch')) newuser.useryear = (self.request.get('formuseryear')) newuser.userabout = (self.request.get('formuserabout')) if (self.request.get('formuseremail')) != "": newuser.useremail = (self.request.get('formuseremail')) if (self.request.get('formuserblog')) != "": newuser.userblog = (self.request.get('formuserblog')) if (self.request.get('formuserweb')) != "": newuser.userweb = (self.request.get('formuserweb')) if (self.request.get('formuserorkut')) != "": newuser.userorkut = (self.request.get('formuserorkut')) if (self.request.get('formuserphn')) != "": newuser.userphone = self.request.get('formuserphn') if (self.request.get('formuserimg')) != "": avatar = images.im_feeling_lucky(self.request.get("formuserimg")) newuser.useravatar = db.Blob(avatar) else: newuser.useravatar = db.Blob(oldavatar) newuser.put() if foundflag == 0: newuser = User() newuser.username = userac newuser.userhtml = htmlcode newuser.usercss = csscode newuser.userfullname = (self.request.get('formuserfullname')) newuser.usermajor = (self.request.get('formusermajor')) newuser.userbatch = (self.request.get('formuserbatch')) newuser.useryear = (self.request.get('formuseryear')) newuser.userabout = (self.request.get('formuserabout')) if (self.request.get('formuseremail')) != "": newuser.useremail = (self.request.get('formuseremail')) if (self.request.get('formuserblog')) != "": newuser.userblog = (self.request.get('formuserblog')) if (self.request.get('formuserweb')) != "": newuser.userweb = (self.request.get('formuserweb')) if (self.request.get('formuserorkut')) != "": newuser.userorkut = (self.request.get('formuserorkut')) if (self.request.get('formuserphn')) != "": newuser.userphone = self.request.get('formuserphn') if (self.request.get('formuserimg')) != "": avatar = images.im_feeling_lucky(self.request.get("formuserimg")) newuser.useravatar = db.Blob(avatar) newuser.put() self.redirect("""/~""" + userac)
def execute(self): method = self.request.method user = self.values['user'] self.values['tab'] = '/admin' if user.rol != 'admin': self.forbidden() return if method == 'GET': app = self.get_application() self.values['m'] = self.get_param('m') if not app: app = model.Application() self.values['app'] = app self.values['appName'] = self.not_none(app.name) self.values['appSubject'] = self.not_none(app.subject) self.values['locale'] = self.not_none(app.locale) self.values['theme'] = self.not_none(app.theme) self.values['url'] = self.not_none(app.url) self.values['mail_contact'] = self.not_none(app.mail_contact) self.values['mail_subject_prefix'] = self.not_none(app.mail_subject_prefix) self.values['mail_sender'] = self.not_none(app.mail_sender) self.values['mail_footer'] = self.not_none(app.mail_footer) self.values['recaptcha_public_key'] = self.not_none(app.recaptcha_public_key) self.values['recaptcha_private_key']= self.not_none(app.recaptcha_private_key) self.values['google_adsense'] = self.not_none(app.google_adsense) self.values['google_adsense_channel']= self.not_none(app.google_adsense_channel) self.values['google_analytics'] = self.not_none(app.google_analytics) self.values['max_results'] = self.not_none(app.max_results) self.values['max_results_sublist'] = self.not_none(app.max_results_sublist) self.render('templates/module/admin/admin-modules.html') elif self.auth(): app = self.get_application() if not app: app = model.Application() app.users = model.UserData.all().count() app.communities = model.Community.all().count() app.threads = model.Thread.all().filter('parent_thread', None).count() app.articles = model.Article.all().filter('draft =', False).filter('deletion_date', None).count() app.name = self.get_param('appName') app.subject = self.get_param("appSubject") app.locale = self.get_param("locale") logo = self.request.get("logo") if logo: app.logo = images.im_feeling_lucky(logo, images.JPEG) memcache.delete('/images/application/logo') app.theme = self.get_param("theme") app.url = self.get_param('url') app.mail_subject_prefix = self.get_param('mail_subject_prefix') app.mail_contact = self.get_param('mail_contact') app.mail_sender = self.get_param('mail_sender') app.mail_footer = self.get_param('mail_footer') app.recaptcha_public_key = self.get_param('recaptcha_public_key') app.recaptcha_private_key = self.get_param('recaptcha_private_key') app.google_adsense = self.get_param('google_adsense') app.google_adsense_channel = self.get_param('google_adsense_channel') app.google_analytics = self.get_param('google_analytics') if self.get_param('max_results'): app.max_results = int(self.get_param('max_results')) if self.get_param('max_results_sublist'): app.max_results_sublist = int(self.get_param('max_results_sublist')) app.put() memcache.delete('app') AppProperties().updateJinjaEnv() self.redirect('/module/admin.application?m='+self.getLocale('Updated'))
def execute(self): method = self.request.method user = self.values['user'] if method == 'GET': self.values['google_adsense'] = self.not_none(user.google_adsense) self.values['google_adsense_channel'] = self.not_none(user.google_adsense_channel) self.values['real_name'] = self.not_none(user.real_name) self.values['links'] = [(link.split('##', 2)[1], link.split('##', 2)[0]) for link in user.list_urls] self.values['im_addresses'] = [(link.split('##', 2)[1], link.split('##', 2)[0]) for link in user.im_addresses] self.values['country'] = self.not_none(user.country) self.values['city'] = self.not_none(user.city) self.values['about'] = self.not_none(user.about_user) self.values['personal_message'] = self.not_none(user.personal_message); if user.not_full_rss: self.values['not_full_rss'] = user.not_full_rss self.render('templates/module/user/user-edit.html') elif self.auth(): user.google_adsense = self.get_param('google_adsense') user.google_adsense_channel = self.get_param('google_adsense_channel') user.real_name = self.get_param('real_name') user.personal_message = self.get_param('personal_message') user.country = self.get_param('country') if self.get_param('not_full_rss'): user.not_full_rss = True else: user.not_full_rss = False image = self.request.get("img") if image: image = images.im_feeling_lucky(image, images.JPEG) user.avatar = img.resize(image, 128, 128) user.thumbnail = img.resize(image, 48, 48) if not user.image_version: user.image_version = 1 else: memcache.delete('/images/user/avatar/%s/%d' % (user.nickname, user.image_version)) memcache.delete('/images/user/thumbnail/%s/%d' % (user.nickname, user.image_version)) user.image_version += 1 memcache.delete('/images/user/avatar/%s' % (user.nickname)) memcache.delete('/images/user/thumbnail/%s' % (user.nickname)) user.city = self.get_param('city') user.list_urls = [] blog = self.get_param('blog') if blog: if not blog.startswith('http'): linkedin = 'http://' + blog user.list_urls.append(blog + '##blog') linkedin = self.get_param('linkedin') if linkedin: if not linkedin.startswith('http'): linkedin = 'http://' + linkedin user.list_urls.append(linkedin + '##linkedin') ohloh = self.get_param('ohloh') if ohloh: if not ohloh.startswith('http'): linkedin = 'http://' + ohloh user.list_urls.append(ohloh + '##ohloh') user.im_addresses = [] msn = self.get_param('msn') if msn: user.im_addresses.append(msn + '##msn') jabber = self.get_param('jabber') if jabber: user.im_addresses.append(jabber + '##jabber') gtalk = self.get_param('gtalk') if gtalk: user.im_addresses.append(gtalk + '##gtalk') user.about_user = self.get_param('about_user') user.put() followers = list(self.get_followers(user=user)) followers.append(user.nickname) self.create_event(event_type='user.edit', followers=followers, user=user) self.redirect('/module/user/%s' % user.nickname)
def execute(self): method = self.request.method user = self.values['user'] if method == 'GET': self.values['google_adsense'] = self.not_none(user.google_adsense) self.values['google_adsense_channel'] = self.not_none( user.google_adsense_channel) self.values['real_name'] = self.not_none(user.real_name) self.values['links'] = [(link.split('##', 2)[1], link.split('##', 2)[0]) for link in user.list_urls] self.values['im_addresses'] = [(link.split('##', 2)[1], link.split('##', 2)[0]) for link in user.im_addresses] self.values['country'] = self.not_none(user.country) self.values['city'] = self.not_none(user.city) self.values['about'] = self.not_none(user.about_user) self.values['personal_message'] = self.not_none( user.personal_message) if user.not_full_rss: self.values['not_full_rss'] = user.not_full_rss self.render('templates/module/user/user-edit.html') elif self.auth(): user.google_adsense = self.get_param('google_adsense') user.google_adsense_channel = self.get_param( 'google_adsense_channel') user.real_name = self.get_param('real_name') user.personal_message = self.get_param('personal_message') user.country = self.get_param('country') if self.get_param('not_full_rss'): user.not_full_rss = True else: user.not_full_rss = False image = self.request.get("img") if image: image = images.im_feeling_lucky(image, images.JPEG) user.avatar = img.resize(image, 128, 128) user.thumbnail = img.resize(image, 48, 48) if not user.image_version: user.image_version = 1 else: memcache.delete('/images/user/avatar/%s/%d' % (user.nickname, user.image_version)) memcache.delete('/images/user/thumbnail/%s/%d' % (user.nickname, user.image_version)) user.image_version += 1 memcache.delete('/images/user/avatar/%s' % (user.nickname)) memcache.delete('/images/user/thumbnail/%s' % (user.nickname)) user.city = self.get_param('city') user.list_urls = [] blog = self.get_param('blog') if blog: if not blog.startswith('http'): linkedin = 'http://' + blog user.list_urls.append(blog + '##blog') linkedin = self.get_param('linkedin') if linkedin: if not linkedin.startswith('http'): linkedin = 'http://' + linkedin user.list_urls.append(linkedin + '##linkedin') ohloh = self.get_param('ohloh') if ohloh: if not ohloh.startswith('http'): linkedin = 'http://' + ohloh user.list_urls.append(ohloh + '##ohloh') user.im_addresses = [] msn = self.get_param('msn') if msn: user.im_addresses.append(msn + '##msn') jabber = self.get_param('jabber') if jabber: user.im_addresses.append(jabber + '##jabber') gtalk = self.get_param('gtalk') if gtalk: user.im_addresses.append(gtalk + '##gtalk') user.about_user = self.get_param('about_user') user.put() followers = list(self.get_followers(user=user)) followers.append(user.nickname) self.create_event(event_type='user.edit', followers=followers, user=user) self.redirect('/module/user/%s' % user.nickname)
def execute(self): self.values['tab'] = '/group.list' method = self.request.method user = self.values['user'] key = self.get_param('key') if method == 'GET': if key: # show edit form group = model.Group.get(key) if user.nickname != group.owner.nickname and user.rol != 'admin': self.forbidden() return self.values['key'] = key self.values['title'] = group.title self.values['description'] = group.description if group.all_users is not None: self.values['all_users'] = group.all_users else: self.values['all_users'] = True if group.category: self.values['category'] = group.category self.add_categories() self.render('templates/group-edit.html') else: # show an empty form self.values['title'] = 'Grupo...' self.values['all_users'] = True self.add_categories() self.render('templates/group-edit.html') elif self.auth(): if key: # update group group = model.Group.get(key) if user.nickname != group.owner.nickname and user.rol != 'admin': self.forbidden() return # group title is not editable since many-to-many relationships are denormalizated # group.title = self.get_param('title') group.description = self.get_param('description') image = self.request.get("img") if image: image = images.im_feeling_lucky(image, images.JPEG) group.avatar = img.resize(image, 128, 128) group.thumbnail = img.resize(image, 48, 48) if not group.image_version: group.image_version = 1 else: memcache.delete('/images/group/avatar/%s/%d' % (group.key().id(), group.image_version)) memcache.delete('/images/group/thumbnail/%s/%d' % (group.key().id(), group.image_version)) group.image_version += 1 memcache.delete('/images/group/avatar/%s' % group.key().id()) memcache.delete('/images/group/thumbnail/%s' % group.key().id()) if self.get_param('all_users'): group.all_users = True else: group.all_users = False category = model.Category.get(self.request.get('category')) prev_category = group.category group.category = category group.put() if prev_category: prev_category.groups -= 1 prev_category.put() category.groups += 1 category.put() memcache.delete('index_groups') self.redirect('/group/%s' % (group.url_path, )) else: # new group title = self.get_param('title') url_path = '-' all_users = False if self.get_param('all_users'): all_users = True group = model.Group(owner=user, owner_nickname=user.nickname, title=title, description=self.get_param('description'), url_path=url_path, members=1, all_users = all_users, items=0, threads=0, responses=0, subscribers=[user.email], activity=1) category = model.Category.get(self.request.get('category')) group.category = category image = self.request.get("img") if image: image = images.im_feeling_lucky(image, images.JPEG) group.avatar = img.resize(image, 128, 128) group.thumbnail = img.resize(image, 48, 48) group.image_version = 1 group.put() self.add_user_subscription(user, 'group', group.key().id()) group.url_path = '%d/%s' % (group.key().id(), self.to_url_path(group.title)) group.put() category.groups += 1 category.put() user.groups += 1 user.put() app = model.Application.all().get() if app: app.groups += 1 app.put() memcache.delete('app') group_user = model.GroupUser(user=user, group=group, user_nickname=user.nickname, group_title=group.title, group_url_path=group.url_path) group_user.put() memcache.delete('index_groups') followers = list(self.get_followers(user=user)) followers.append(user.nickname) self.create_event(event_type='group.new', followers=followers, user=user, group=group) self.add_follower(group=group, nickname=user.nickname) # TODO: update a user counter to know how many groups is owner of? self.redirect('/group/%s' % (group.url_path, ))
def execute(self): self.values['tab'] = '/module/community.list' method = self.request.method user = self.values['user'] key = self.get_param('key') if method == 'GET': if key: # show edit form community = model.Community.get(key) if user.nickname != community.owner.nickname and user.rol != 'admin': self.forbidden() return self.values['key'] = key self.values['title'] = community.title self.values['description'] = community.description if community.all_users is not None: self.values['all_users'] = community.all_users else: self.values['all_users'] = True if community.category: self.values['category'] = community.category self.add_categories() self.render('templates/module/community/community-edit.html') else: # show an empty form self.values['title'] = "New community..." self.values['all_users'] = True self.add_categories() self.render('templates/module/community/community-edit.html') elif self.auth(): if key: # update community community = model.Community.get(key) if user.nickname != community.owner.nickname and user.rol != 'admin': self.forbidden() return # community title is not editable since many-to-many relationships are denormalizated # community.title = self.get_param('title') community.description = self.get_param('description') image = self.request.get("img") if image: image = images.im_feeling_lucky(image, images.JPEG) community.avatar = img.resize(image, 128, 128) community.thumbnail = img.resize(image, 48, 48) if not community.image_version: community.image_version = 1 else: memcache.delete( '/images/community/avatar/%s/%d' % (community.key().id(), community.image_version)) memcache.delete( '/images/community/thumbnail/%s/%d' % (community.key().id(), community.image_version)) community.image_version += 1 memcache.delete('/images/community/avatar/%s' % community.key().id()) memcache.delete('/images/community/thumbnail/%s' % community.key().id()) if self.get_param('all_users'): community.all_users = True else: community.all_users = False category = model.Category.get(self.request.get('category')) prev_category = community.category community.category = category community.put() if prev_category: prev_category.communities -= 1 prev_category.put() category.communities += 1 category.put() memcache.delete('index_communities') self.redirect('/module/community/%s' % (community.url_path, )) else: # new community title = self.get_param('title') url_path = '-' all_users = False if self.get_param('all_users'): all_users = True community = model.Community( owner=user, owner_nickname=user.nickname, title=title, description=self.get_param('description'), url_path=url_path, members=1, all_users=all_users, articles=0, threads=0, responses=0, subscribers=[user.email], activity=1) category = model.Category.get(self.request.get('category')) community.category = category image = self.request.get("img") if image: image = images.im_feeling_lucky(image, images.JPEG) community.avatar = img.resize(image, 128, 128) community.thumbnail = img.resize(image, 48, 48) community.image_version = 1 community.put() self.add_user_subscription(user, 'community', community.key().id()) community.url_path = '%d/%s' % ( community.key().id(), self.to_url_path(community.title)) community.put() category.communities += 1 category.put() user.communities += 1 user.put() app = model.Application.all().get() if app: if app.communities: app.communities += 1 else: app.communities = 1 app.put() memcache.delete('app') community_user = model.CommunityUser( user=user, community=community, user_nickname=user.nickname, community_title=community.title, community_url_path=community.url_path) community_user.put() memcache.delete('index_communities') followers = list(self.get_followers(user=user)) followers.append(user.nickname) self.create_event(event_type='community.new', followers=followers, user=user, community=community) self.add_follower(community=community, nickname=user.nickname) # TODO: update a user counter to know how many communities is owner of? self.redirect('/module/community/%s' % (community.url_path, ))
def execute(self): method = self.request.method user = self.values["user"] if method == "GET": self.values["google_adsense"] = self.not_none(user.google_adsense) self.values["google_adsense_channel"] = self.not_none(user.google_adsense_channel) self.values["real_name"] = self.not_none(user.real_name) self.values["links"] = [(link.split("##", 2)[1], link.split("##", 2)[0]) for link in user.list_urls] self.values["im_addresses"] = [ (link.split("##", 2)[1], link.split("##", 2)[0]) for link in user.im_addresses ] self.values["country"] = self.not_none(user.country) self.values["city"] = self.not_none(user.city) self.values["about"] = self.not_none(user.about_user) self.values["personal_message"] = self.not_none(user.personal_message) if user.not_full_rss: self.values["not_full_rss"] = user.not_full_rss self.render("templates/user-edit.html") elif self.auth(): user.google_adsense = self.get_param("google_adsense") user.google_adsense_channel = self.get_param("google_adsense_channel") user.real_name = self.get_param("real_name") user.personal_message = self.get_param("personal_message") user.country = self.get_param("country") if self.get_param("not_full_rss"): user.not_full_rss = True else: user.not_full_rss = False image = self.request.get("img") if image: image = images.im_feeling_lucky(image, images.JPEG) user.avatar = img.resize(image, 128, 128) user.thumbnail = img.resize(image, 48, 48) if not user.image_version: user.image_version = 1 else: memcache.delete("/images/user/avatar/%s/%d" % (user.nickname, user.image_version)) memcache.delete("/images/user/thumbnail/%s/%d" % (user.nickname, user.image_version)) user.image_version += 1 memcache.delete("/images/user/avatar/%s" % (user.nickname)) memcache.delete("/images/user/thumbnail/%s" % (user.nickname)) user.city = self.get_param("city") user.list_urls = [] blog = self.get_param("blog") if blog: if not blog.startswith("http"): linkedin = "http://" + blog user.list_urls.append(blog + "##blog") linkedin = self.get_param("linkedin") if linkedin: if not linkedin.startswith("http"): linkedin = "http://" + linkedin user.list_urls.append(linkedin + "##linkedin") ohloh = self.get_param("ohloh") if ohloh: if not ohloh.startswith("http"): linkedin = "http://" + ohloh user.list_urls.append(ohloh + "##ohloh") user.im_addresses = [] msn = self.get_param("msn") if msn: user.im_addresses.append(msn + "##msn") jabber = self.get_param("jabber") if jabber: user.im_addresses.append(jabber + "##jabber") gtalk = self.get_param("gtalk") if gtalk: user.im_addresses.append(gtalk + "##gtalk") user.about_user = self.get_param("about_user") user.put() followers = list(self.get_followers(user=user)) followers.append(user.nickname) self.create_event(event_type="user.edit", followers=followers, user=user) self.redirect("/user/%s" % user.nickname)
def execute(self): self.values['tab'] = '/module/community.list' method = self.request.method user = self.values['user'] key = self.get_param('key') if method == 'GET': if key: # show edit form community = model.Community.get(key) if user.nickname != community.owner.nickname and user.rol != 'admin': self.forbidden() return self.values['key'] = key self.values['title'] = community.title self.values['description'] = community.description if community.all_users is not None: self.values['all_users'] = community.all_users else: self.values['all_users'] = True if community.category: self.values['category'] = community.category self.add_categories() self.render('templates/module/community/community-edit.html') else: # show an empty form self.values['title'] = "New community..." self.values['all_users'] = True self.add_categories() self.render('templates/module/community/community-edit.html') elif self.auth(): if key: # update community community = model.Community.get(key) if user.nickname != community.owner.nickname and user.rol != 'admin': self.forbidden() return # community title is not editable since many-to-many relationships are denormalizated # community.title = self.get_param('title') community.description = self.get_param('description') image = self.request.get("img") if image: image = images.im_feeling_lucky(image, images.JPEG) community.avatar = img.resize(image, 128, 128) community.thumbnail = img.resize(image, 48, 48) if not community.image_version: community.image_version = 1 else: memcache.delete('/images/community/avatar/%s/%d' % (community.key().id(), community.image_version)) memcache.delete('/images/community/thumbnail/%s/%d' % (community.key().id(), community.image_version)) community.image_version += 1 memcache.delete('/images/community/avatar/%s' % community.key().id()) memcache.delete('/images/community/thumbnail/%s' % community.key().id()) if self.get_param('all_users'): community.all_users = True else: community.all_users = False category = model.Category.get(self.request.get('category')) prev_category = community.category community.category = category community.put() if prev_category: prev_category.communities -= 1 prev_category.put() category.communities += 1 category.put() memcache.delete('index_communities') self.redirect('/module/community/%s' % (community.url_path, )) else: # new community title = self.get_param('title') url_path = '-' all_users = False if self.get_param('all_users'): all_users = True community = model.Community(owner=user, owner_nickname=user.nickname, title=title, description=self.get_param('description'), url_path=url_path, members=1, all_users = all_users, articles=0, threads=0, responses=0, subscribers=[user.email], activity=1) category = model.Category.get(self.request.get('category')) community.category = category image = self.request.get("img") if image: image = images.im_feeling_lucky(image, images.JPEG) community.avatar = img.resize(image, 128, 128) community.thumbnail = img.resize(image, 48, 48) community.image_version = 1 community.put() self.add_user_subscription(user, 'community', community.key().id()) community.url_path = '%d/%s' % (community.key().id(), self.to_url_path(community.title)) community.put() category.communities += 1 category.put() user.communities += 1 user.put() app = model.Application.all().get() if app: if app.communities: app.communities += 1 else: app.communities =1 app.put() memcache.delete('app') community_user = model.CommunityUser(user=user, community=community, user_nickname=user.nickname, community_title=community.title, community_url_path=community.url_path) community_user.put() memcache.delete('index_communities') followers = list(self.get_followers(user=user)) followers.append(user.nickname) self.create_event(event_type='community.new', followers=followers, user=user, community=community) self.add_follower(community=community, nickname=user.nickname) # TODO: update a user counter to know how many communities is owner of? self.redirect('/module/community/%s' % (community.url_path, ))