示例#1
0
 def update(self, instance: Insight, validated_data: Dict, **kwargs) -> Insight:
     # Remove is_sample if it's set as user has altered the sample configuration
     validated_data["is_sample"] = False
     if validated_data.keys() & Insight.MATERIAL_INSIGHT_FIELDS:
         instance.last_modified_at = now()
         instance.last_modified_by = self.context["request"].user
     return super().update(instance, validated_data)
示例#2
0
 def get_last_refresh(self, dashboard_item: Insight):
     result = self.get_result(dashboard_item)
     if result is not None:
         return dashboard_item.last_refresh
     dashboard_item.last_refresh = None
     dashboard_item.save()
     return None
示例#3
0
def update_dashboard_item_cache(
        dashboard_item: Insight,
        dashboard: Optional[Dashboard]) -> List[Dict[str, Any]]:
    cache_key, cache_type, payload = dashboard_item_update_task_params(
        dashboard_item, dashboard)
    result = update_cache_item(cache_key, cache_type, payload)
    dashboard_item.refresh_from_db()
    return result
示例#4
0
    def get_last_refresh(self, insight: Insight):
        if self.context["request"].GET.get("refresh"):
            return now()

        result = self.get_result(insight)
        if result is not None:
            return insight.last_refresh
        insight.last_refresh = None
        insight.save()
        return None
示例#5
0
    def get_last_refresh(self, insight: Insight):
        if should_refresh(self.context["request"]):
            return now()

        result = self.get_result(insight)
        if result is not None:
            return insight.last_refresh
        if insight.last_refresh is not None:
            # Update last_refresh without updating "updated_at" (insight edit date)
            insight.last_refresh = None
            insight.save()
        return None
示例#6
0
    def has_object_permission(self, request: Request, view,
                              insight: Insight) -> bool:
        if request.method in SAFE_METHODS:
            return True

        return insight.get_effective_privilege_level(
            cast(User, request.user).id) == Dashboard.PrivilegeLevel.CAN_EDIT
示例#7
0
def dashboard_item_update_task_params(
        item: Insight,
        dashboard: Optional[Dashboard] = None) -> Tuple[str, CacheType, Dict]:
    filter = get_filter(data=item.dashboard_filters(dashboard), team=item.team)
    cache_key = generate_cache_key("{}_{}".format(filter.toJSON(),
                                                  item.team_id))

    cache_type = get_cache_type(filter)
    payload = {"filter": filter.toJSON(), "team_id": item.team_id}

    return cache_key, cache_type, payload
示例#8
0
 def to_representation(self, instance: Insight):
     representation = super().to_representation(instance)
     representation["filters"] = instance.dashboard_filters(
         dashboard=self.context.get("dashboard"))
     return representation
示例#9
0
 def get_effective_privilege_level(
         self, insight: Insight) -> Dashboard.PrivilegeLevel:
     return insight.get_effective_privilege_level(
         self.context["request"].user.id)