Ejemplo n.º 1
0
 def get_model_class(self):
     model = self.Meta.model if self.Meta.model else self.current.input[
         'model']
     if isinstance(model, Model):
         return model
     else:
         return model_registry.get_model(model)
Ejemplo n.º 2
0
    def _add_crud(self, model_data, object_type, results):
        """
        Creates a menu entry for given model data.
        Updates results in place.

        Args:
            model_data: Model data.
            object_type: Relation name.
            results: Results dict.
        """
        model = model_registry.get_model(model_data['name'])
        field_name = model_data.get('field')
        verbose_name = model_data.get('verbose_name',
                                      model.Meta.verbose_name_plural)
        category = model_data.get('category',
                                  settings.DEFAULT_OBJECT_CATEGORY_NAME)
        wf_dict = {
            "text": verbose_name,
            "wf": model_data.get('wf', "crud"),
            "model": model_data['name'],
            "kategori": category
        }
        if field_name:
            wf_dict['param'] = field_name
        results[object_type].append(wf_dict)
        self._add_to_quick_menu(wf_dict['model'], wf_dict)
Ejemplo n.º 3
0
 def get_pool_context(self):
     # TODO: Add in-process caching
     context = {self.current.lane_name: self.current.user, 'self': self.current.user}
     if self.current.lane_owners:
         model_name = self.current.lane_owners.split('.')[0]
         context[model_name] = model_registry.get_model(model_name).objects
     for lane_name, role_id in self.current.pool.items():
         if role_id:
             context[lane_name] = lazy_object_proxy.Proxy(
                 lambda: self.role_model(super_context).objects.get(role_id))
     return context
Ejemplo n.º 4
0
 def add_crud(self, model_data, user_type, results):
     model = model_registry.get_model(model_data['name'])
     field_name = model_data.get('field')
     verbose_name = model_data.get('verbose_name', model.Meta.verbose_name_plural)
     category = model_data.get('category', settings.DEFAULT_OBJECT_CATEGORY_NAME)
     wf_dict = {"text": verbose_name,
                "wf": model_data.get('wf', "crud"),
                "model": model_data['name'],
                "kategori": category}
     if field_name:
         wf_dict['param'] = field_name
     results[user_type].append(wf_dict)
     self.add_to_quick_menu(wf_dict['model'], wf_dict)
Ejemplo n.º 5
0
 def get_pool_context(self):
     # TODO: Add in-process caching
     context = {
         self.current.lane_name: self.current.user,
         'self': self.current.user
     }
     if self.current.lane_owners:
         model_name = self.current.lane_owners.split('.')[0]
         context[model_name] = model_registry.get_model(model_name).objects
     for lane_name, role_id in self.current.pool.items():
         if role_id:
             context[lane_name] = lazy_object_proxy.Proxy(
                 lambda: self.role_model(super_context).objects.get(role_id
                                                                    ))
     return context
Ejemplo n.º 6
0
 def add_crud(self, model_data, user_type, results):
     model = model_registry.get_model(model_data['name'])
     field_name = model_data.get('field')
     verbose_name = model_data.get('verbose_name',
                                   model.Meta.verbose_name_plural)
     category = model_data.get('category',
                               settings.DEFAULT_OBJECT_CATEGORY_NAME)
     wf_dict = {
         "text": verbose_name,
         "wf": model_data.get('wf', "crud"),
         "model": model_data['name'],
         "kategori": category
     }
     if field_name:
         wf_dict['param'] = field_name
     results[user_type].append(wf_dict)
     self.add_to_quick_menu(wf_dict['model'], wf_dict)
Ejemplo n.º 7
0
 def get_crud_menus(self):
     results = defaultdict(list)
     for user_type in settings.CRUD_MENUS:
         for model_data in settings.CRUD_MENUS[user_type]:
             if self.current.has_permission(model_data['name']):
                 model = model_registry.get_model(model_data['name'])
                 field_name = model_data.get('field', user_type + '_id')
                 verbose_name = (model_data['verbose_name'] if 'verbose_name' in model_data
                                 else model.Meta.verbose_name_plural)
                 crud_path = 'crud/%s' % model_data['name']
                 category = model_data.get('category', DEFAULT_CATEGORY)
                 results[user_type].append({"text": verbose_name,
                                            "url": crud_path,
                                            "wf": "crud",
                                            "model": model_data['name'],
                                            "kategori": category,
                                            "param": field_name})
             # else:
             #     print("NONONONON PERM FOR CRUD PERM %s" % model_data['name'])
             #     print(self.current.get_permissions())
     return results
Ejemplo n.º 8
0
    def get_model_class(self):
        """
        Looks for the default model of this view from
        :py:attr:`Meta.model`. If it's not set, tries to get
        model name from ``current.input['model']``.

        Can be overridden to implement different model
        selection mechanism.

        Returns:
            :py:attr:`~pyoko.models.Model` class.
        """
        try:
            model = self.Meta.model if self.Meta.model else self.current.input[
                'model']
            if isinstance(model, Model):
                return model
            else:
                return model_registry.get_model(model)
        except:
            log.debug('No "model" given for CrudView')
            return None
Ejemplo n.º 9
0
    def __call__(self, current):
        current.log.info("CRUD CALL")
        self.set_current(current)
        if 'model' not in current.input:
            self.list_models()
        else:
            self.model_class = model_registry.get_model(current.input['model'])

            self.object_id = self.input.get('object_id')
            if self.object_id:
                try:
                    self.object = self.model_class(current).objects.get(self.object_id)
                    if self.object.deleted:
                        raise HTTPNotFound()
                except:
                    raise HTTPNotFound()

            else:
                self.object = self.model_class(current)
            current.log.info('Calling %s_view of %s' % (
                (self.cmd or 'list'), self.model_class.__name__))
            self.form = JsonForm(self.object, all=True)
            self.__class__.__dict__['%s_view' % (self.cmd or 'list')](self)
Ejemplo n.º 10
0
 def get_model_class(self):
     model = self.Meta.model if self.Meta.model else self.current.input['model']
     if isinstance(model, Model):
         return model
     else:
         return model_registry.get_model(model)