def get_pass(self): pass_template = PassTemplate.all().filter('short_code',self.pass_code).get() if not pass_template: # return 404 raise ValueError('pass_template') self.context['linked_pass_template'] = pass_template.short_code self.context['linked_pass_entity'] = pass_template
def get_pass(self): pass_template = PassTemplate.all().filter('short_code', self.pass_code).get() if not pass_template: # return 404 raise ValueError('pass_template') self.context['linked_pass_template'] = pass_template.short_code self.context['linked_pass_entity'] = pass_template
def get(self, pass_code): from model.passes import PassTemplate, UserPass pass_template = PassTemplate.all().filter('short_code',pass_code).get() # if this is an external pass, redirect to it if pass_template.url and 'pkpass' in pass_template.url: return self.redirect(pass_template.url) from backend.passes import passfile # TODO: in the future this should be cached in advance if possible pass_creator = passfile.PassFile(pass_template=pass_template) pass_creator.create() pass_creator.send_info() return pass_creator.write(self)
def get(self, pass_code): from model.passes import PassTemplate, UserPass pass_template = PassTemplate.all().filter('short_code', pass_code).get() # if this is an external pass, redirect to it if pass_template.url and 'pkpass' in pass_template.url: return self.redirect(pass_template.url) from backend.passes import passfile # TODO: in the future this should be cached in advance if possible pass_creator = passfile.PassFile(pass_template=pass_template) pass_creator.create() pass_creator.send_info() return pass_creator.write(self)
def create(self): from model.passes import UserPass, PassTemplate self.pass_code = self.get_argument('pass_template') pass_template = PassTemplate.all().filter('short_code',self.pass_code).get() if not pass_template: raise ValueError('pass_template') self.pass_template = pass_template code = str_utils.genkey(length=5) self.user_pass = UserPass(key_name=code, code=code,owner=self.user, template=self.pass_template, pass_name=self.pass_template.name, pass_code=self.pass_template.short_code, action=self.action.lower()) if self.get_argument('owner_name',''): self.user_pass.owner_name = self.get_argument('owner_name') if self.get_argument('theme',''): self.user_pass.theme = self.get_argument('theme')
def find(self, query=None, order='-modified', create='true', fetch=1000, passes=None, account=None, **kwargs): logging.info('finding passes') self.user = kwargs.get('user') self.query, self.order, self.create, self.fetch, self.passes, self.account = query, order, create, fetch, passes, account if self.create == 'true': self.create = True else: # you must manually set create to something besides true self.create = False if self.passes: return self.find_for_list() if query: logging.info('finding pass for query %s' % query) return self.find_pass({'name': query}) qry = PassTemplate.all() if account: # account should be key name from model.user import User self.user = User.get_by_key_name(account) if self.user and not self.user.is_admin(): logging.info('filtering for ownership by %s' % self.user.key().name()) qry = qry.filter('owner', self.user) if order: qry = qry.order(order) pass_templates = qry.fetch(fetch) logging.info('found pass templates: %s' % [pt.key().name() for pt in pass_templates]) return pass_templates
def download(self): # TODO: create new UserPass to record that this user has this pass? to_email = self.get_argument('to_email','') to_phone = self.get_argument('to_phone','') theme = self.get_argument('theme','') current_user = self.get_current_user() # TODO: refactor this to backend API from model.passes import UserPass, PassTemplate self.pass_template = PassTemplate.all().filter('short_code',self.get_argument('pass_template')).get() self.context['pass_template'] = self.pass_template """ # Deprecated for now code = str_utils.genkey(length=5) self.user_pass = UserPass(key_name=code, code=code,owner=current_user, template=self.pass_template, pass_name=self.pass_template.name, pass_code=self.pass_template.short_code, action='download') if to_email: self.user_pass.to_email = to_email if to_phone: self.user_pass.to_phone = self.sanitize_phone(to_phone) """ from google.appengine.ext.deferred import deferred from model.passes import increment deferred.defer(increment, 'sends', self.pass_template.short_code) #db.put([self.user_pass, self.pass_template]) if to_email: self.download_email(to_email) if to_phone: self.download_phone()
def create(self): from model.passes import UserPass, PassTemplate self.pass_code = self.get_argument('pass_template') pass_template = PassTemplate.all().filter('short_code', self.pass_code).get() if not pass_template: raise ValueError('pass_template') self.pass_template = pass_template code = str_utils.genkey(length=5) self.user_pass = UserPass(key_name=code, code=code, owner=self.user, template=self.pass_template, pass_name=self.pass_template.name, pass_code=self.pass_template.short_code, action=self.action.lower()) if self.get_argument('owner_name', ''): self.user_pass.owner_name = self.get_argument('owner_name') if self.get_argument('theme', ''): self.user_pass.theme = self.get_argument('theme')
def download(self): # TODO: create new UserPass to record that this user has this pass? to_email = self.get_argument('to_email', '') to_phone = self.get_argument('to_phone', '') theme = self.get_argument('theme', '') current_user = self.get_current_user() # TODO: refactor this to backend API from model.passes import UserPass, PassTemplate self.pass_template = PassTemplate.all().filter( 'short_code', self.get_argument('pass_template')).get() self.context['pass_template'] = self.pass_template """ # Deprecated for now code = str_utils.genkey(length=5) self.user_pass = UserPass(key_name=code, code=code,owner=current_user, template=self.pass_template, pass_name=self.pass_template.name, pass_code=self.pass_template.short_code, action='download') if to_email: self.user_pass.to_email = to_email if to_phone: self.user_pass.to_phone = self.sanitize_phone(to_phone) """ from google.appengine.ext.deferred import deferred from model.passes import increment deferred.defer(increment, 'sends', self.pass_template.short_code) #db.put([self.user_pass, self.pass_template]) if to_email: self.download_email(to_email) if to_phone: self.download_phone()
def find_pass(self, p, save=True): self.save = save from backend.location import find as loc_find logging.info('getting pass: %s' % p) if p.get('id'): logging.info('getting pass with ID %s' % p['id']) pass_template = PassTemplate.all().filter('short_code', p['id']).get() if pass_template: logging.info('found pass template') return pass_template else: raise ValueError(p['id']) if 'url' in p: # will search in update class return self.create_or_update(p) if 'loc' not in p: raise ValueError('loc') # first do search for pass name and location. # If no result, get location and create new pass pass_template = None pass_results = self.search(p) if pass_results: pass_template_doc = pass_results[0] logging.info(pass_template_doc) for f in pass_template_doc.fields: logging.info(f.name) logging.info(f.value) pass_template = PassTemplate.get_by_key_name( pass_template_doc.fields[2].value) if not pass_template: logging.error( 'DID NOT GET PASS TEMPLATE FROM SEARCH RESULTS KEYNAME') if pass_template: logging.info( 'Found existing template for name %s and location %s' % (p.get('name'), p.get('location_code'))) return pass_template # if description is included, should it update existing template? else: logging.info('no pass template. getting location') # first get location, then create new pass location_finder = loc_find.FindLocation() pass_loc = location_finder.find(query=p.get('loc'), create='true') pass_loc.put() # TODO: optimize saves logging.info('got loc %s for pass %s' % (pass_loc.code, p)) p['location_code'] = pass_loc.code p['location'] = pass_loc logging.info( 'Creating New Template. No template found for name %s and location %s' % (p.get('name'), p.get('location_code'))) return self.create_or_update(p)