Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender-addons.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'blenderkit/ratings.py')
-rw-r--r--blenderkit/ratings.py217
1 files changed, 60 insertions, 157 deletions
diff --git a/blenderkit/ratings.py b/blenderkit/ratings.py
index c7055905..118cc3ae 100644
--- a/blenderkit/ratings.py
+++ b/blenderkit/ratings.py
@@ -16,7 +16,7 @@
#
# ##### END GPL LICENSE BLOCK #####
-from blenderkit import paths, utils, rerequests, tasks_queue
+from blenderkit import paths, utils, rerequests, tasks_queue, ratings_utils
import bpy
import requests, threading
@@ -103,42 +103,6 @@ def get_rating(asset_id):
print(r.text)
-def update_ratings_quality(self, context):
- user_preferences = bpy.context.preferences.addons['blenderkit'].preferences
- api_key = user_preferences.api_key
-
- headers = utils.get_headers(api_key)
- asset = self.id_data
- if asset:
- bkit_ratings = asset.bkit_ratings
- url = paths.get_api_url() + 'assets/' + asset['asset_data']['id'] + '/rating/'
- else:
- # this part is for operator rating:
- bkit_ratings = self
- url = paths.get_api_url() + f'assets/{self.asset_id}/rating/'
-
- if bkit_ratings.rating_quality > 0.1:
- ratings = [('quality', bkit_ratings.rating_quality)]
- tasks_queue.add_task((send_rating_to_thread_quality, (url, ratings, headers)), wait=2.5, only_last=True)
-
-
-def update_ratings_work_hours(self, context):
- user_preferences = bpy.context.preferences.addons['blenderkit'].preferences
- api_key = user_preferences.api_key
- headers = utils.get_headers(api_key)
- asset = self.id_data
- if asset:
- bkit_ratings = asset.bkit_ratings
- url = paths.get_api_url() + 'assets/' + asset['asset_data']['id'] + '/rating/'
- else:
- # this part is for operator rating:
- bkit_ratings = self
- url = paths.get_api_url() + f'assets/{self.asset_id}/rating/'
-
- if bkit_ratings.rating_work_hours > 0.45:
- ratings = [('working_hours', round(bkit_ratings.rating_work_hours, 1))]
- tasks_queue.add_task((send_rating_to_thread_work_hours, (url, ratings, headers)), wait=2.5, only_last=True)
-
def upload_rating(asset):
user_preferences = bpy.context.preferences.addons['blenderkit'].preferences
@@ -242,69 +206,40 @@ class UploadRatingOperator(bpy.types.Operator):
return wm.invoke_props_dialog(self)
-def stars_enum_callback(self, context):
- '''regenerates the enum property used to display rating stars, so that there are filled/empty stars correctly.'''
- items = []
- for a in range(0, 10):
- if self.rating_quality < a + 1:
- icon = 'SOLO_OFF'
- else:
- icon = 'SOLO_ON'
- # has to have something before the number in the value, otherwise fails on registration.
- items.append((f'{a + 1}', f'{a + 1}', '', icon, a + 1))
- return items
-
-
-def update_quality_ui(self, context):
- '''Converts the _ui the enum into actual quality number.'''
- user_preferences = bpy.context.preferences.addons['blenderkit'].preferences
- if user_preferences.api_key == '':
- # ui_panels.draw_not_logged_in(self, message='Please login/signup to rate assets.')
- # bpy.ops.wm.call_menu(name='OBJECT_MT_blenderkit_login_menu')
- # return
- bpy.ops.wm.blenderkit_login('INVOKE_DEFAULT',
- message='Please login/signup to rate assets. Clicking OK takes you to web login.')
- # self.rating_quality_ui = '0'
- self.rating_quality = int(self.rating_quality_ui)
-
-def update_ratings_work_hours_ui(self, context):
- user_preferences = bpy.context.preferences.addons['blenderkit'].preferences
- if user_preferences.api_key == '':
- # ui_panels.draw_not_logged_in(self, message='Please login/signup to rate assets.')
- # bpy.ops.wm.call_menu(name='OBJECT_MT_blenderkit_login_menu')
- # return
- bpy.ops.wm.blenderkit_login('INVOKE_DEFAULT',
- message='Please login/signup to rate assets. Clicking OK takes you to web login.')
- # self.rating_work_hours_ui = '0'
- self.rating_work_hours = float(self.rating_work_hours_ui)
+def draw_ratings_menu(self, context, layout):
+ col = layout.column()
+ # layout.template_icon_view(bkit_ratings, property, show_labels=False, scale=6.0, scale_popup=5.0)
+ row = col.row()
+ row.prop(self, 'rating_quality_ui', expand=True, icon_only=True, emboss=False)
+ # row.label(text=str(self.rating_quality))
+ col.separator()
+ row = layout.row()
+ row.label(text=f"How many hours did this {self.asset_type} save you?")
-def update_ratings_work_hours_ui_1_5(self, context):
- user_preferences = bpy.context.preferences.addons['blenderkit'].preferences
- if user_preferences.api_key == '':
- # ui_panels.draw_not_logged_in(self, message='Please login/signup to rate assets.')
- # bpy.ops.wm.call_menu(name='OBJECT_MT_blenderkit_login_menu')
- # return
- bpy.ops.wm.blenderkit_login('INVOKE_DEFAULT',
- message='Please login/signup to rate assets. Clicking OK takes you to web login.')
- # self.rating_work_hours_ui_1_5 = '0'
- # print('updating 1-5')
- # print(float(self.rating_work_hours_ui_1_5))
- self.rating_work_hours = float(self.rating_work_hours_ui_1_5)
-
-def update_ratings_work_hours_ui_1_10(self, context):
- user_preferences = bpy.context.preferences.addons['blenderkit'].preferences
- if user_preferences.api_key == '':
- # ui_panels.draw_not_logged_in(self, message='Please login/signup to rate assets.')
- # bpy.ops.wm.call_menu(name='OBJECT_MT_blenderkit_login_menu')
- # return
- bpy.ops.wm.blenderkit_login('INVOKE_DEFAULT',
- message='Please login/signup to rate assets. Clicking OK takes you to web login.')
- # self.rating_work_hours_ui_1_5 = '0'
- # print('updating 1-5')
- # print(float(self.rating_work_hours_ui_1_5))
- self.rating_work_hours = float(self.rating_work_hours_ui_1_10)
+ if self.asset_type in ('model', 'scene'):
+ row = layout.row()
+ if utils.profile_is_validator():
+ col.prop(self, 'rating_work_hours')
+ row.prop(self, 'rating_work_hours_ui', expand=True, icon_only=False, emboss=True)
+ if float(self.rating_work_hours_ui) > 100:
+ utils.label_multiline(layout,
+ text=f"\nThat's huge! please be sure to give such rating only to godly {self.asset_type}s.\n",
+ width=500)
+ elif float(self.rating_work_hours_ui) > 18:
+ layout.separator()
+
+ utils.label_multiline(layout,
+ text=f"\nThat's a lot! please be sure to give such rating only to amazing {self.asset_type}s.\n",
+ width=500)
+
+ elif self.asset_type == 'hdr':
+ row = layout.row()
+ row.prop(self, 'rating_work_hours_ui_1_10', expand=True, icon_only=False, emboss=True)
+ else:
+ row = layout.row()
+ row.prop(self, 'rating_work_hours_ui_1_5', expand=True, icon_only=False, emboss=True)
class FastRateMenu(Operator):
@@ -341,22 +276,22 @@ class FastRateMenu(Operator):
description="quality of the material",
default=0,
min=-1, max=10,
- # update=update_ratings_quality,
+ # update=ratings_utils.update_ratings_quality,
options={'SKIP_SAVE'})
# the following enum is only to ease interaction - enums support 'drag over' and enable to draw the stars easily.
rating_quality_ui: EnumProperty(name='rating_quality_ui',
- items=stars_enum_callback,
+ items=ratings_utils.stars_enum_callback,
description='Rating stars 0 - 10',
default=0,
- update=update_quality_ui,
+ update=ratings_utils.update_quality_ui,
options={'SKIP_SAVE'})
rating_work_hours: FloatProperty(name="Work Hours",
description="How many hours did this work take?",
default=0.00,
min=0.0, max=300,
- # update=update_ratings_work_hours,
+ # update=ratings_utils.update_ratings_work_hours,
options={'SKIP_SAVE'}
)
@@ -383,8 +318,8 @@ class FastRateMenu(Operator):
('200', '200', high_rating_warning),
('250', '250', high_rating_warning),
],
- default='0', update=update_ratings_work_hours_ui,
- options = {'SKIP_SAVE'}
+ default='0', update=ratings_utils.update_ratings_work_hours_ui,
+ options={'SKIP_SAVE'}
)
rating_work_hours_ui_1_5: EnumProperty(name="Work Hours",
@@ -399,28 +334,28 @@ class FastRateMenu(Operator):
('5', '5', '')
],
default='0',
- update=update_ratings_work_hours_ui_1_5,
- options = {'SKIP_SAVE'}
+ update=ratings_utils.update_ratings_work_hours_ui_1_5,
+ options={'SKIP_SAVE'}
)
rating_work_hours_ui_1_10: EnumProperty(name="Work Hours",
- description="How many hours did this work take?",
- items=[('0', '0', ''),
- ('1', '1', ''),
- ('2', '2', ''),
- ('3', '3', ''),
- ('4', '4', ''),
- ('5', '5', ''),
- ('6', '6', ''),
- ('7', '7', ''),
- ('8', '8', ''),
- ('9', '9', ''),
- ('10', '10', '')
- ],
- default='0',
- update=update_ratings_work_hours_ui_1_10,
- options={'SKIP_SAVE'}
- )
+ description="How many hours did this work take?",
+ items=[('0', '0', ''),
+ ('1', '1', ''),
+ ('2', '2', ''),
+ ('3', '3', ''),
+ ('4', '4', ''),
+ ('5', '5', ''),
+ ('6', '6', ''),
+ ('7', '7', ''),
+ ('8', '8', ''),
+ ('9', '9', ''),
+ ('10', '10', '')
+ ],
+ default='0',
+ update=ratings_utils.update_ratings_work_hours_ui_1_10,
+ options={'SKIP_SAVE'}
+ )
@classmethod
def poll(cls, context):
@@ -430,41 +365,9 @@ class FastRateMenu(Operator):
def draw(self, context):
layout = self.layout
- col = layout.column()
-
- # layout.template_icon_view(bkit_ratings, property, show_labels=False, scale=6.0, scale_popup=5.0)
- col.label(text=self.message)
- row = col.row()
- row.prop(self, 'rating_quality_ui', expand=True, icon_only=True, emboss=False)
- # row.label(text=str(self.rating_quality))
- col.separator()
-
- row = layout.row()
- row.label(text=f"How many hours did this {self.asset_type} save you?")
-
- if self.asset_type in ('model', 'scene'):
- row = layout.row()
- if utils.profile_is_validator():
- col.prop(self, 'rating_work_hours')
- row.prop(self, 'rating_work_hours_ui', expand=True, icon_only=False, emboss=True)
- if float(self.rating_work_hours_ui) > 100:
- utils.label_multiline(layout,
- text=f"\nThat's huge! please be sure to give such rating only to godly {self.asset_type}s.\n",
- width=500)
- elif float(self.rating_work_hours_ui) > 18:
- layout.separator()
-
- utils.label_multiline(layout,
- text=f"\nThat's a lot! please be sure to give such rating only to amazing {self.asset_type}s.\n",
- width=500)
-
- elif self.asset_type == 'hdr':
- row = layout.row()
- row.prop(self, 'rating_work_hours_ui_1_10', expand=True, icon_only=False, emboss=True)
- else:
- row = layout.row()
- row.prop(self, 'rating_work_hours_ui_1_5', expand=True, icon_only=False, emboss=True)
+ layout.label(text=self.message)
+ draw_ratings_menu(self, context, layout)
def execute(self, context):
user_preferences = bpy.context.preferences.addons['blenderkit'].preferences
@@ -505,7 +408,7 @@ class FastRateMenu(Operator):
self.message = f"Rate asset {self.asset_name}"
wm = context.window_manager
- if self.asset_type in ('model','scene'):
+ if self.asset_type in ('model', 'scene'):
# spawn a wider one for validators for the enum buttons
return wm.invoke_props_dialog(self, width=500)
else: