Closed tws0002 closed 7 years ago
I believe it is about your windows security settings. Try this:
this should solve your problem. If not, message again.
Ohh I see, it is may be related with your Python is being a 32-bit application but your Maya possibly is 64-bit application.
meaning I need to install a 64bit python? but I think most of the 3D software is using 64bit right?
Hey Eoyilmaz,
I fix that error after install 64bit version of python and pyscopg2. but now I have some error on stalker which I not sure what that error is!! here is the error
from anima.ui.scripts import maya
maya.version_creator()
# Error: KeyError: file K:\SES\Library\anima_pipe\stalker\config.py line 96: version_take_name #
Thanks for the advice Desmond
Hmmm... Strange. It seems that the Config
class cannot find the version_take_name
variable. Did you create a studio config.py
file? Check that file and see if it is overriding the version_take_name
(It should be under $STALKER_PATH
).
studio config.py you mean this?
To manage your database settings from one place, you need to create a config.py file in a location that all of workstations and farm computers are able to read from. The bad side of it is that it exposes your database user and password. But because it is going to be seen only by the studio workers (and only by the tech savvy ones).
In this config.py file you need to enter the following configuration variables:
database_engine_settings={ "sqlalchemy.url": "postgresql://user:password@address/db_name", "sqlalchemy.echo": False }
or i need to create this ?
It is a good idea to create a Studio instance in your database, with all the details needed (ex. working hours, the studio name), you can run it in Maya for example or in anywhere that has a Python consoles:
import datetime
from stalker import db, Studio
our_studio = Studio(
name='Studio Name',
daily_working_hours=8,
timing_resolution=datetime.timedelta(hours=1) # needed for task schedules
# if you plan using
# stalker as a project
# management tool
)
db.DBSession.add(our_studio)
db.DBSession.commit()
i not sure how to create a database to share around the studio!! isit just save a database in .py file?
please help!! I don't have experience on database!!
Thanks
Install a PostgreSQL database (preferably 9.5+) to a server in your studio (https://www.postgresql.org/download/windows/ assuming that you're using Windows). Create a database with the name "Stalker" and a user "stalker_admin" in the server (you need to google this). Then enter the server IP address and the username and password in to the config.py
file (as in the example set the database_engine_settings
variable to the dictionary), which should reside in a network share that all of your workstations can see. (I'm repeating the tutorial here!!!)
For your previous error about the version_take_name
variable, I'm not sure what the cause is, but first setup the database server. For testing purposes you can also install the PostgreSQL to your local machine.
Then try to run Stalker again. If you still see the error message, we'll talk.
I have done all this step!! and this is the test in Maya.
from stalker import db
db.setup()
from stalker import db, User
user1 = User(
name='Desmond',
login='desmond',
password='test',
email='user1@users.com'
)
db.session.DBSession.add(user1)
db.session.DBSession.commit()
import datetime
from stalker import db, Studio
our_studio = Studio(
name='Studio Name',
daily_working_hours=8,
timing_resolution=datetime.timedelta(hours=1) # needed for task schedules
# if you plan using
# stalker as a project
# management tool
)
db.session.DBSession.add(our_studio)
db.session.DBSession.commit()
from anima.ui.scripts import maya
maya.version_creator()
# pymel.core : Updating pymel with pre-loaded plugins: redshift4maya, GPUBuiltInDeformer, AbcImport, deformerEvaluator, AbcBullet, fbxmaya, AbcExport, modelingToolkit #
# Error: KeyError: file K:\SES\Library\anima_pipe\stalker\config.py line 96: version_take_name #
the problem is still there!!
is no problem if I call maya.version_mover()
.
version_mover should not work, it is still not implemented
ic.
not sure how to fix # Error: KeyError: file K:\SES\Library\anima_pipe\stalker\config.py line 96: version_take_name #
when i execute maya.version_creator()
in maya!!
can you try creating the version_take_name
attribute in the config.py
file where you entered the server information, just like this:
database_engine_settings={
"sqlalchemy.url": "postgresql://user:password@address/db_name",
"sqlalchemy.echo": False
}
version_take_name = "Main"
here is the error
from stalker import db
db.setup()
# Error: RuntimeError: file K:\SES\Library\anima_pipe\stalker\config.py line 86: There is a syntax error in your configuration file: unexpected indent (<string>, line 5) #
hey eoyilmaz I get it fixed. Now version_creator is launched in Maya. Thanks for the help. but now is another problem how can I create Task and project in aima creator?
that's good...
You can use:
from anima.ui import project_dialog
project_dialog.UI()
To create a project. Than you can go on with:
from anima.ui import task_dialog
task_dialog.UI()
to create subsequent tasks. By the way I've created a couple of commits yesterday which includes a couple of fixes to the TaskTreeView
that is used in the version_creator
UI, which streamlines the Task creation process... You can also use the TaskTreeView
in the version_creator
UI to created/update tasks.
hi eoyilmaz here is another error when i create a project using project_dialog.UI()
.
# Traceback (most recent call last):
# File "K:\SES\Library\anima_pipe\anima\anima\ui\project_dialog.py", line 613, in accept
# status = Status.query.get(status_id)
# File "K:\SES\Library\anima_pipe\sqlalchemy\orm\query.py", line 859, in get
# return self._get_impl(ident, loading.load_on_ident)
# File "K:\SES\Library\anima_pipe\sqlalchemy\orm\query.py", line 870, in _get_impl
# if len(ident) != len(mapper.primary_key):
# TypeError: object of type 'NoneType' has no len()
and here is the error when i execute task_dialog.UI()
in maya.
from anima.ui import task_dialog
task_dialog.UI()
# Error: KeyError: file K:\SES\Library\anima_pipe\stalker\config.py line 96: datetime_units #
for task_dialog.UI()
i fix it by add
datetime_units = "Main"
task_schedule_models = "Main"
in to config.py file.
in the project dialog UI, status comboBox is empty!! I cannot select any status on it!! so I guess that's the problem of
# Traceback (most recent call last):
# File "K:\SES\Library\anima_pipe\anima\anima\ui\project_dialog.py", line 613, in accept
# status = Status.query.get(status_id)
# File "K:\SES\Library\anima_pipe\sqlalchemy\orm\query.py", line 859, in get
# return self._get_impl(ident, loading.load_on_ident)
# File "K:\SES\Library\anima_pipe\sqlalchemy\orm\query.py", line 870, in _get_impl
# if len(ident) != len(mapper.primary_key):
# TypeError: object of type 'NoneType' has no len()
did you run:
from stalker import db
db.setup()
db.init()
to initialize the database. It will create some default data which is required like Statuses for Projects, Tasks etc.
And remove the datetime_units
and task_scheulde_models
that you've wrongly set to "Main"
in config.py
.
sorry i forget the db.init()
!!
now task_dialog.UI()
have this error if i remove datetime_units
and task_scheulde_models
from config.py
from stalker import db
db.setup()
db.init()
from anima.ui import project_dialog
project_dialog.UI()
from anima.ui import task_dialog
task_dialog.UI()
# Error: KeyError: file K:\SES\Library\anima_pipe\stalker\config.py line 96: datetime_units #
Can open the "Stack Trace" in the Maya Script editor and then run the code again.
from stalker import db
db.setup()
db.init()
from anima.ui import task_dialog
task_dialog.UI()
# Error: datetime_units
# Traceback (most recent call last):
# File "<maya console>", line 2, in <module>
# File "K:\SES\Library\anima_pipe\anima\anima\ui\task_dialog.py", line 31, in UI
# return ui_caller(app_in, executor, MainDialog, **kwargs)
# File "K:\SES\Library\anima_pipe\anima\anima\ui\base.py", line 90, in ui_caller
# mainDialog = DialogClass(**kwargs)
# File "K:\SES\Library\anima_pipe\anima\anima\ui\task_dialog.py", line 135, in __init__
# self._set_defaults()
# File "K:\SES\Library\anima_pipe\anima\anima\ui\task_dialog.py", line 342, in _set_defaults
# self.schedule_unit_comboBox.addItems(defaults.datetime_units)
# File "K:\SES\Library\anima_pipe\stalker\config.py", line 96, in __getattr__
# return self.config_values[name]
# KeyError: 'datetime_units' #
here is the error
It is strange. It seems that the stalker.config.Config
class can not find the default values which are hard coded. I can't think anything which can do that. What is the content of your studio config.py
( the one resides in your $STALKER_PATH
). And then I need the output of stalker.__version__
.
here is my config.py
file
database_engine_settings={
"sqlalchemy.url": "postgresql://123@localhost/spvfx",
"sqlalchemy.echo": False
}
version_take_name = "Main"
here is the stalker version
import stalker
stalker.__version__
# Result: 0.2.21 #
can you copy and paste the output of:
from stalker import db
db.setup()
after i run
from stalker import db
db.setup()
the outpost just return me the same
from stalker import db
db.setup()
meaning no error?
ok, let's try this:
import logging
from stalker import log
log.logging_level = logging.DEBUG
from stalker import db
db.setup()
no error!!
here's the return
import stalker
stalker.__version__
import logging
from stalker import log
log.logging_level = logging.DEBUG
from stalker import db
db.setup()
logging.DEBUG
# Result: 10 #
Just restart Maya and do not add anything else to what I've written and run the code:
import logging
from stalker import log
log.logging_level = logging.DEBUG
from stalker import db
db.setup()
here is the result
import logging
from stalker import log
log.logging_level = logging.DEBUG
from stalker import db
db.setup()
It's not helping :(
Let's try this:
from stalker import db
import logging
logger = logging.getLogger("stalker.db")
logger.setLevel(logging.DEBUG)
db.setup()
Also check your Maya script editor suppress settings under the "History" menu, they all should be disabled except the "Suppress Stack Window".
yes, I only turn on "Suppress Stack Window".
Also check "Line Numbers in Errors" and "Show Stack Trace"
same
"Show Stack Trace" should be checked...
ok checed
i think i miss type something!! here is the feedback
from stalker import db
import logging
logger = logging.getLogger("stalker.db")
logger.setLevel(logging.DEBUG)
db.setup()
# stalker.db : no settings given, using the default setting #
# stalker.db : engine: Engine(postgresql://spvfx:***@localhost/spvfx) #
# stalker.db : current_alembic_version: ed0167fff399 #
# stalker.db : creating the tables #
# stalker.db : found a studio, updating defaults #
Can you run:
from stalker import defaults
print(defaults.default_config_values)
ok here is the feedback
from stalker import defaults
print(defaults.default_config_values)
{'working_hours': {'wed': [[540, 1080]], 'sun': [], 'fri': [[540, 1080]], 'tue': [[540, 1080]], 'mon': [[540, 1080]], 'thu': [[540, 1080]], 'sat': []}, 'actions': ['Create', 'Read', 'Update', 'Delete', 'List'], 'task_schedule_models': ['effort', 'length', 'duration'], 'tjp_department_template': '\nresource {{department.tjp_id}} "{{department.tjp_id}}" {\n{% for resource in department.users %}\n {{resource.to_tjp}}\n{% endfor -%}\n}\n', 'task_status_names': ['Waiting For Dependency', 'Ready To Start', 'Work In Progress', 'Pending Review', 'Has Revision', 'Dependency Has Revision', 'On Hold', 'Stopped', 'Completed'], 'ticket_status_codes': ['NEW', 'ACP', 'ASG', 'ROP', 'CLS'], 'tjp_task_dependency_template': '{{depends_to.tjp_abs_id}} { {{- dependency_target}}{%if gap_timing %} gap{{gap_model}} {{gap_timing}}{{gap_unit -}}{%endif -%}}', 'admin_password': 'admin', 'file_size_format': '%.2f MB', 'project_status_names': ['Ready To Start', 'Work In Progress', 'Completed'], 'local_session_data_file_name': 'local_session_data', 'task_schedule_constraints': ['none', 'start', 'end', 'both'], 'weekly_working_hours': 45, 'path_template': '{{project.code}}/{%- for parent_task in parent_tasks -%}{{parent_task.nice_name}}/{%- endfor -%}', 'admin_login': 'admin', 'admin_department_name': 'admins', 'thumbnail_format': 'jpg', 'tjp_user_template': 'resource {{user.tjp_id}} "{{user.tjp_id}}" {\n efficiency {{user.efficiency}}\n{% if user.vacations %}\n{% for vacation in user.vacations %}\n {{vacation.to_tjp}}\n{% endfor %}\n{% endif -%} }', 'project_status_codes': ['RTS', 'WIP', 'CMPL'], 'thumbnail_quality': 70, 'task_dependency_targets': ['onend', 'onstart'], 'datetime_unit_names': ['minute', 'hour', 'day', 'week', 'month', 'year'], 'daily_status_codes': ['OPEN', 'CLS'], 'task_priority': 500, 'local_storage_path': 'C:/Users/Des-PC/Documents/.strc', 'admin_group_name': 'admins', 'allocation_strategy': ['minallocated', 'maxloaded', 'minloaded', 'order', 'random'], 'datetime_units': ['min', 'h', 'd', 'w', 'm', 'y'], 'persistent_allocation': True, 'admin_email': 'admin@admin.com', 'review_status_codes': ['NEW', 'RREV', 'APP'], 'ticket_resolutions': ['fixed', 'invalid', 'wontfix', 'duplicate', 'worksforme', 'cantfix'], 'database_engine_settings': {'sqlalchemy.echo': False, 'sqlalchemy.url': 'sqlite://'}, 'tjp_project_template': '\ntask {{project.tjp_id}} "{{project.tjp_id}}" {\n {% for task in project.root_tasks %}\n {{task.to_tjp}}\n {%- endfor %}\n}\n', 'database_session_settings': {}, 'admin_name': 'admin', 'sequence_format': '%h%p%t %R', 'weekly_working_days': 5, 'thumbnail_size': [320, 180], 'filename_template': '{{task.entity_type}}_{{task.id}}_{{version.take_name}}_v{{"%03d"|format(version.version_number)}}', 'project_structure': "{% for shot in project.shots %}\n Shots/{{shot.code}}\n Shots/{{shot.code}}/Plate\n Shots/{{shot.code}}/Reference\n Shots/{{shot.code}}/Texture\n {% endfor %}\n {% for asset in project.assets%}\n {% set asset_path = project.full_path + '/Assets/' + asset.type.name + '/' + asset.code %}\n {{asset_path}}/Texture\n {{asset_path}}/Reference\n {% endfor %}\n ", 'tjp_main_template2': '# Generated By Stalker v{{stalker.__version__}}\n {{studio.to_tjp}}\n\n # resources\n resource resources "Resources" {\n {%- for vacation in studio.vacations %}\n {{vacation.to_tjp}}\n {%- endfor %}\n {%- for user in studio.users %}\n {{user.to_tjp}}\n {%- endfor %}\n }\n\n# tasks\n{{ tasks_buffer }}\n\n# reports\ntaskreport breakdown "{{csv_file_name}}"{\n formats csv\n timeformat "%Y-%m-%d-%H:%M"\n columns id, start, end {%- if compute_resources %}, resources{% endif %}\n}', 'resolution_presets': {'3k Square': [3072, 3072, 1.0], '1k Square': [1024, 1024, 1.0], 'A3 Portrait': [3508, 4960, 1.0], 'A3 Landscape': [4960, 3508, 1.0], '4K Super 35': [4096, 3112, 1.0], 'PAL': [720, 576, 1.067], '1K Super 35': [1024, 778, 1.0], '2K Super 35': [2048, 1556, 1.0], 'A2 Portrait': [4960, 7016, 1.0], '2k Square': [2048, 2048, 1.0], 'NTSC': [720, 486, 0.91], 'PAL 16:9': [720, 576, 1.46], '70x100cm Poster Landscape': [11810, 8268, 1.0], '4k Square': [4096, 4096, 1.0], 'A2 Landscape': [7016, 4960, 1.0], '50x70cm Poster Landscape': [8268, 5905, 1.0], '50x70cm Poster Portrait': [5905, 8268, 1.0], 'HD 1080': [1920, 1080, 1.0], 'NTSC 16:9': [720, 486, 1.21], 'HD 720': [1280, 720, 1.0], 'A4 Landscape': [3508, 2480, 1.0], 'A4 Portrait': [2480, 3508, 1.0], '70x100cm Poster Portrait': [8268, 11810, 1.0], 'PC Video': [640, 480, 1.0]}, 'version_take_name': 'Main', 'tjp_task_template': '\ntask {{task.tjp_id}} "{{task.tjp_id}}" {\n\n {% if task.priority != 500 -%}\n priority {{task.priority}}\n {%- endif %}\n\n {% if task.task_depends_to %}\n depends {# #}\n {%- for depends in task.task_depends_to %}\n {%- if loop.index != 1 %}, {% endif %}{{depends.to_tjp}}\n {%- endfor %}\n {%- endif -%}\n\n {%- if task.is_container -%}\n {% for child_task in task.children -%}\n {{ child_task.to_tjp }}\n {%- endfor %}\n {%- else %}\n {% if task.resources|length %}\n\n {% if task.schedule_constraint %}\n {% if task.schedule_constraint == 1 or task.schedule_constraint == 3 %}\n start {{ task.start.astimezone(utc).strftime(\'%Y-%m-%d-%H:%M\') }}\n {% endif %}\n {% if task.schedule_constraint == 2 or task.schedule_constraint == 3 -%}\n end {{ task.end.astimezone(utc).strftime(\'%Y-%m-%d-%H:%M\') }}\n {% endif %}\n {% endif %}\n\n {{task.schedule_model}} {{task.schedule_timing}}{{task.schedule_unit}}\n allocate {# #}\n {%- for resource in task.resources -%}\n {%- if loop.index != 1 %}, {% endif %}{{ resource.tjp_id }} {# #}\n {%- if task.alternative_resources %}{\n alternative\n {% for alt_res in task.alternative_resources -%}\n {%-if loop.index != 1 %}, {% endif %}\n {{- alt_res.tjp_id}}\n {%- endfor -%}\n {# #} select {{task.allocation_strategy}}\n {% if task.persistent_allocation -%}\n persistent\n{# #}\n {%- endif %}\n }\n {%- endif %}\n {%- endfor %}\n {%- endif %}\n {% for time_log in task.time_logs %}\n booking {{time_log.resource.tjp_id}} {{time_log.start.astimezone(utc).strftime(\'%Y-%m-%d-%H:%M:%S\')}} - {{time_log.end.astimezone(utc).strftime(\'%Y-%m-%d-%H:%M:%S\')}} { overtime 2 }\n {% endfor %}\n {% endif %}\n\n}\n', 'task_dependency_gap_models': ['length', 'duration'], 'ticket_status_names': ['New', 'Accepted', 'Assigned', 'Reopened', 'Closed'], 'daily_working_hours': 9, 'tjp_working_hours_template': '\n{%- macro wh(wh, day) -%}\n{%- if wh[day]|length %} workinghours {{day}} {% for part in wh[day] -%}\n {%- if loop.index != 1%}, {% endif -%}\n {{"%02d"|format(part[0]//60)}}:{{"%02d"|format(part[0]%60)}} - {{"%02d"|format(part[1]//60)}}:{{"%02d"|format(part[1]%60)}}\n {%- endfor -%}\n{%- else %} workinghours {{day}} off\n{%- endif -%}\n{%- endmacro -%}\n{{wh(workinghours, \'mon\')}}\n{{wh(workinghours, \'tue\')}}\n{{wh(workinghours, \'wed\')}}\n{{wh(workinghours, \'thu\')}}\n{{wh(workinghours, \'fri\')}}\n{{wh(workinghours, \'sat\')}}\n{{wh(workinghours, \'sun\')}}', 'day_order': ['mon', 'tue', 'wed', 'thu', 'fri', 'sat', 'sun'], 'ticket_workflow': {'reassign': {'Assigned': {'action': 'set_owner', 'new_status': 'Assigned'}, 'New': {'action': 'set_owner', 'new_status': 'Assigned'}, 'Accepted': {'action': 'set_owner', 'new_status': 'Assigned'}, 'Reopened': {'action': 'set_owner', 'new_status': 'Assigned'}}, 'reopen': {'Closed': {'action': 'del_resolution', 'new_status': 'Reopened'}}, 'resolve': {'Assigned': {'action': 'set_resolution', 'new_status': 'Closed'}, 'New': {'action': 'set_resolution', 'new_status': 'Closed'}, 'Accepted': {'action': 'set_resolution', 'new_status': 'Closed'}, 'Reopened': {'action': 'set_resolution', 'new_status': 'Closed'}}, 'accept': {'Assigned': {'action': 'set_owner', 'new_status': 'Accepted'}, 'New': {'action': 'set_owner', 'new_status': 'Accepted'}, 'Accepted': {'action': 'set_owner', 'new_status': 'Accepted'}, 'Reopened': {'action': 'set_owner', 'new_status': 'Accepted'}}}, 'tjp_vacation_template': "vacation {{ vacation.start.astimezone(utc).strftime('%Y-%m-%d-%H:%M:%S') }} - {{ vacation.end.astimezone(utc).strftime('%Y-%m-%d-%H:%M:%S') }}", 'datetime_units_to_timedelta_kwargs': {'d': {'name': 'days', 'multiplier': 1}, 'min': {'name': 'minutes', 'multiplier': 1}, 'h': {'name': 'hours', 'multiplier': 1}, 'm': {'name': 'days', 'multiplier': 30}, 'w': {'name': 'weeks', 'multiplier': 1}, 'y': {'name': 'days', 'multiplier': 365}}, 'task_status_codes': ['WFD', 'RTS', 'WIP', 'PREV', 'HREV', 'DREV', 'OH', 'STOP', 'CMPL'], 'default_resolution_preset': 'HD 1080', 'key': 'stalker_default_key', 'tjp_studio_template': '\nproject {{ studio.tjp_id }} "{{ studio.tjp_id }}" {{ studio.start.date() }} - {{ studio.end.date() }} {\n timingresolution {{ \'%i\'|format((studio.timing_resolution.days * 86400 + studio.timing_resolution.seconds)//60|int) }}min\n now {{ studio.now.astimezone(utc).strftime(\'%Y-%m-%d-%H:%M\') }}\n dailyworkinghours {{ studio.daily_working_hours }}\n weekstartsmonday\n{{ studio.working_hours.to_tjp }}\n timeformat "%Y-%m-%d"\n scenario plan "Plan"\n trackingscenario plan\n}\n', 'review_status_names': ['New', 'Requested Revision', 'Approved'], 'yearly_working_days': 261, 'server_side_storage_path': 'C:/Users/Des-PC/Documents/Stalker_Storage', 'tj_command': 'tj3', 'date_time_format': '%Y.%m.%d %H:%M', 'auto_create_admin': True, 'timing_resolution': datetime.timedelta(0, 3600), 'tjp_main_template': '# Generated By Stalker v{{stalker.__version__}}\n {{studio.to_tjp}}\n\n # resources\n resource resources "Resources" {\n {%- for vacation in studio.vacations %}\n {{vacation.to_tjp}}\n {%- endfor %}\n {%- for user in studio.users %}\n {{user.to_tjp}}\n {%- endfor %}\n }\n\n # tasks\n {% for project in projects %}\n {{project.to_tjp}}\n {% endfor %}\n\n # reports\n taskreport breakdown "{{csv_file_name}}"{\n formats csv\n timeformat "%Y-%m-%d-%H:%M"\n columns id, start, end {%- if compute_resources %}, resources{% endif %}\n }\n ', 'daily_status_names': ['Open', 'Closed'], 'repo_env_var_template': 'REPO%(id)s', 'ticket_label': 'Ticket'}
Ok I found the problem :) Stalker v0.2.21 is not compatible with anima!!! that's it. So try to use Stalker 0.2.20
Thank you!!!! yes, I just download v0.2.21. now it works fine.
I'll fix anima to work with Stalker v0.2.21 asap!!!
Ok fixed in 18246ff
anima
is now compatible with Stalker v0.2.21
hope you don't mind to give some explanation of how to use project project_dialog.UI()
and task_dialog.UI()
.
for example, I don't know how this works!!
This UI is for creating/editing Structure
s. Structure
s are used to generate paths and filenames for Task
related Version
instances (and Versions
are for example Maya files.) and it seems that because you've completed the tutorial you already have a Structure
defined for your Project
. You should be able to choose it from the structure combo box.
But your screen shot shows the Stucture Dialog
in create
mode. So, you are now creating a new Structure
. Just give it a name, and select the Test (Task) (47)
and press the >>
button to include it in your structure. You do not need to fill the Custom Template
section. Then click OK and return to the Project Dialog
UI and choose the Structure
you've just created.
I just create another topic for anima pipeline workflow. Lets talk over there
hi eoilmaz,
not sure am I doing this correctly
I having this error after copy psycopg2 to server drive!! when I execute
db.setup()
in Maya script editor this error comes outhere is the error
but it work fine when do it localy.
from CMD
please help
Thanks Desmond