pycham autocomplete not doing its job - autocomplete

as a new student using pycham doing django project, I have hell of time typing almost every keywords manually, I have auto complete option checked in setting but still tons of keywords wont show up!
title = models.CharField(max_length=300)
image = models.ImageField(upload_to="image/")
static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
.
.
.
none of them showed up on my first typing, some of them showing after first used, how to get pycham to show every possible keywords as I type anytime, even its a first use? tyvm

Related

Error handling in Sublime Text Plugin API

I'm creating my first sublime plugin to be used internally and was wondering if there's a way to stop the plugin from executing and display an error message on screen like an alert?
I took a look at view#show_popup() but this didn't render for me. Below is how I attempted to show it:
if "WebContent" in subdirectories:
directory = ROOT_DIR + "/WebContent"
elif "Content" in subdirectories:
directory = ROOT_DIR + "/Content"
else:
self.view.show_popup('Directory not found', location=-1)
Working Principle:
The plugin takes some data from one view and then pastes them in another view. The plugin has two TextCommands. One command takes the data from the first view, opens a new view and then executes the 2nd command on the new view. The above snippet is in the 2nd command.
I was unable to find any resources to help with show_popup() or any other error handling.
Does any one have possible ideas?
view.show_popup() is for showing things like hover popups next to the cursor; it's used for things like the built in functionality for going to references/definitions for functions:
While you could in theory use this for error messages, it may not be the sort of user experience that anyone would expect.
Your code above is technically valid, but since the content is expected to be minihtml it may be hard to see because as just a single string all you're going to see is just the text (i.e. you have no font style, padding, etc):
Perhaps more importantly, when location is -1, the popup appears at the point in the buffer closest to the first cursor position, so depending on your circumstance it may be appearing in a place you don't expect, and then vanishing away before you can scroll to see it, etc.
What you want here is sublime.error_message(); given a string, it will display that string in a dialog for the user to interact with, and it also logs the error into the Sublime console as well so that there's an additional trace.

New enrolment method is not working properly in Totara (Moodle)

I am trying to add a new custom enrolment method to a base Totara (Moodle) installation. I decided to copy the existing "Self enrolment" enrolment method, because it is relatively simple and therefore seemed to be a good starting point for my custom method.
I changed the name and all of the references to the "Self enrolment" method to my new method name. This seemed to have worked because when I logged into the Totara dashboard I got the popup for a new plugin installation.
I went through the installation process and didn't run into any errors. Next I activated my plugin in the "Enrolment plugin" menu. Everything seemed fine until I tried to add my new method to a course.
Firstly the new method should be displayed bij default on the "Enrolment methods" page of the course but it isn't, however I can select it with the dropdown located below. When I do I am redirected to the config page of the enrolment method, so far so good. But when I click the button on the bottom of the page to add the method to the course it still isn't visible on the "Enrolment methods" page of the course.
When I log in as a regular user I can't access the course through my new method, so the method and the course haven't been properly linked. However when I look in the database I do see that my new method has been added to the course in the enrol table.
The problem doesn't seem to be caching related because I have purged it a couple of times already but the method still won't show up.
I am working with Totara version 16.2 (Moodle 3.4.9)
I found the problem, it seems that the "Self enrolment" plugin uses the get_name() function of the /server/lib/enrollib.php by default. However this function is written in a way to avoid "fancy" plugin names according to a comment in the function. The function explodes your plugin name on "_" and only uses the first part of your name, which means the records in enrol won't be recognised as records of your plugin because the names don't match.
I solved this by adding my own get_name() to my plugin, which returns the whole name.
The function:
/**
* Returns name of this enrol plugin
* #return string
*/
public function get_name() {
// second word in class is always enrol name, sorry, no fancy plugin names with _
$words = explode('_', get_class($this));
return $words[1];
}

TTeeGrid is not displaying the data at runtime using data from REST

I created a simple RME for TTeeGrid, a descendant perhaps of TGrid in Firemonkey. As shown below, the data are displayed at design time but not at runtime except the headers.
I've been breaking my head over this for weeks already but not luck.
Let me know if you need more details but what you see in the image are all you get.
I just need help to have the data displayed at runtime as shown in the design time.
UPDATE 1
This issue is not the case with TPrototypeBindSource. The data shown in the design time are displayed at runtime. Something is wrong somewhere.
I've never used the TeeGrid before, but the following worked fine
first time for me in Delphi Tokyo:
Download the TeeGrid trial from Steema.Com & install.
Create new multi-device app and place a TeeGrid and a FDMemTable on the form.
Load FDMemTable1 with the file Parts.Fds from the Delphi samples Data directory. Note, I did not then create any FieldDefs as I mentioned in my comment earlier as what I'm describing works without them.
Set the DataSource property of TeeGrid1 to FDMemTable1. TeeGrid1 immediately
creates columns for each of the Parts fields and populates them with data - see
screenshot below. I don't ordinarily include screenshots but in this case thought
I would as what I got was so clearly at odds with what you've reported.
Your TeeGrid etc are obviously more complicated than mine. so the best I can
suggest is that you backtrack to step 2 and see if you can replicate my result
with your data (either at design time or run time). It might be worth loading
your FDMemTable with some data at design time, as my impression is that live bindings
is less grief-prone when the datasource has some data.
Incidentally, fwiw the results of my own attempts to set up live bindings even with a regular TGrid have been rather patchy, until I discovered that instead of messing with the LB components myself, simply starting with a fresh TGrid, right-clicking on it and leaving the Live Bindings Wizard
to do its stuff consistently works fine.

Emmet abbreviation for Pug "input" is inserting an unneeded #

I'm working on a Pug template in VS Code and whenever I try to use the emmet abbreviation input:text (or any input for that matter), it resolves to input#(type="text", name="").
It's not the end of the world, but it's driving me crazy, and I can't figure out why it's doing so or how to change it.
I guess my question is: is there any way to change this behavior or any place that I can draw attention to this?
The problem is the treatment of the attributes id and class for indent-based syntaxes (Slim, Pug, etc.).
For some reason it removes the attribute from its current position and pushes to the front the strings # for id and . for class.
This is controlled with 2 regex statements near line 3297 in
C:\Program Files\Microsoft.VS.Code\resources\app\extensions\emmet\node_modules\vscode-emmet-helper\out\expand\expand-full.js
Change
const reId = /^id$/i;
const reClass = /^class$/i;
to
const reId = /^Xid$/i;
const reClass = /^Xclass$/i;
You must also remove the cached version of this file in the directory
C:\Users\__username__\AppData\Roaming\Code\CachedData\__some_hex_value__
Restart VSC and it should work.
For linux systems you have to find the location of these files.
I finally understand why this is happening, and that my confusion was basically a misunderstanding of proper form creation.
All text inputs should have an id associated with them, so Emmet is expecting an ID in the shorthand. So this:
input:text#user
resolves to
input#user(type="text", name="")
Which works great! Too bad it took me months of confusion to I realized how daft I am!

How do I delay selecting from a dropdown until it's populated?

I'm using Watir WebDriver. I'm new to ruby.
The following dropdown list is always present. It fails unless I precede it by sleep(1). The developer said that the dropdown is not populated until the previous controls are set.
Which of the Wait commands do I need for this? I think in Selenium I waited until the hidden contents of the list contained the value that I wanted, then I selected that value.
def enterCompany(company)
#browser.select_list(:id, "ddlCompanyName").select(company)
end
A question was just asked of me offline on this one, so I wanted to provide an updated answer for the latest Watir versions that avoids the deprecated #when_present method:
browser.select_list(id: 'ddlCompanyName').wait_until { |el| el.include? company }.select
You can use the when_present to wait until the option is present before selecting it. Basically, Watir will wait up to 30 seconds for the option to appear. If it appears sooner than 30 seconds it will proceed with the action (ie select). Otherwise, a timeout exception is thrown.
#browser.select_list(:id, "ddlCompanyName").option(:text => company).when_present.select
Note that the above assumes that company is the text of the option.
Another option is to wait for anything to appear in the dropdown.
#browser.wait_until{ #browser.select_list(:id, "ddlCompanyName").options.length > 0 }