Example #1
0
    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
Example #2
0
    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
Example #3
0
    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)    
Example #4
0
    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)
Example #5
0
    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')
Example #6
0
    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
Example #7
0
    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()
Example #8
0
    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')
Example #9
0
    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()
Example #10
0
    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)