Best Python code snippet using robotframework-appiumlibrary_python
request.py
Source: request.py
...20 """ This will update the data in case it has been changed in the API """21 photobooth = Photobooth.get()22 updated = figure.Photobooth.get(settings.RESIN_UUID)23 return photobooth.update_from_api_data(updated)24def upload_portrait(portrait):25 """ Upload a portrait to Figure API or save it to local file system if an error occurs"""26 files = {27 'picture_color': (portrait['filename'], portrait['picture']),28 'ticket': (portrait['filename'], portrait['ticket'])29 }30 data = {key: portrait[key] for key in ['code', 'taken', 'place', 'event', 'photobooth']}31 try:32 logger.info('Uploading portrait %s' % portrait['code'])33 figure.Portrait.create(data=data, files=files)34 logger.info('Portrait %s uploaded !' % portrait['code'])35 except Exception as e:36 logger.error(e)37 # Couldn't upload the portrait, save picture and ticket38 # to filesystem and add the portrait to local db for scheduled upload...
portrait.py
Source: portrait.py
1from cone.app.browser.utils import make_url2from cone.ugm.model.user import User3from cone.ugm.utils import general_settings4from io import BytesIO5from plumber import Behavior6from plumber import default7from plumber import plumb8from pyramid.i18n import TranslationStringFactory9from pyramid.response import Response10from pyramid.view import view_config11from yafowil.base import factory12from yafowil.base import UNSET13_ = TranslationStringFactory('cone.ugm')14@view_config(15 name='portrait_image',16 context=User,17 permission='view_portrait')18def portrait_image(model, request):19 """XXX: needs polishing. Return configured default portrait if not set20 on user.21 """22 response = Response()23 settings = general_settings(model)24 response.body = model.attrs[settings.attrs.users_portrait_attr]25 response.headers['Content-Type'] = 'image/jpeg'26 response.headers['Cache-Control'] = 'max-age=0'27 return response28class PortraitForm(Behavior):29 """Plumbing behavior for setting user portrait image.30 """31 @default32 @property33 def portrait_support(self):34 settings = general_settings(self.model)35 return settings.attrs.users_portrait == 'True'36 @plumb37 def prepare(_next, self):38 """Hook after prepare and set 'portrait' as image widget to39 ``self.form``.40 """41 _next(self)42 if not self.portrait_support:43 return44 model = self.model45 request = self.request46 if request.has_permission('edit_user', model.parent):47 mode = 'edit'48 else:49 mode = 'display'50 settings = general_settings(model)51 image_attr = settings.attrs.users_portrait_attr52 image_accept = settings.attrs.users_portrait_accept53 image_width = int(settings.attrs.users_portrait_width)54 image_height = int(settings.attrs.users_portrait_height)55 image_data = model.attrs.get(image_attr)56 if image_data:57 image_value = {58 'file': BytesIO(image_data),59 'mimetype': 'image/jpeg',60 }61 image_url = make_url(request, node=model,62 resource='portrait_image')63 else:64 image_value = UNSET65 resource = 'cone.ugm.static/images/default_portrait.jpg'66 image_url = make_url(request, node=model.root, resource=resource)67 portrait_widget = factory(68 'field:label:error:image',69 name='portrait',70 value=image_value,71 props={72 'label': _('portrait', default='Portrait'),73 'src': image_url,74 'alt': _('portrait', default='Portrait'),75 'accept': image_accept,76 'minsize': (image_width, image_height),77 'crop': {78 'size': (image_width, image_height),79 'fitting': True,80 }81 },82 mode=mode)83 save_widget = self.form['save']84 self.form.insertbefore(portrait_widget, save_widget)85 @plumb86 def save(_next, self, widget, data):87 if not self.portrait_support or \88 not self.request.has_permission('edit_user', self.model.parent):89 _next(self, widget, data)90 return91 settings = general_settings(self.model)92 image_attr = settings.attrs.users_portrait_attr93 portrait = data.fetch('userform.portrait').extracted94 if portrait:95 if portrait['action'] in ['new', 'replace']:96 cropped = portrait['cropped']97 image_data = BytesIO()98 cropped.save(image_data, 'jpeg', quality=100)99 image_data.seek(0)100 self.model.attrs[image_attr] = image_data.read()101 if portrait['action'] == 'delete':102 del self.model.attrs[image_attr]...
test_browser_portrait.py
Source: test_browser_portrait.py
...41 },42 roles={43 'manager': ['manager']44 })45 def test_portrait(self):46 root = get_root()47 users = root['users']48 user = users['user_1']49 # Portrait related config properties50 settings = general_settings(users)51 self.assertEqual(settings.attrs.users_portrait, 'True')52 self.assertEqual(settings.attrs.users_portrait_attr, 'portrait')53 self.assertEqual(settings.attrs.users_portrait_accept, 'image/jpeg')54 self.assertEqual(settings.attrs.users_portrait_width, '50')55 self.assertEqual(settings.attrs.users_portrait_height, '50')56 # Portrait enabled, widget is rendered57 request = self.layer.new_request()58 with self.layer.authenticated('manager'):59 res = render_tile(user, request, 'editform')...
Check out the latest blogs from LambdaTest on this topic:
I think that probably most development teams describe themselves as being “agile” and probably most development teams have standups, and meetings called retrospectives.There is also a lot of discussion about “agile”, much written about “agile”, and there are many presentations about “agile”. A question that is often asked is what comes after “agile”? Many testers work in “agile” teams so this question matters to us.
Joseph, who has been working as a Quality Engineer, was assigned to perform web automation for the company’s website.
If you pay close attention, you’ll notice that toggle switches are all around us because lots of things have two simple states: either ON or OFF (in binary 1 or 0).
Unit and functional testing are the prime ways of verifying the JavaScript code quality. However, a host of tools are available that can also check code before or during its execution in order to test its quality and adherence to coding standards. With each tool having its unique features and advantages contributing to its testing capabilities, you can use the tool that best suits your need for performing JavaScript testing.
The QA testing career includes following an often long, winding road filled with fun, chaos, challenges, and complexity. Financially, the spectrum is broad and influenced by location, company type, company size, and the QA tester’s experience level. QA testing is a profitable, enjoyable, and thriving career choice.
Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!