Ejemplo n.º 1
0
def auto_create_project_for_user(sender, user, *args, **kwargs):
    """
    On post_auth, automatically create a project on login (if the user does not have any)
    :param sender:
    :param user:
    :param args:
    :param kwargs:
    :return:
    """

    # set current requests user (as during auth, that user is not set yet)
    request = get_current_request()
    if request and (not hasattr(request, 'user') or request.user.is_anonymous):
        request.user = user

    if Project.objects.viewable().count() == 0:
        # no projects found, check if user has add_project permission
        if user.has_perm(get_permission_name(Project, 'add')):
            logger.info(
                "Auto-creating project {project_name} for user {user_name}".
                format(project_name=_("My Project"), user_name=user.username))
            Project.objects.create(name=_("My Project"),
                                   start_date=timezone.now(),
                                   description="<div>%s</div>" %
                                   _("Automatically generated project"))
Ejemplo n.º 2
0
def get_request_cache():
    """
    Return the current requests cache
    :return:
    """
    from django_userforeignkey.request import get_current_request
    return getattr(get_current_request(), "cache", None)
Ejemplo n.º 3
0
    def __init__(self, path, **kwargs):
        if path == "/":
            request = get_current_request()
            obj = Directory.objects.filter(drive=request.drive, is_virtual_root=True).first()
            kwargs["obj"] = obj

        super(MyDriveDavResource, self).__init__(path, **kwargs)
Ejemplo n.º 4
0
def auto_create_calendar_access_privileges(sender, user, *args, **kwargs):
    """
    On post_auth, automatically create the calendar access privileges (if the user does not have any) and give
    the user full_access_privilege for his calendar.
    This is needed so new users get to have the Calendar Access Privileges. There is also a migration operation that
    does the same for existing users, but that won't work for users that come after the migration.
    """

    # set current requests user (as during auth, that user is not set yet)
    request = get_current_request()
    if request and (not hasattr(request, 'user') or request.user.is_anonymous):
        request.user = user

    # make sure the user has a calendar access object
    own_calendar_access, created = CalendarAccess.objects.get_or_create(
        created_by=user)
    if created:
        # make sure the user has full access to his own calendar
        ModelPrivilege.objects.get_or_create(
            user=user,
            content_type=CalendarAccess.get_content_type(),
            object_id=own_calendar_access.pk,
            defaults={
                'full_access_privilege': ModelPrivilege.ALLOW,
            })
Ejemplo n.º 5
0
    def get_short_url(self):
        """
        Returns the actual short url, based on the current request and the short-url view
        :return:
        """
        request = get_current_request()

        return reverse('short-url', kwargs={'pk': self.pk}, request=request)
Ejemplo n.º 6
0
    def get_download_background_image_thumbnail(self, obj):
        if not obj.background_image_thumbnail:
            return None

        request = get_current_request()
        path = reverse('kanbanboard-background-image-thumbnail.png',
                       kwargs={'pk': obj.pk})

        return build_expiring_jwt_url(request, path)
Ejemplo n.º 7
0
    def build_download_url_with_token(picture, reverse_url_name):
        request = get_current_request()

        if picture.uploaded_picture_entry is None:
            raise IntegrityError("uploaded_picture_entry is not referenced")

        path = reverse(reverse_url_name,
                       kwargs={'pk': picture.uploaded_picture_entry.pk})

        return build_expiring_jwt_url(request, path)
Ejemplo n.º 8
0
    def get_download_directory(self, obj):
        """ Builds a string for downloading the directory with a jwt token """
        request = get_current_request()

        path = reverse('drive-sub_directories-download',
                       kwargs={
                           'drive_pk': obj.drive.pk,
                           'pk': obj.pk
                       })

        return build_expiring_jwt_url(request, path)
Ejemplo n.º 9
0
def is_authenticated(user, password):
    user = authenticate(username=user, password=password)
    request = get_current_request()

    if user is not None:
        if user.is_active:
            # make sure to set the current user on the current request
            request.user = user
            return True

    request.user = AnonymousUser()
    return False
Ejemplo n.º 10
0
    def create_collection_in_db(self, parent, name):
        """
        Create a collection within the database
        :param parent: the parent object
        :param name: the name of the new collection
        :return:
        """
        request = get_current_request()

        if not parent:
            # if parent is not set, set it to the virtual root
            parent = Directory.objects.filter(drive=request.drive, is_virtual_root=True).first()

        self.collection_model.objects.create(
            drive=request.drive, **{self.collection_attribute: parent, 'name': name}
        )
Ejemplo n.º 11
0
def create_menu_entries_on_auth(sender, user, *args, **kwargs):
    """
    Creates menu_entries for the current user on first auth (if no menu entries exists)
    :param sender:
    :param user:
    :param args:
    :param kwargs:
    :return:
    """
    # set current requests user
    request = get_current_request()
    if request and (not hasattr(request, 'user') or request.user.is_anonymous):
        request.user = user

    # check if menu entries exist for the current user
    if not MenuEntry.objects.viewable().exists():
        if 'default_menu_entries' not in settings.WORKBENCH_SETTINGS:
            logger.debug("No default menu entries found in WORKBENCH_SETTINGS")
        else:
            logger.debug("Bulk creating menu entries")
            menu_entries = []
            menu_entry_parameters = []

            # copy settings
            from copy import deepcopy

            for menu_entry_dict in deepcopy(
                    settings.WORKBENCH_SETTINGS['default_menu_entries']):

                menu_entry_paramter_list = []

                if 'menu_entry_parameters' in menu_entry_dict:
                    menu_entry_paramter_list = menu_entry_dict.pop(
                        'menu_entry_parameters')

                # create menu entry
                menu_entry = MenuEntry(**menu_entry_dict)
                menu_entries.append(menu_entry)

                for menu_entry_parameter_dict in menu_entry_paramter_list:
                    menu_entry_parameters.append(
                        MenuEntryParameter(menu_entry=menu_entry,
                                           **menu_entry_parameter_dict))

            MenuEntry.objects.bulk_create(menu_entries)
            MenuEntryParameter.objects.bulk_create(menu_entry_parameters)
Ejemplo n.º 12
0
    def get_webdav_url(self, obj):
        """
        Returns the webdav URL for the current drive
        :param obj:
        :return:
        """
        request = get_current_request()

        # strip all non-confirming characters from drive title
        pat = re.compile(r'[\W \-]+')

        stripped_title = re.sub(pat, ' ', obj.title)

        # temporarily remove webdav_url for DSS drives
        if not obj.is_dss_drive:
            return reverse('webdav-drive',
                           request=request,
                           kwargs={
                               'drive': obj.pk,
                               'path': '/',
                               'drive_title': stripped_title
                           })
        return None
Ejemplo n.º 13
0
    def get_auth_url(self, plugin_instance):
        user = get_current_user()
        path = reverse('plugininstance-detail',
                       kwargs={'pk': plugin_instance.pk})
        plugin_token_validity = timedelta(
            hours=settings.
            PLUGINS_SETTINGS['plugin_api_token_validity_in_hours'])
        token = build_expiring_jwt_token(user,
                                         path,
                                         validity=plugin_token_validity)

        api_base_url = get_current_request().build_absolute_uri(
            '/api/plugininstances/')

        # add or replace existing parameters from the plugin path
        query = "jwt={token}&pk={pk}&apiBaseUrl={apiBaseUrl}".format(
            token=token,
            pk=plugin_instance.pk,
            apiBaseUrl=urllib.parse.quote(api_base_url, safe=''))
        old_path_parts = urlparse(plugin_instance.plugin.path)
        new_path_parts = old_path_parts._replace(query=query)

        return new_path_parts.geturl()
Ejemplo n.º 14
0
    def get_children(self):
        """Return an iterator of all direct children of this resource."""
        # get all drives
        drives = Drive.objects.viewable().not_deleted()

        request = get_current_request()

        # if this request is project specific, filter projects
        if hasattr(request, 'project'):
            drives = drives.filter(projects=request.project)

        for child in drives:
            # strip all non-confirming characters from drive title
            pat = re.compile(r'[\W \-]+')

            stripped_title = re.sub(pat, ' ', child.title)

            # temporarily exclude DSS drives from the list
            if not child.is_dss_drive:
                yield self.clone(
                    "/" + stripped_title + " (" + str(child.pk) + ")",
                    obj=child  # Sending ready object to reduce db requests
                )
Ejemplo n.º 15
0
def convert_text_with_base64_images_to_file_references(source, source_field):
    """
    Parse content, find base64 references, upload image files to system and convert references to image URLs.

    :param source: Source object
    :param source_field: Field of source object
    :return:
    """
    request = get_current_request()
    content = getattr(source, source_field)
    image_references = convert_base64_image_strings_to_file_references(content)

    for image_reference in image_references:
        image = upload_and_create_extracted_image(
            file_name=image_reference['file_name'],
            binary=image_reference['binary'],
            mime_type=image_reference['mime_type'],
            source=source,
            source_field=source_field)
        if image:
            image_url = get_uri_for_extracted_image(image, True, request)
            content = content.replace(image_reference['base64'], image_url)

    return content
Ejemplo n.º 16
0
    def build_download_url_with_token(plugin, reverse_url_name):
        request = get_current_request()
        path = reverse(reverse_url_name, kwargs={'pk': plugin.pk})

        return build_expiring_jwt_url(request, path)
Ejemplo n.º 17
0
 def get_download(self, file):
     request = get_current_request()
     path = reverse("file-download",
                    kwargs={'pk': file.uploaded_file_entry.pk})
     return request.build_absolute_uri(path)
Ejemplo n.º 18
0
    def object_model_qs(self):
        request = get_current_request()

        return File.objects.viewable().filter(
            directory__drive=request.drive).not_deleted()
Ejemplo n.º 19
0
    def collection_model_qs(self):
        request = get_current_request()

        return Directory.objects.viewable().filter(drive=request.drive)
Ejemplo n.º 20
0
 def build_download_url(picture, reverse_url_name):
     request = get_current_request()
     path = reverse(reverse_url_name,
                    kwargs={'pk': picture.uploaded_picture_entry.pk})
     return request.build_absolute_uri(path)