Ejemplo n.º 1
0
class PingbackNotificationDismissed(models.Model):

    permissions = IsOwn()

    user = models.ForeignKey(FacilityUser)
    notification = models.ForeignKey(PingbackNotification)

    class Meta:
        unique_together = (("user", "notification"), )
Ejemplo n.º 2
0
def log_permissions(user_field):

    return (AnyoneCanWriteAnonymousLogs(field_name=user_field + "_id")
            | IsOwn(field_name=user_field + "_id")
            | RoleBasedPermissions(
                target_field=user_field,
                can_be_created_by=(role_kinds.ADMIN, ),
                can_be_read_by=(role_kinds.ADMIN, role_kinds.COACH),
                can_be_updated_by=(role_kinds.ADMIN, ),
                can_be_deleted_by=(role_kinds.ADMIN, ),
            ))
Ejemplo n.º 3
0
class Bookmark(AbstractFacilityDataModel):

    content_id = UUIDField(blank=True, null=True)
    channel_id = UUIDField(blank=True, null=True)
    contentnode_id = UUIDField()
    user = models.ForeignKey(FacilityUser, blank=False)

    morango_model_name = "bookmark"

    permissions = IsOwn()

    def infer_dataset(self, *args, **kwargs):
        if self.user_id:
            return self.cached_related_dataset_lookup("user")
        elif self.dataset_id:
            # confirm that there exists a facility with that dataset_id
            try:
                return Facility.objects.get(
                    dataset_id=self.dataset_id).dataset_id
            except Facility.DoesNotExist:
                pass
        # if no user or matching facility, infer dataset from the default facility
        facility = Facility.get_default_facility()
        assert facility, "Before you can save bookmarks, you must have a facility"
        return facility.dataset_id

    def calculate_partition(self):
        return "{dataset_id}:user-rw:{user_id}".format(
            dataset_id=self.dataset_id, user_id=self.user.id)

    class Meta:
        # Ensures that we do not save duplicates, otherwise raises a
        # django.db.utils.IntegrityError
        unique_together = (
            "user",
            "contentnode_id",
        )