mirror of
https://github.com/reddit-archive/reddit.git
synced 2026-01-27 07:48:16 -05:00
Add clearing of flair templates.
This commit is contained in:
@@ -2035,6 +2035,11 @@ class ApiController(RedditController):
|
||||
text_editable = VBoolean('text_editable'))
|
||||
def POST_flairtemplate(self, form, jquery, flair_template_id, text,
|
||||
css_class, text_editable):
|
||||
if text is None:
|
||||
text = ''
|
||||
if css_class is None:
|
||||
css_class = ''
|
||||
|
||||
# Check validation.
|
||||
if form.has_errors('css_class', errors.BAD_CSS_NAME):
|
||||
form.set_html(".status:first", _('invalid css class'))
|
||||
@@ -2071,6 +2076,11 @@ class ApiController(RedditController):
|
||||
jquery('input[name="css_class"]').data('saved', css_class)
|
||||
form.set_html('.status', _('saved'))
|
||||
|
||||
@validatedForm(VFlairManager(), VModhash())
|
||||
def POST_clearflairtemplates(self, form, jquery):
|
||||
FlairTemplateBySubredditIndex.clear(c.site._id)
|
||||
jquery.refresh()
|
||||
|
||||
def POST_flairselector(self):
|
||||
return FlairSelector().render()
|
||||
|
||||
|
||||
@@ -617,6 +617,17 @@ class ThingBase(object):
|
||||
def __setitem__(self, key, value):
|
||||
return self.__setattr__(key, value)
|
||||
|
||||
def __delitem__(self, key):
|
||||
try:
|
||||
del self._dirties[key]
|
||||
except KeyError:
|
||||
pass
|
||||
try:
|
||||
del self._column_ttls[key]
|
||||
except KeyError:
|
||||
pass
|
||||
self._deletes.add(key)
|
||||
|
||||
def _get(self, key, default = None):
|
||||
try:
|
||||
return self.__getattr__(key)
|
||||
@@ -911,19 +922,6 @@ class View(ThingBase):
|
||||
# can we be smarter here?
|
||||
thing_cache.delete(cls._cache_key_id(row_key))
|
||||
|
||||
def __delitem__(self, key):
|
||||
# only implemented on Views right now, but at present there's
|
||||
# no technical reason for this
|
||||
try:
|
||||
del self._dirties[key]
|
||||
except KeyError:
|
||||
pass
|
||||
try:
|
||||
del self._column_ttls[key]
|
||||
except KeyError:
|
||||
pass
|
||||
self._deletes.add(key)
|
||||
|
||||
def schema_report():
|
||||
manager = get_manager()
|
||||
print manager.describe_keyspace(keyspace)
|
||||
|
||||
@@ -146,29 +146,26 @@ class FlairTemplateBySubredditIndex(tdb_cassandra.Thing):
|
||||
return idx
|
||||
|
||||
@classmethod
|
||||
def _get_or_create_template(cls, sr_id, text, css_class, text_editable):
|
||||
def by_sr(cls, sr_id, create=False):
|
||||
try:
|
||||
idx = cls._byID(to36(sr_id))
|
||||
return cls._byID(to36(sr_id))
|
||||
except tdb_cassandra.NotFound:
|
||||
idx = cls._new(sr_id)
|
||||
|
||||
existing_ft_ids = list(idx)
|
||||
if create:
|
||||
return cls._new(sr_id)
|
||||
raise
|
||||
|
||||
@classmethod
|
||||
def create_template(cls, sr_id, text='', css_class='', text_editable=False):
|
||||
idx = cls.by_sr(sr_id, create=True)
|
||||
ft = FlairTemplate._new(text=text, css_class=css_class,
|
||||
text_editable=text_editable)
|
||||
try:
|
||||
idx = cls._byID(to36(sr_id))
|
||||
except tdb_cassandra.NotFound:
|
||||
idx = cls._new(sr_id)
|
||||
idx.insert(ft._id)
|
||||
return ft
|
||||
|
||||
@classmethod
|
||||
def get_template_ids(cls, sr_id):
|
||||
try:
|
||||
return list(cls._byID(to36(sr_id)))
|
||||
return list(cls.by_sr(sr_id))
|
||||
except tdb_cassandra.NotFound:
|
||||
return []
|
||||
|
||||
@@ -178,6 +175,20 @@ class FlairTemplateBySubredditIndex(tdb_cassandra.Thing):
|
||||
return None
|
||||
return FlairTemplate._byID(ft_id)
|
||||
|
||||
@classmethod
|
||||
def clear(cls, sr_id):
|
||||
try:
|
||||
idx = cls.by_sr(sr_id)
|
||||
except tdb_cassandra.NotFound:
|
||||
# Everything went better than expected.
|
||||
pass
|
||||
|
||||
for k in idx._index_keys():
|
||||
del idx[k]
|
||||
# TODO: delete the dangling reference this leaves behind
|
||||
|
||||
idx._commit()
|
||||
|
||||
def _index_keys(self):
|
||||
keys = set(self._dirties.iterkeys())
|
||||
keys |= frozenset(self._orig.iterkeys())
|
||||
|
||||
@@ -112,6 +112,8 @@ $(function() {
|
||||
makeOnSubmit('flairtemplate'));
|
||||
$(".flairlist").delegate("form.flair-entry", "submit",
|
||||
makeOnSubmit('flair'));
|
||||
$(".flairlist").delegate("form.clearflairtemplates", "submit",
|
||||
makeOnSubmit('clearflairtemplates'));
|
||||
$(".flairlist").delegate(".flaircell input", "focus", onFocus);
|
||||
$(".flairlist").delegate(".flaircell input", "keyup", onEdit);
|
||||
$(".flairlist").delegate(".flaircell input", "change", onEdit);
|
||||
|
||||
@@ -41,4 +41,10 @@
|
||||
${FlairTemplateEditor(empty_template)}
|
||||
</div>
|
||||
</div>
|
||||
<form class="clearflairtemplates"
|
||||
method="post" action="/api/clearflairtemplates">
|
||||
<button class="flairtemplateclear">
|
||||
${_("clear all flair templates")}
|
||||
</button>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user